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类定义的方法。

9

Exception

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

request 对象

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

request 对象提供方法来获取HTTP标头信息,包括表单数据、Cookie、HTTP方法等。

我们将在后续章节中介绍与request对象相关的一整套方法:JSP - 客户端请求

response 对象

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

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

我们将在后续章节中介绍与response对象相关的一整套方法:JSP - 服务器响应

out 对象

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

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

JspWriter对象包含与**java.io.PrintWriter**类大部分相同的方法。但是,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 对象用于在客户端请求之间跟踪客户端会话。我们将在后续章节中介绍session对象的完整用法:JSP - 会话跟踪

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和页面范围。

PageContext类定义了几个字段,包括**PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE**和**APPLICATION_SCOPE**,它们标识四个范围。它还支持40多种方法,其中大约一半是从**javax.servlet.jsp.JspContext类**继承的。

其中一个重要的方法是**removeAttribute**。此方法接受一个或两个参数。例如,**pageContext.removeAttribute ("attrName")**会从所有范围内删除属性,而以下代码只会从页面范围内删除它:

pageContext.removeAttribute("attrName", PAGE_SCOPE);

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

page 对象

此对象是对页面的实例的实际引用。可以将其视为表示整个JSP页面的对象。

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

exception 对象

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

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

广告