JSP 有四种范围

2009年07月06日 星期一 下午 02:37

JSP 有四种范围,分别为Page、Request、Session、Application。所谓的Page,指的是单单一
页JSP Page 的范围。若要将数据存入Page 范围时,可以用pageContext 对象的setAttribute( )
方法;若要取得Page范围的数据时,可以使用pageContext对象的getAttribute( )方法。

一:Page

这个范例主要用来说明一个概念:若数据设为Page范围时,数据只能在同一个JSP网页上取得,其他JSP网页却无法取得该数据。

二:Request

Request 的范围是指在一JSP 网页发出请求到另一个JSP 网页之间,随后这个属性就失效。

现在将Name和Password的属性范围设为Request,当RequestScope1.jsp转向到RequestScope2.jsp时,RequestScope2.jsp也能取得RequestScope1.jsp设定的Name和Password值。不过其他的JSP网页无法得到Name和Password值,除非它们也和RequestScope1.jsp有请求的关系。

除了利用转向(forward)的方法可以存取request 对象的数据之外,还能使用包含(include)的方法。
假若我将RequestScope1.jsp 的<jsp:forward page="RequestScope2.jsp"/>
改为
<jsp:include page="RequestScope2.jsp" flush="true"/>
执行RequestScope1.jsp 时,结果还是和图5-4 一样。表示使用<jsp:include>标签所包含进来的网页,同样也可以取得Request 范围的数据。

三:Session、Application

当 我们使用getAttribute(String name)取得name 属性的值时,它会回传一个java.lang.Object,因此,我们还必须根据name 属性值的类型做转换类型(Casting)的工作。例如:若要取得String 类型的Name 属性时:
String Name = (String)pageContext.getAttribute("Name");

若是Integer 类型的Year 属性时:
Integer Year = (Integer)session.getAttribute("Year");

到目前已大约介绍完JSP 中四种范围(Scope):Page、Request、Session 和Application。假若我的数据要设为Page 范围时,则只需要:
pageContext.setAttribute("Year", new Integer(2001));
若要为Request、Session 或Application 时,就分别存入request、session 或application对象之中,如下:
request.setAttribute("Month", new Integer(12) );
session.setAttribute("Day", new Integer(27) );
application.setAttribute("Times", new Integer(10));
接下来就正式进入本章的主题:隐含对象(Implicit Object)。

此条目发表在 Java Web 分类目录,贴了 标签。将固定链接加入收藏夹。

JSP 有四种范围》有 1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>