第3章JSP隐含对象
为简化Web页面的开发过程,JSP提供了一些由容器实现和管理的隐含对象,这些对象在
JSP页面中可以直接使用,不需要JSP页面编写者实例化。在JSP页面中,可以通过存取这些
隐含对象实现与JSP页面和Servlet环境的相互访问。
本章主要内容包括JSP隐含对象概述和各类隐含对象的具体说明。
3.1 JSP隐含对象概述
JSP页面的隐含对象就是在JSP页面中不用声明就可以使用的对象。隐含对象是JSP引擎自
动创建的Java类实例,它们能与Servlet环境交互。隐含对象可以实现很多功能,如从客户端
获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。下面举例说明隐含对象
的功能。
· 不必使用表达式,可以直接使用out对象来打印一些内容到客户端:
<%out.println(“Hello”);%>
· 不必直接传送参数,可以借助请求对象来取得客户端输入的参数值:
<%Siring name=request.get.Parameter(“name”);%>
· 完成页面的重定向:
<%response.sendRedirect(“hello.jsp”);%>
· 在错误页面中显示出错信息:
<%String st=exception.getMessage();%>
· JSP规范中定义了9种隐含对象,它们是request、response、session、out、application、
pageContext、page、config和exception,这些对象在服务器端和客户端交互过程中分别完成
不同的功能,见表3-1。
表3-1
JSP中9个隐含对象
隐含对象
所属的类
说明
request
javax.servlet.http.HttpServletRequest
客户端的请求信息
response
javax.servlet.http.HttpServletResponse
传回客户端的响应
session
javax.servlet.http.HttpSession
与请求有关的会话
out
javax.servlet.jsp.JSPWriter
向客户端浏览器输出数据的数据流
application
javax.servlet.ServletContext
提供全局的数据,一旦创建就保持
到服务器关闭
pageContext
Javax.servlet.jsp.PageContext
JSP页面的上下文.用于访问页面
属性
page
Java.lang.Object
同
Java中的this,即JSP页面本身
config
Javax.scrvlet.servlet.Config
Servlet的配置对象
exception
Java.lang.Throwable
捕捉错误网页,捕捉一般网页中未
捕捉的异常
1.对象可分为4类:
(1)与输入/输出有关的对象:request、response、out。
(2)与属性作用域有关的对象:session、application、pageContext。
(3)与Servlet相关的对象:page、config。
(4)与错误处理有关的对象:exception。
下面分别介绍这些隐含对象。由于篇幅限制,本章有些例子只说明页面的功能、关键代码的运
行效果,完整
程序请参看第3章
源代码。
3.2与输入/输出有关的隐含对象
3.2.1 request对象
HTTP协议是在客户端与服务器之间传递请求与响应信息的通信协议。在JSP页面中,隐含
对象request代表的是来自客户端的请求,通过它可以查看请求参数、请求类型(GET、POST、
HEAD) 以及请求的HTTP头(Cookie、Referer等)客户端信息,它是实现
javax.servlet.http.HttpServletRequest接口的类的一个实例。严格说来,如果请求所用的是HTTP
之外的其他协议,request可以是javax.servlet.ServletRequest的子类(而不是
HttpServletRequest),但在实践中很少用到。
Request对象的方法有很多,有些是从javax.Servlet.ServletRequest接口中继承的,这些方法
与类型无关,有些是javax.servlet.http.HttpServletRequest中的方法,它们只支持HTTP协议。
从功能角度可以将这些方法分为4类。
(1) 取得请求参数的方法,如表3-2所示。
表3-2取得请求参数的方法
方法
说明
String getParameter(String name)
取得name的参数值
Enumeration getParameterNames()
取得所有的参数名称
String[]getParameterValues(String name)
取得所有name的参数值
Map getParameterMap()
取得一个参数的Map
(2) 取得请求HTTP头的方法,如表3.3所示。
表3-3取得请求头的方法
方法
说明
String getH