JSP 隐式对象有哪些?怎么在页面中使用?

文章导读
Previous Quiz Next 在本章中,我们将讨论 JSP 中的隐式对象。这些对象是 JSP 容器为开发人员在每个页面提供的 Java 对象,开发人员可以直接调用它们,而无需显式声明。JSP 隐式对象也被称为预定义变量。
📋 目录
  1. request 对象
  2. response 对象
  3. out 对象
  4. session 对象
  5. application 对象
  6. config 对象
  7. pageContext 对象
  8. page 对象
  9. exception 对象
A A

JSP - 隐式对象



Previous
Quiz
Next

在本章中,我们将讨论 JSP 中的隐式对象。这些对象是 JSP 容器为开发人员在每个页面提供的 Java 对象,开发人员可以直接调用它们,而无需显式声明。JSP 隐式对象也被称为预定义变量

下表列出了 JSP 支持的九个隐式对象 −

序号 对象 & 描述
1

request

这是与请求关联的 HttpServletRequest 对象。

2

response

这是与发送给客户端的响应关联的 HttpServletResponse 对象。

3

out

这是用于向客户端发送输出的 PrintWriter 对象。

4

session

这是与请求关联的 HttpSession 对象。

5

application

这是与应用程序上下文关联的 ServletContext 对象。

6

config

这是与页面关联的 ServletConfig 对象。

7

pageContext

它封装了服务器特定功能的使用,例如更高性能的 JspWriters

8

page

这是 this 的同义词,用于调用翻译后的 servlet class 中定义的方法。

9

Exception

Exception 对象允许指定的 JSP 访问异常数据。

request 对象

request 对象是 javax.servlet.http.HttpServletRequest 对象的一个实例。每次客户端请求页面时,JSP 引擎都会创建一个新对象来表示该请求。

request 对象提供了获取 HTTP 头部信息的方法,包括表单数据、cookies、HTTP 方法等。

我们将在后续章节 − JSP - Client Request 中详细介绍与 request 对象关联的完整方法集。

response 对象

response 对象是 javax.servlet.http.HttpServletResponse 对象的一个实例。正如服务器创建 request 对象一样,它也会创建一个对象来表示对客户端的响应。

response 对象还定义了处理创建新 HTTP 头部的接口。通过此对象,JSP 程序员可以添加新的 cookies 或日期戳、HTTP 状态码等。

我们将在后续章节 − JSP - Server Response 中详细介绍与 response 对象关联的完整方法集。

out 对象

out 隐式对象是 javax.servlet.jsp.JspWriter 对象的一个实例,用于在响应中发送内容。

初始 JspWriter 对象的实例化方式取决于页面是否启用缓冲。可以通过 page 指令的 buffered = 'false' 属性轻松关闭缓冲。

JspWriter 对象包含与 java.io.PrintWriter class 大多数相同的方法。不过,JspWriter 具有一些额外的方法来处理缓冲。与 PrintWriter 对象不同,JspWriter 会抛出 IOExceptions

下表列出了我们将用于写入 boolean char, int, double, object, String 等的重要方法。

序号 方法 & 描述
1

out.print(dataType dt)

打印数据类型值

2

out.println(dataType dt)

打印数据类型值,然后以换行符终止行。

3

out.flush()

刷新流。

session 对象

session 对象是 javax.servlet.http.HttpSession 的一个实例,其行为与 Java Servlet 中的 session 对象完全相同。

session 对象用于在客户端请求之间跟踪客户端会话。我们将在后续章节 − JSP - Session Tracking 中详细介绍 session 对象的完整用法。

application 对象

application 对象是对生成 Servlet 的 ServletContext 对象的直接封装,实际上是 javax.servlet.ServletContext 对象的一个实例。

该对象表示 JSP 页面在其整个生命周期中的表示。该对象在 JSP 页面初始化时创建,并在 JSP 页面通过 jspDestroy() 方法移除时被销毁。

通过向 application 添加属性,您可以确保构成 Web 应用程序的所有 JSP 文件都能访问它。

我们将在 JSP - 访问计数器 章节中检查 Application 对象的用法。

config 对象

config 对象是 javax.servlet.ServletConfig 的一个实例,是生成 servlet 的 ServletConfig 对象的直接封装。

该对象允许 JSP 程序员访问 Servlet 或 JSP 引擎的初始化参数,例如路径或文件位置等。

以下 config 方法是您可能唯一会使用的方法,其用法非常简单 −

config.getServletName();

这将返回 servlet 名称,即 WEB-INF\web.xml 文件中定义的 <servlet-name> 元素中包含的字符串。

pageContext 对象

pageContext 对象是 javax.servlet.jsp.PageContext 对象的一个实例。pageContext 对象用于表示整个 JSP 页面。

该对象旨在作为一种访问页面信息的手段,同时避免大多数实现细节。

该对象为每个请求存储对 request 和 response 对象的引用。application、config、session 和 out 对象是通过访问该对象的属性派生的。

pageContext 对象还包含有关发给 JSP 页面的指令的信息,包括缓冲信息、errorPageURL 和 page scope。

PageContext 类定义了几个字段,包括 PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPEAPPLICATION_SCOPE,这些字段标识了四个作用域。它还支持超过 40 个方法,其中大约一半是从 javax.servlet.jsp.JspContext class 继承的。

其中一个重要方法是 removeAttribute。该方法接受一个或两个参数。例如,pageContext.removeAttribute ("attrName") 会从所有作用域中移除属性,而以下代码仅从 page scope 中移除它 −

pageContext.removeAttribute("attrName", PAGE_SCOPE);

pageContext 的用法可以在 JSP - 文件上传 章节中查看。

page 对象

该对象是页面实例的实际引用。它可以被视为代表整个 JSP 页面的对象。

page 对象实际上是 this 对象的直接同义词。

exception 对象

exception 对象是一个封装,包含从前一页面抛出的异常。它通常用于生成对错误状况的适当响应。

我们将在 JSP - 异常处理 章节中介绍该对象的完整用法。