- JSP 基础教程
- JSP - 首页
- JSP - 概述
- JSP - 环境搭建
- JSP - 架构
- JSP - 生命周期
- JSP - 语法
- JSP - 指令
- JSP - 动作
- JSP - 隐式对象
- JSP - 客户端请求
- JSP - 服务器响应
- JSP - HTTP 状态码
- JSP - 表单处理
- JSP - 编写过滤器
- JSP - Cookie 处理
- JSP - 会话跟踪
- JSP - 文件上传
- JSP - 日期处理
- JSP - 页面重定向
- JSP - 点击计数器
- JSP - 自动刷新
- JSP - 发送邮件
- 高级 JSP 教程
- JSP - 标准标签库
- JSP - 数据库访问
- JSP - XML 数据
- JSP - Java Bean
- JSP - 自定义标签
- JSP - 表达式语言
- JSP - 异常处理
- JSP - 调试
- JSP - 安全性
- JSP - 国际化
- JSP 有用资源
- JSP - 问答
- JSP - 快速指南
- JSP - 有用资源
- JSP - 讨论
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 - 异常处理章节中介绍此对象的完整用法。