JSP - 隐式对象( Implicit Objects)
在本章中,我们将讨论JSP中的隐式对象。 这些对象是JSP容器为每个页面中的开发人员提供的Java对象,开发人员可以直接调用它们而无需显式声明。 JSP隐式对象也称为pre-defined variables 。
下表列出了JSP支持的九个隐式对象 -
S.No. | 对象和描述 |
---|---|
1 | request 这是与请求关联的HttpServletRequest对象。 |
2 | response 这是与客户端响应关联的HttpServletResponse对象。 |
3 | out 这是用于将输出发送到客户端的PrintWriter对象。 |
4 | session 这是与请求关联的HttpSession对象。 |
5 | application 这是与应用程序上下文关联的ServletContext对象。 |
6 | config 这是与页面关联的ServletConfig对象。 |
7 | pageContext 这封装了特定于服务器的功能,如性能更高的JspWriters 。 |
8 | page 这只是它的同义词,用于调用已转换的servlet类定义的方法。 |
9 | Exception Exception对象允许指定的JSP访问异常数据。 |
请求对象
请求对象是javax.servlet.http.HttpServletRequest对象的实例。 每次客户端请求页面时,JSP引擎都会创建一个新对象来表示该请求。
请求对象提供了获取HTTP头信息的方法,包括表单数据,cookie,HTTP方法等。
我们可以在后续章节中介绍与请求对象关联的一整套方法 - JSP - 客户端请求 。
响应对象
响应对象是javax.servlet.http.HttpServletResponse对象的一个实例。 就像服务器创建请求对象一样,它也会创建一个对象来表示对客户端的响应。
响应对象还定义了处理创建新HTTP标头的接口。 通过这个对象,JSP程序员可以添加新的cookie或日期戳,HTTP状态代码等。
我们将在后续章节中介绍与响应对象关联的一整套方法 - JSP - 服务器响应 。
out对象
out隐式对象是javax.servlet.jsp.JspWriter对象的一个实例,用于在响应中发送内容。
初始JspWriter对象的实例化取决于页面是否缓冲。 通过使用page指令的buffered = 'false'属性,可以轻松关闭buffered = 'false' 。
JspWriter对象包含与java.io.PrintWriter类相同的大多数方法。 但是,JspWriter还有一些其他方法可用于处理缓冲。 与PrintWriter对象不同,JspWriter会抛出IOExceptions 。
下表列出了我们将用于编写boolean char, int, double, object, String等的重要方法。
S.No. | 方法和描述 |
---|---|
1 | out.print(dataType dt) 打印数据类型值 |
2 | out.println(dataType dt) 打印数据类型值,然后使用换行符终止该行。 |
3 | out.flush() 冲洗流。 |
会话对象
session对象是javax.servlet.http.HttpSession一个实例,其行为与Java Servlets下会话对象的行为完全相同。
会话对象用于跟踪客户端请求之间的客户端会话。 我们将在后续章节中介绍会话对象的完整用法 - JSP - 会话跟踪 。
应用程序对象
应用程序对象是生成的Servlet的ServletContext对象的直接包装器,实际上是javax.servlet.ServletContext对象的实例。
该对象是JSP页面整个生命周期的表示。 初始化JSP页面时会创建此对象,并且在jspDestroy()方法删除JSP页面时将删除该对象。
通过向应用程序添加属性,可以确保构成Web应用程序的所有JSP文件都可以访问它。
我们将在JSP - Hits Counter章节中检查Application Object的使用。
配置对象
config对象是javax.servlet.ServletConfig的实例化,是生成的servlet的ServletConfig对象的直接包装器。
该对象允许JSP程序员访问Servlet或JSP引擎初始化参数,例如路径或文件位置等。
以下config方法是您可能使用的唯一方法,其用法很简单 -
config.getServletName();
这将返回servlet名称,该《servlet-name》是WEB-INF\web.xml文件中定义的《servlet-name》元素中包含的字符串。
pageContext对象
pageContext对象是javax.servlet.jsp.PageContext对象的一个实例。 pageContext对象用于表示整个JSP页面。
此对象旨在作为访问有关页面信息的方法,同时避免大多数实现细节。
此对象存储对每个请求的请求和响应对象的引用。 application, config, session和输出对象是通过访问此对象的属性派生的。
pageContext对象还包含有关发布到JSP页面的指令的信息,包括缓冲信息,errorPageURL和页面范围。
PageContext类定义了几个字段,包括PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE,和APPLICATION_SCOPE ,它们标识了四个范围。 它还支持40多种方法,其中大约一半是从javax.servlet.jsp.JspContext class继承的。
其中一个重要的方法是removeAttribute 。 此方法接受一个或两个参数。 例如, pageContext.removeAttribute ("attrName")从所有范围中删除该属性,而以下代码仅从页面范围中删除它 -
pageContext.removeAttribute("attrName", PAGE_SCOPE);
可以在JSP - File Uploading章节中检查pageContext的使用。
页面对象
此对象是对页面实例的实际引用。 它可以被认为是表示整个JSP页面的对象。
页面对象实际上是this对象的直接同义词。
异常对象
异常对象是一个包装器,包含从上一页抛出的异常。 它通常用于生成对错误条件的适当响应。
我们将在JSP - 异常处理章节中介绍该对象的完整用法。