您的位置:首页 > Web前端 > JavaScript

《JSP2.0 技术手册》读书笔记五-隐含对象

2010-10-24 16:25 387 查看
何为隐含对象呢?就是指在jsp网页中,不需要做任何的声明和实例化,就可以直接使用的对象。它们有9个:request(HttpServletRequest), response(HttpServletResponse), pageContext, session, application(ServletContext),out(JspWriter), config(当前jsp页面的servletconfig),page(Object,如同java的this), exception(java.lang.Throwable)。其中request,
session, application和pageContext
均有方法setAttribute()/getAttribute()来设定和取得属性,以此达到数据传递。

在了解隐含对象的具体作用前,我们先了解JSP的作用域 ,为正确使用隐含对象做准备。

Page: 指的是单单一页jsp网页的范围。若数据设为page范围,则数据只能在同一个jsp网页上取得,其他网页无法获得该数据。

Request:指在从一jsp网页发出请求到另一个jsp网页之间,随后属性失效。

Session:作用范围为用户持续与服务器连接的时间,与服务器断开后,属性失效。

Application:作用范围在服务器一开始执行到关闭为止。

下面我们来了解各隐含对象的使用

与servlet有关的隐含对象:

page代表JSP网页本身,准确说是代表jsp转译后的servlet,因此可以使用servlet接口的方法。很少使用。

config存放servlet初始化的数据,实现了javax.servlet.servletconfig,因此可以使用getInitParameter(name)等方法。很少使用。

与Input/output有关的隐含对象:

request 包含请求的信息,除了存取属性的方法外,还可以使用javax.servlet.http.HttpServletRequest接口的其他方法如下:

获得jsp页面传来的参数(jsp标签定义的参数,如<input type="text" name="user"/>):String getParameter(name)/Enumeration getParameterNames()/String[] getParameterValues(String name)。其他方法不常用了,如获得http标头,请求的url/ip/session ID等。

response主要将jsp处理后的数据传回客户端。是javax.servlet.http.HttpServletResponse接口的对象。常用方法有:

设定响应状态-sendError(int 状态码)、sendError(int 状态码, string msg)、setStatus(int 状态码);

重写URL-String encodeRedirectURL(string url)、String encodeURL(String url)。

举下response的有意思的用法如下:

//网页每隔180秒就重新加载
response.setIntHeader("Refresh",180);
//过10秒后,转到其他页面
response.setHeader("Refresh","10;URL=http://www.baidu.com");
//设定http/1.0下不缓存网页内容
response.setHeader("Pragma","no-cache");
//设定http/1.1下不缓存网页内容
response.setHeader("Cache-Control","no-cache");
//仅为举例,其他类似用法,用到再查。


out对象能把结果输出到网页,主要有out.println(string)/out.print(string)。

与Context有关的隐含对象

session对象可以让服务器辨别用户。方法可以参考笔记HttpSession。需要注意的是,如果在jsp网页中指定:<%@page session="false" %>则该页面不能使用session对象。

application提供服务端的上下文,说明哪些资源可用,哪些信息可取,具有Application范围作用域,即从服务器启动到服务器关闭均有效。具体方法可以参考api,参考笔记中的ServletContext介绍。

pageContext能存取其他隐含对象,如果隐含对象支持存取属性(如session等),pageContext可以直接操作它们中的属性。

//获得某jsp作用范围内的属性name的值
Object getAttribute(String name, int scope);
//获得某jsp作用范围内的所有属性名
Enumeration getAttributeNamesInScope(int scope);
//清除某作用范围内的属性
void removeAttribute(String name,int scope);
//设置某属性值
void setAttribute(String name,Object value, int scope);
/*
int scope有四种值,为PageContext中的静态常量
PAGE_SCOPE:存入pageContext对象的属性范围,即pageContext.setAttribute("name","Jack");记住page范围为jsp网页,即本页设置本页用。
REQUEST_SCOPE:存入request的属性
SESSION_SCOPE:存入session的属性
APPLICATION_SCOPE:存入application对象的属性
*/


获取各隐含对象的方法有:getException()/getOut()/getRequest()等。

与Error有关的隐含对象

当jsp网页有错误时会产生异常,exception就针对这个异常做处理。若要在该页面使用exception对象必须指定

<%@ page isErrorPage="true" %>,一般这个页面就专门作为错误页面使用。方法有getMessage(),printStackTrace(Print

Writer)等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: