http://blog.youkuaiyun.com/yiyi735/article/details/2500567
JSP中变量的定义范围实际有5种:本地范围,页面范围(page),请求范围(request),会话范围(session)和应用程序范围(application)。
以下介绍在各种技术中的变量存取方法。
u JSP中:
存储:
本地范围变量直接定义,如:
String name="name in page";
page
范围变量保存在
pageContext
隐式对象中,如:
pageContext.setAttribute("nameContext","name in pageContext");
request
范围变量保存在
request
隐式对象中,如:
request.setAttribute("nameRequest","name in Request");
session
范围变量保存在
session
隐式对象中,如:
session.setAttribute("nameSession","name in Session");
application
范围变量保存在
application
隐式对象中,如:
application.setAttribute("nameApplication","name in Application");
读取:
name:
<%=
name
%>
<
br
/>
nameContext:
<%=
pageContext.getAttribute(
"nameContext"
).toString()
%>
<
br
/>
nameRequest:
<%=
request.getAttribute(
"nameRequest"
).toString()
%>
<
br
/>
nameSession:
<%=
session.getAttribute(
"nameSession"
).toString()
%>
<
br
/>
nameApplication:
<%=
application.getAttribute(
"nameApplication"
).toString()
%>
u JSTL中
JSTL中没有本地范围的概念。只有page,request,session和application范围的变量。
存储
使用c:set存储变量。
scope属性默认为page, 若不指定则变量存储在page范围里:
<
c:set
var
=
"name"
value
=
"name in where"
/>
<
c:set
var
=
"namePage"
value
=
"name in pageScope"
scope
=
"page"
></
c:set
>
<
c:set
var
=
"nameRequest"
value
=
"name in requestScope"
scope
=
"request"
></
c:set
>
<
c:set
var
=
"nameSession"
value
=
"name in sessionScope"
scope
=
"session"
></
c:set
>
<
c:set
var
=
"nameApplication"
value
=
"name in ApplicationScope"
scope
=
"page"
></
c:set
>
读取
使用c:out读取变量
c:out标签依次从page,request,session,application范围查找指定变量然后输出。也可以指定查找范围。
nameSession -
<
c:out
value
=
"${nameSession}"/> -
依次搜索至
session
范围,找到
nameSession
变量,然后输出。
<
br
/>
namePage -
<
c:out
value
=
"${pageScope.namePage }"/> -
指定搜索范围为
page
范围
<
br
>
nameRequest -
<
c:out
value
=
"${requestScope.nameRequest }"/> -
指定搜索范围为
request
范围
<
br
>
nameSession -
<
c:out
value
=
"${sessionScope.nameSession }"/> -
指定搜索范围为
session
范围
<
br
>
nameApplication -
<
c:out
value
=
"${applicationScope.nameApplication }"/> -
指定搜索范围为
application
范围
<
br
>
name -
<
c:out
value
=
"${pageScope.name }"/>
struts
中
跟 JSTL 一样,只有 page,request,session,application 范围。
存储
使用 bean:define
toScope 属性指定存储范围,默认为 page, 若不指定则变量存储在 page 范围里
读取
使用 bean:write
scope 属性指定读取范围,若没有设置此属性,则依次从 page,request,session,application 范围查找指定变量然后输出。