【JavaWeb】JSP基本语法、指令、九大内置对象、四大作用域

简介: 本期主要介绍JSP基本语法、指令、九大内置对象、四大作用域

1.5JSP 基本语法【重点】


1.5.1JSP 脚本元素


JSP 脚本元素是指嵌套在 <% 和 %> 之中的一条或多条 Java 程序代码。通过 JSP 脚本元素可以将Java 代码嵌入 HTML 页面中,所有可执行的 Java 代码,都可以通过 JSP 脚本来执行。

JSP Scriptlets 是一段代码段。当需要使用 Java 实现一些复杂操作或控制时,可以使用它。 JSPScriptlets的语法格式如下所示:

image.png

1.5.2JSP 注释


JSP 有其独有的注释

JSP 注释、Java 注释、HTML 注释对比:

image.png

建议 JSP 文件上尽量使用 JSP 注释

1.6JSP 指令


为了设置 JSP 页面中的一些信息, Sun 公司提供了 JSP 指令。 JSP 2.0 中共定义了 page 、include 和 taglib三种指令,每种指令都定义了各自的属性。接下来,本节将针对 page 和 include 指令进行详细的讲解。

1.6.1page 指令


JSP 页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式,JSP 页面采用的语言等,这时,可以通过 page 指令来实现。page 指令的具体语法格式如下所示:

image.png

在上面的语法格式中,page 用于声明指令名称,属性用来指定 JSP 页面的某些特性。page 指令提供了一系列与 JSP 页面相关的属性,如表 1-1 所示。

image.png

表 1-1 中列举了 page 指令的常见属性,其中,除了 import 属性外,其他的属性都只能出现一次,否则会编译失败。需要注意的是,page 指令的属性名称都是区分大小写的。

下面列举两个使用 page 指令的示例:

image.png

上面代码中使用了 page 指令的 language 、 contentType 、 pageEncoding 和 import 属性。需要注意的是, page 指令对整个页面都有效,而与其书写的位置无关,但是习惯上把 page 指令写在JSP 页面的最前面。

建议:page 指令写在 JSP 最前面

1.6.2include 指令


实际开发中,经常涉及到一个 JSP 引入另一个 JSP 的代码。

这时我们就需要使用 include 指令image.png

地址:/xx.jsp

即:WebContent 下的 xx.jsp

image.png

1.6.3taglib 指令


该指令 用于引入标签库

image.png

1.7JSP 九大内置对象


1.7.1、简述


在 JSP 页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简化Web 应用程序的开发, JSP2.0 规范中提供了 9 个隐式(内置)对象,它们是 JSP 默认创建的,可以直接在JSP 页面中使用。这 9 个隐式对象的名称、类型和描述如表 1-2 所示。

image.png

在表 1-2 中,列举了 JSP 的 9 个隐式对象及它们各自对应的类型。其中,由于 request 、response 、 config 、session 和 application 所属的类及其用法在前面的章节都已经讲解过,而 page 对象在 JSP 页面中很少被用到。因此,在下面几个小节中,将针对 out 和 pageContext 对象进行详细的讲解。

1.7.2pageContext 对象


在 JSP 页面中,使用 pageContext 对象可以获取 JSP 的其他 8 个隐式对象。 pageContext 对象是javax.servlet.jsp.PageContext 类的实例对象,它代表当前 JSP 页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。 pageContext 对象获取隐式对象的方法如表 1-3 所示。

image.png

表 1-3 中列举了 pageContext 获取其他隐式对象的方法,这样,当传递一个 pageContext 对象后,就可以通过这些方法轻松地获取到其他 8 个隐式对象了。

pageContext 对象不仅提供了获取隐式对象的方法,还提供了存储数据的功能。 pageContext 对象存储数据是通过操作属性来实现的,表 1-4 列举了 pageContext 操作属性的一系列方法,具体如下:

image.png

表 1-4 列举了 pageContext 对象操作属性的相关方法,其中,参数 name 指定的是属性名称,参数 scope 指

定的是属性的作用范围。 pageContext 对象的作用范围有 4 个值,具体如下:

PageContext.PAGE_SCOPE :表示页面范围

PageContext.REQUEST_SCOPE :表示请求范围

PageContext.SESSION_SCOPE :表示会话范围

PageContext.APPLICATION_SCOPE :表示 Web 应用程序范围

需要注意的是,当使用 findAttribute() 方法查找名称为 name 的属性时,会按照 page 、 request 、session 和application 的顺序依次进行查找,如果找到,则返回属性的名称,否则返回 null 。接下来,通过一个案例来演示 pageContext 对象的使用。

在 day12 项目的 WebContent 目录下创建一个名称为 pageContext.jsp 的页面,编辑后如文件 1-7

image.png

在上述代码中,首先使用 pageContext 获取了 request 对象,并设置 page 范围内属性;然后使用获取的request 对象设置了 request 范围内属性,接下来使用 pageContext 对象获得 page 和 request 范围内的相应属性,最后使用 JSP 表达式输出数据。

启动 Tomcat 服务器,在浏览器的地址栏中输入地址“ http://localhost:8080/day17/pageContext.jsp ”

访问pageContext.jsp 页面,浏览器显示的结果如图 1-13 所示。

image.png

从图 1-13 的显示结果可以看出,通过 pageContext 对象可以获取到 request 对象,并且还可以获取不同范围内的属性。

1.7.3out 对象(了解)


在 JSP 页面中,经常需要向客户端发送文本内容,这时,可以使用 out 对象来实现。 out 对象是javax.servlet.jsp.JspWriter 类的实例对象,它的作用与 ServletResponse.getWriter() 方法返回的PrintWriter 对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是, out 对象的类型为JspWriter ,它相当于一种带缓存功能的 PrintWriter 。接下来,通过一张图来描述 JSP 页面的 out 对象与 Servlet 引擎提供的缓冲区之间的工作关系,具体如图 1-11 所示。  

image.png

从图 1-11 可以看出,在 JSP 页面中,通过 out 隐式对象写入数据相当于将数据插入到 JspWriter对象的缓冲区中,只有调用了 ServletResponse.getWriter() 方法,缓冲区中的数据才能真正写入到Servlet 引擎所提供的缓冲区中。为了验证上述说法是否正确,接下来,通过一个具体的案例来演示 out 对象的使用。

在 day12 项目的 WebContent 目录下创建一个名称为 out 的 JSP 页面,如文件 1-5 所示。

image.png

启动 Tomcat 服务器,在浏览器地址栏中访问“http://localhost:8080/day12/out.jsp”,浏览器的显示结果如图

1-12 所示。

image.png

从图 1-12 中可以看出,尽管 out.println 语句位于 response.getWriter().println 语句之前,但它的输出内容却在后面。由此可以说明, out 对象通过 print 语句写入数据后,直到整个 JSP 页面结束, out 对象中输入缓冲区的数据(即: first line )才真正写入到 Serlvet 引擎提供的缓冲区中,而response.getWriter().println 语句则是直接把内容(即: second line )写入 Servlet 引擎提供的缓冲区中, Servlet 引擎按照缓冲区中的数据存放顺序输出内容。

image.png

1.8、JSP 四大作用域总结


page:表示当前页,通常没用。jsp 标签底层使用。

request :表示一次请求。通常一次请求就一个页面,但如果使用请求转发,可以涉及多个页面。session :表示一次会话。可以在多次请求之间共享数据。application :表示 一个 web 应用 ( 项目 ) 。可以整个 web 项目共享,多次会话共享数据。

相关文章
|
5月前
|
Java
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
该文章展示了如何创建一个JSP页面,使用Scriptlet编写包含除零操作的计算代码,并配置page指令将错误信息重定向至另一个JSP页面进行显示。
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
|
5月前
|
Java
JSP指令
该文章解释了JSP中的指令,包括page指令、include指令和taglib指令的语法和用途,以及如何使用它们来设置JSP页面的属性和引入标签库。
JSP指令
|
5月前
|
缓存 Java 应用服务中间件
JSP的内置对象 request和response
这篇文章详细介绍了JSP的内置对象,包括request、response、out、session和application对象的使用方法和特性,以及如何通过这些对象处理HTTP请求和响应、管理会话和输出数据。
|
8月前
|
XML Java API
JSP 教程 之 JSP 指令 4
**JSP指令设置页面属性,如编码和语言。语法:&lt;%@ directive attribute=&quot;value&quot; %&gt;。Taglib指令用于引入自定义标签库,格式:&lt;%@ taglib uri=&quot;uri&quot; prefix=&quot;prefix&quot; %&gt;,XML语法: `&lt;jsp:directive.taglib uri=&quot;uri&quot; prefix=&quot;prefix&quot; /&gt;`,uri定义库位置,prefix定义标签前缀。**
31 0
|
8月前
|
XML Java 编译器
JSP 教程 之 JSP 指令 3
JSP指令用于设置页面属性,如编码和脚本语言。`&lt;%@ directive attribute=&quot;value&quot; %&gt;`是其语法。`include`指令用于包含其他文件,如JSP、HTML,语法为`&lt;%@ include file=&quot;相对URL&quot; %&gt;`,XML形式为`&lt;jsp:directive.include file=&quot;相对URL&quot; /&gt;`。包含文件被视为JSP的一部分共同编译执行。默认在当前路径找文件。
55 0
|
8月前
|
缓存 安全 Java
JSP 教程 之 JSP 指令 2
JSP教程介绍了JSP指令用于设置页面属性,如编码和脚本语言。指令包括:`&lt;%@ page %&gt;`定义页面属性,`&lt;%@ include %&gt;`包含文件,`&lt;%@ taglib %&gt;`引入标签库。`&lt;%@ page&gt;`指令有多个属性,如`contentType`设定MIME类型和字符编码,`errorPage`指定异常处理页面,`language`默认为Java等。这些指令影响JSP行为和交互。
77 0
|
3月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
92 0
|
5月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
5月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
5月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
34 0