前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JavaWeb】JSP基本语法、指令、九大内置对象、四大作用域

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

作者头像
陶然同学
发布2023-02-27 13:41:25
7850
发布2023-02-27 13:41:25
举报
文章被收录于专栏:陶然同学博客

👀专栏介绍

【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 项目共享,多次会话共享数据。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 👀专栏介绍
  • 👀本期介绍
  • 文章目录
  • 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 四大作用域总结
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档