+-------------------+------------------------------------------------------------------------------+-------------------------+
|内置对象 | 类型 | 作用域 |
+-------------------+------------------------------------------------------------------------------+-------------------------+
|request | javax.servlet.http.HttpServletRequest | request |
+-------------------+-----------------------------------------------------------------------------+--------------------------+
|response | javax.servlet.http.HttpServletResponse | page |
+-------------------+----------------------------------------------------------------------------+--------------------------+
|pageContext | javax.servlet.jsp.PageContext | page |
+-------------------+----------------------------------------------------------------------------+--------------------------+
|session | javax.servlet.http.HttpSession | session |
+-------------------+----------------------------------------------------------------------------+--------------------------+
|application | javax.servlet.ServletContext | application |
+------------------+------------------------------------------------------------------------------+-------------------------+
|out | javax.servlet.jsp.JspWriter | page |
+------------------+------------------------------------------------------------------------------+-------------------------+
|config | javax.servlet.ServletConfig | page |
+------------------+------------------------------------------------------------------------------+-------------------------+
|page | java.lang.Object | page |
+-------------------+-----------------------------------------------------------------------------+-------------------------+
|exception | java.lang.Throwable | page |
+------------------+------------------------------------------------------------------------------+--------------------------+
-在JSP中提供了四种属性保存范围:
-在一个页面范围内:page
-在一次服务器请求范围内:request
-在一次会话范围内: session
-在一次应用服务器范围内: application
===================
page范围:
===================
在JSP中设置一个页的属性范围必须通过pageContext容器完成.
a.jsp设置属性,同页可以取得属性, 当a.jsp forward 到 b.jsp后,b.jsp无法取得a.jsp设置的page属性
设置属性方法
pageContext.setAttribute("name","zhaoya");
取得属性方法
String name=(String)pageContext.getAttribute("name");
pageContext属性范围,是最为重要的jsp属性之一,但是如果使用纯粹的jsp代码开发,则此属性显现不出用处。只有在structs,WebWork中才能显现作用
======================
request范围:
======================
将属性保存在一次请求之内.必须使用服务器端跳转。
a.jsp中设置属性,同页可以取得属性。
jsp:forward 到 b.jsp ,可以取得属性 ,继续 jsp:forward 到 c.jsp 依然可以取得属性
但是直接的超链跳转不能取得属性
request.setAttribute("name","zhaoya");
String name=(String)request.getAttribute("name");
应用到:MVC、structs、WebWork。
====================
session范围:
====================
只保留一个用户的信息。
只要设置,不管什么跳转都可以取得属性。但新开窗口中不能取得值。
与session有关的任何打开的页面都可取得session,用于验证用户是否登陆。
session.setAttribute("name","zhaoya");
String name=(String)session.getAttribute("name");
===================
application范围:
===================
保存在服务器端,所有用户都可以取得此信息,此信息在整个服务器上被保留。
application.setAttribute("name","zhaoya"); //设置一次,所有窗口都可取得属性
String name=(String)application.getAttribute("name");
application的资源释放,只能重新启动服务器
application、session、request 都需要跨多页
属性保存是有内存开销的
设置过多application或session保存过多的对象,会使服务器性能降低。
因此能使用request就不要使用session,能使用session的就不要使用application。
application应用:在线人员统计、在线人员名单列表
强调一个重要概念:
pageContext->默认情况下表示一个页面的保存范围
pageContext对象的属性中
setAttribute的第二种方法:
setAttribute(String name,Object value,int scope)
scope可以定义范围
说明四种属性范围都是配置pageContext完成的.
设置可以通过以下方式,实现四种属性范围:
pageContext.setAttribute("name","zhaoya",PAGE_SCOPE);
pageContext.setAttribute("name","zhaoya",REQUEST_SCOPE);
pageContext.setAttribute("name","zhaoya",SESSION_SCOPE);
pageContext.setAttribute("name","zhaoya",APPLICATION_SCOPE);
与上面四种属性范围设置作用相同
总结:
四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session、request范围最多
四种范围是整个J2EE WEB端开发必须深刻记住的概念
包括设置属性和取得属性的参数范围,返回值类型
jsp 内置 对象 属性
最新推荐文章于 2024-10-24 17:40:24 发布