JSP - 隐式对象
在本章中,我们将讨论 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_SCOPE 和 APPLICATION_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 - 异常处理 章节中介绍该对象的完整用法。