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

 2025-10-20 23:06:38    1275  

👀专栏介绍【JavaWeb】 目前主要更新JavaWeb,一起学习一起进步。

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

文章目录1.5、JSP 基本语法【重点】

1.5.1、JSP 脚本元素

1.5.2、JSP 注释

1.6、JSP 指令

1.6.1、page 指令

1.6.2、include 指令

1.6.3、taglib 指令

1.7、JSP 九大内置对象

1.7.1、简述

1.7.2、pageContext 对象

1.7.3、out 对象(了解)

1.8、JSP 四大作用域总结

1.5、JSP 基本语法【重点】 1.5.1、JSP 脚本元素 JSP 脚本元素是指嵌套在 <% 和 %> 之中的一条或多条 Java 程序代码。通过 JSP 脚本元素可以将

Java 代

码嵌入 HTML 页面中,所有可执行的 Java 代码,都可以通过 JSP 脚本来执行。

JSP Scriptlets 是一段代码段。当需要使用 Java 实现一些复杂操作或控制时,可以使用它。 JSP

Scriptlets

的语法格式如下所示:

在 JSP Scriptlets 中声明的变量是 JSP 页面的局部变量,调用 JSP Scriptlets 时,会为局部变量分

配内存空间,调用结束后,释放局部变量占有的内存空间。

1.5.2、JSP 注释 JSP 有其独有的注释

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

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

1.6、JSP 指令 为了设置 JSP 页面中的一些信息, Sun 公司提供了 JSP 指令。 JSP 2.0 中共定义了 page 、

include 和 taglib

三种指令,每种指令都定义了各自的属性。接下来,本节将针对 page 和 include 指令进行详细的

讲解。

1.6.1、page 指令 在 JSP 页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式, JSP 页面采用的

语言等,这时,可以通过 page 指令来实现。page 指令的具体语法格式如下所示:

在上面的语法格式中, page 用于声明指令名称,属性用来指定 JSP 页面的某些特性。 page 指令

提供了一系列与 JSP 页面相关的属性,如表 1-1 所示。

表 1-1 中列举了 page 指令的常见属性,其中,除了 import 属性外,其他的属性都只能出现一次,

否则会编译失败。需要注意的是,page 指令的属性名称都是区分大小写的。

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

上面代码中使用了 page 指令的 language 、 contentType 、 pageEncoding 和 import 属性。

需要注意的是, page 指令对整个页面都有效,而与其书写的位置无关,但是习惯上把 page 指令

写在JSP 页面的最前面。

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

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

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

地址: /xx.jsp

即: WebContent 下的 xx.jsp

1.6.3、taglib 指令 该指令 用于引入标签库

1.7、JSP 九大内置对象1.7.1、简述 在 JSP 页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦。为了简

化Web 应用程序的开发, JSP2.0 规范中提供了 9 个隐式(内置)对象,它们是 JSP 默认创建

的,可以直接在

JSP 页面中使用。这 9 个隐式对象的名称、类型和描述如表 1-2 所示。

在表 1-2 中,列举了 JSP 的 9 个隐式对象及它们各自对应的类型。其中,由于 request 、

response 、 config 、

session 和 application 所属的类及其用法在前面的章节都已经讲解过,而 page 对象在 JSP 页面

中很少被用

到。因此,在下面几个小节中,将针对 out 和 pageContext 对象进行详细的讲解。

1.7.2、pageContext 对象 在 JSP 页面中,使用 pageContext 对象可以获取 JSP 的其他 8 个隐式对象。 pageContext 对象是

javax.servlet.jsp.PageContext 类的实例对象,它代表当前 JSP 页面的运行环境,并提供了一系列

用于获取其

他隐式对象的方法。 pageContext 对象获取隐式对象的方法如表 1-3 所示。

表 1-3 中列举了 pageContext 获取其他隐式对象的方法,这样,当传递一个 pageContext 对象

后,就可以通

过这些方法轻松地获取到其他 8 个隐式对象了。

pageContext 对象不仅提供了获取隐式对象的方法,还提供了存储数据的功能。 pageContext 对象

存储数据

是通过操作属性来实现的,表 1-4 列举了 pageContext 操作属性的一系列方法,具体如下:

表 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

所示。

在上述代码中,首先使用 pageContext 获取了 request 对象,并设置 page 范围内属性;然后使用

获取的

request 对象设置了 request 范围内属性,接下来使用 pageContext 对象获得 page 和 request 范

围内的相应属

性,最后使用 JSP 表达式输出数据。

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

访问

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

从图 1-13 的显示结果可以看出,通过 pageContext 对象可以获取到 request 对象,并且还可以获

取不同范围内的属性。

1.7.3、out 对象(了解) 在 JSP 页面中,经常需要向客户端发送文本内容,这时,可以使用 out 对象来实现。 out 对象是

javax.servlet.jsp.JspWriter 类的实例对象,它的作用与 ServletResponse.getWriter() 方法返回的

PrintWriter 对

象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是, out 对象的类型为

JspWriter ,它相

当于一种带缓存功能的 PrintWriter 。接下来,通过一张图来描述 JSP 页面的 out 对象与 Servlet 引

擎提供的

缓冲区之间的工作关系,具体如图 1-11 所示。

从图 1-11 可以看出,在 JSP 页面中,通过 out 隐式对象写入数据相当于将数据插入到 JspWriter

对象的缓冲区中,只有调用了 ServletResponse.getWriter() 方法,缓冲区中的数据才能真正写入到

Servlet 引擎所提供

的缓冲区中。为了验证上述说法是否正确,接下来,通过一个具体的案例来演示 out 对象的使用。

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

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

结果如图

1-12 所示。

从图 1-12 中可以看出,尽管 out.println 语句位于 response.getWriter().println 语句之前,但它的

输出内容却

在后面。由此可以说明, out 对象通过 print 语句写入数据后,直到整个 JSP 页面结束, out 对象

中输入缓

冲区的数据(即: first line )才真正写入到 Serlvet 引擎提供的缓冲区中,而

response.getWriter().println 语句

则是直接把内容(即: second line )写入 Servlet 引擎提供的缓冲区中, Servlet 引擎按照缓冲区中

的数据存

放顺序输出内容。

1.8、JSP 四大作用域总结page:表示当前页,通常没用。jsp 标签底层使用。

request :表示一次请求。通常一次请求就一个页面,但如果使用请求转发,可以涉及多个页面。

session :表示一次会话。可以在多次请求之间共享数据。

application :表示 一个 web 应用 ( 项目 ) 。可以整个 web 项目共享,多次会话共享数据。


千百lu蓦然回首被屏蔽了老铁w
东亚观察|日本关键矿产战略及其对中国的影响【走出去智库】
友情链接