Download presentation
Presentation is loading. Please wait.
Published by宏湿 劳 Modified 8年之前
1
第 2 章 JSP 应用基础(三)
2
page 对象、 config 对象、 out 对象 response 对象 request 对象 session 对象 application 对象 pageContext 、 exception 对象 教学目标 :
3
2.4 JSP 内置对象 2.4.1 page 对象 page 对象代表 JSP 页面本身,是 this 引用的一个代名词。对 JSP 页面创建者通 常不可访问,所以一般很少用到该对象。 2.4.2 config 对象 config 对象是 ServletConfig 类的一个对象,存放着一些 Servlet 初始化信息,且 只有在 JSP 页面范围内才有效。其常用方法如下: getInitParameter(name) :取得指定名字的 Servlet 初始化参数值。 getInitParameterNames() :取得 Servlet 初始化参数列表,返回一个枚举实例。 getServletContext() :取得 Servlet 上下文( ServletContext )。 getServletName() :取得生成的 Servlet 的名字。 2.4.3 out 对象 JSP 页面的主要目的是动态产生客户端需要的 HTML 结果,前面已经用过 out.print() 和 out.println() 来输出结果。此外 out 对象还提供了一些其他方法来控制管 理输出缓冲区和输出流。例如,要获得当前缓存区大小可以用下面的语句: out.getBufferSize(); 要获得剩余缓存区大小应为: out.getRemaining();
4
2.4.4 response 对象 response 对象实现 HttpServletResponse 接口,可以对客户的请求做出动态 的响应,向客户端发送数据,如 Cookies 、 HTTP 文件的头信息等,一般是 HttpServletResponse 类或其子类的一个对象。以下是 response 对象的主要方法: addHeader(String name,String value) :添加 HTTP 头文件,该头文件将会 传到客户端去,如果有同名的头文件存在,那么原来的头文件会被覆盖。 setHeader(String name,String value) :设定指定名字的 HTTP 文件头的值, 如果该值存在,那么它将会被新的值覆盖。 containsHeader(String name) :判断指定名字的 HTTP 文件头是否存在,并 返回布尔值。 flushBuffer() :强制将当前缓冲区的内容发送到客户端。 addCookie(Cookie cookie) :添加一个 Cookie 对象,用来保存客户端的用户 信息,可以用 request 对象的 getCookies() 方法获得这个 Cookie 。 sendError(int sc) :向客户端发送错误信息。例如, “505” 指示服务器内部错 误, “404” 指示网页找不到的错误。 setRedirect(url ) :把响应发送到另一个指定的页面( URL )进行处理。
5
2.4.5 request 对象 下面介绍其主要的方法: getParameter(String name) :以字符串的形式返回客户端传来的某一个请求 参数的值,该参数由 name 指定。 getParameterValue(String name) :以字符串数组的形式返回指定参数所有 值。 getParameterNames() :返回客户端传送给服务器端的所有的参数名,结果 集是一个 Enumeration (枚举)类的实例。 getAttribute(String name) :返回 name 指定的属性值,若不存在指定的属性, 则返回 null 。 setAttribute(String name,java.lang.Object obj) :设置名字为 name 的 request 参数的值为 obj 。 getCookies() :返回客户端的 Cookie 对象,结果是一个 Cookie 数组。 getHeader(String name) :获得 HTTP 协议定义的传送文件头信息,例如, request.getHeader("User-Agent") 含义为:返回客户端浏览器的版本号、类型。 getDateHeader() :返回一个 Long 类型的数据,表示客户端发送到服务器的 头信息中的时间信息。 getHeaderName() :返回所有 request Header 的名字,结果集是一个 Enumeration (枚举)类的实例。得到名称后就可以使用 getHeader 、 getDateHeader 等得到具体的头信息。
6
2.4.5 request 对象 getServerPort() :获得服务器的端口号。 getServerName() :获得服务器的名称。 getRemoteAddr() :获得客户端的 IP 地址。 getRemoteHost() :获得客户端的主机名,如果该方法失败,则返回客户端 的 IP 地址。 getProtocol() :获得客户端向服务器端传送数据所依据的协议名称。 getMethod() :获得客户端向服务器端传送数据的方法。 getServletPath() :获得客户端所请求的脚本文件的文件路径。 getCharacterEncoding () :获得请求中的字符编码方式。 getSession(Boolean create) :返回和当前客户端请求相关联的 HttpSession 对象。 getQuertString() :返回查询字符串,该字符串由客户端以 get 方法向服务器 端传送。 getRequestURI() :获得发出请求字符串的客户端地址。 getContentType() :获取客户端请求的 MIME 类型。如果无法得到该请求的 MIME 类型,则返回 1 。
7
2.4.6 session 对象 session 对象的主要方法如下: getAttribute(String name) :获得指定名字的属性,如果该属性不存在,将会 返回 null 。 getAttributeNames() :返回 session 对象存储的每一个属性对象,结果集是一 个 Enumeration 类的实例。 getCreationTime() :返回 session 对象被创建的时间,单位为毫秒。 getId() :返回 session 对象在服务器端的编号。 getLastAccessedTime() :返回当前 session 对象最后一次被操作的时间,单 位为毫秒。 getMaxInactiveInterval () :获取 sessionn 对象的生存时间,单位为秒。 setMaxInactiveInterval (int interval) :设置 session 对象的有效时间(超时时 间),单位为秒。在网站的实际应用中, 30 分钟的有效时间对某些网站来说有些 太短,但对有些网站来说又有些太长。 例如:设置有效时间为 200s 。 removeAttribute(String name) :删除指定属性的属性名和属性值。 setAttribute(String name,Java.lang.Object value) :设定指定名字的属性, 并且把它存储在 session 对象中。 invalidate() :注销当前的 session 对象。
8
2.4.7 application 对象 application 对象的主要方法如下: getAttribute(String name) :返回由 name 指定名字的 application 对象的属性值。 getAttributeNames() :返回所有 application 对象属性的名字,结果集是一个 Enumeration 类型的实例。 getInitParameter(String name) :返回由 name 指定名字的 application 对象的某 个属性的初始值,如果没有参数,就返回 null 。 getServerInfo() :返回 Servlet 编译器当前版本信息。 setAttribute(String name, Object obj) :将参数 Object 指定的对象 obj 添加到 application 对象中,并为添加的对象指定一个属性。 removeAttribute(String name) :删除一个指定的属性。
9
2.4.7 application 对象 下面用实例说明它们三者之间的区别。 首先,建立项目 Application_Session_Request 。在项目中建立一个 JSP 页面 first.jsp ,用于这三个对象保存数据。 <% request.setAttribute("request"," 保存在 Request 中的内容 "); session.setAttribute("session"," 保存在 Session 中的内容 "); application.setAttribute("application"," 保存在 Application 中的内容 "); %>
10
2.4.7 application 对象 然后,再建立另一个 JSP 页面 second.jsp ,用于获取这三个对象保存的值。 <% out.println("request:"+(String)request.getAttribute("request")+" "); out.println("session:"+(String)session.getAttribute("session")+" "); out.print("application:"+(String)application.getAttribute("application")+" "); %>
11
2.4.7 application 对象 部署运行,打开 IE ,输入 “http://localhost:8080/Application_Session_Request/first.jsp” ,会发现这三个对 象保存的内容都能取出,如图 2.16 所示。 图 2.16 运行界面 1
12
2.4.7 application 对象 由于在 first.jsp 中运用了 ,页 面跳转到 second.jsp ,但是在浏览器中的地址也就是请求并没有改变,属于同一 请求。这时这三个对象保存的内容都可以取到,也就是说在同一请求范围内,该 三个对象都有效,在该 IE 浏览器中输入 “http://localhost:8080/Application_Session_Request/second.jsp” ,结果如图 2.17 所示。 图 2.17 运行界面 2
13
2.4.7 application 对象 在不同请求中, request 对象就失效了,但是由于用的是同一个 IE ,也就是同 一会话, session 和 application 仍然有效。如果再重新打开一个 IE ,然后直接输入 “http://localhost:8080/Application_Session_Request/second.jsp” ,结果如图 2.18 所示。 图 2.18 运行界面 3
14
2.4.8 pageContext 对象 pageContext 对象的主要方法如下: getAttribute() :返回与指定范围内名称有关的变量或 null ,例如: CustomContext MyContext=(CustomContext) pageContext.getAttribute("Large Bird", PageContext.SESSION_SCOPE); 这段代码在作用域中获得一个对象。 forward(String relativeurl Path) :把页面重定向到另一个页面或 Servlet 组件 上。 findAttribute() :按照页面请求、会话及应用程序范围的顺序实现对某个已经 命名属性的搜索。 getException() :返回当前的 exception 对象。 setAttribute() :设置默认页面的范围或指定范围中的已命名对象。例如: CustomContext MyContext=new CustomContext("Penguin"); pageContext.setAttribute("Large Bird", MyContext.PageContext.SESSION_SCOPE); 这段代码在作用域中设置一个对象。 removeAttribute() :删除默认页面范围或指定范围中已命名的对象。
15
2.4.9 exception 对象 exception 对象用来处理 JSP 文件在执行时所发生的错误和异常。它可以配 合 page 指令一起使用,通过指定某一页面为错误处理页面,把所有的错误都集 中到那个页面去处理。这样使得整个系统更加健壮,程序的流程更加清晰,这 也是 JSP 比 ASP 、 PHP 先进的地方。 exception 对象的主要方法如下: getMessage() :返回错误信息。 printStackTrace() :以标准错误的形式输出一个错误和错误堆栈。 toString() :以字符串的形式返回一个对异常的描述。
Similar presentations