`

jsp 的四个作用域 :page、request、session和application的区别

 
阅读更多

1.简单说 page指当前页面。在一个jsp页面里有效 
2.request 指从http请求到服务器处理结束,返回响应的整个过程。在这个过程中使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。 
3.Session 有效范围当前会话,从浏览器打开到浏览器关闭这个过程。 
4.application它的有效范围是整个应用。 
作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用 






page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。 

request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。 

session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。 

application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。 

而作用域规定的是变量的有效期限。 

如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 

从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。 

如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。 

所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。 

所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。

如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。 

整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。

application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。 

与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他人的数据。

 

 

 问题:page、request、session、application的作用范围?

  书中解答,此处只摘录重要语句:

  page:用户请求的当前页面;

  Request:用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件。如:被请求的jsp页面和该页面用<include>指令包含的页面以及<forward>标记包含的其它jsp页面; 

  Session:同一个http会话中的web组件共享它;
  Application:整个web应用的所用web组件共享它。

 此处我举个例子说明

   一个网站MyWebSite,其包含7个jsp页面,分别为master.jsp、top.jsp、main.jsp、foot.jsp、login.jsp、success.jsp和news.jsp。master.jsp页面通过<include>指令包含top.jsp、main.jsp、foot.jsp三个页面,当用户通过login.jsp登录成功后,进入success.jsp页面然后通过此页面的<forward>标签跳转到master.jsp页面中。

    我们在success.jsp页面中加入如下代码(此处用到jstl标签) 

<c:set value="aaa" var="test1" scope=”page” />
<c:set value="aaa" var="test2" scope=”request” />
<c:set value="aaa" var="test3" scope=”session” />
<c:set value="aaa" var="test4" scope=”application” />

<jsp:forward page=”master.jsp”/ >这里一一说明

1.变量 test1 只在success.jsp内有效;
2.变量 test2  在success.jsp、master.jsp、top.jsp、main.jsp、foot.jsp中有效;
3.变量 test3 在7个页面中都有效(包括login.jsp和news.jsp);
4.变量 test4 在整个网站,当前也就是7个页面中都有效(包括login.jsp和news.jsp)。

Test3和test4有效范围一样,有什么区别呢?

   其实区别蛮大的,我只说明一点,假如此时又有另一个用户访问master.jsp页面,那么test3相对于这个用户来说就无效,而test4却是有效的。或者当第一个登录的用户关闭浏览器后,再重新访问master.jsp时,test3就无效,而test4却有效。

分享到:
评论

相关推荐

    JSP中的常见的四种作用域

    JSP中常见的page,request,session,application的作用域

    jsp的九大内置对象和四大作用域

    jsp的九大内置对象和四大作用域.一共有九大内置对象: request、response、out、session、application、...page(页面作用域),request(请求作用域),session(会话作用域),application(应用程序作用域)

    JSP中 Session和作用域的使用

    Servlet/JSP中的Session功能是通过作用域(scope)这个概念来实现的。 作用域分为四种,分别为: page 在当前页面有效(仅用于JSP中) request 在当前请求中有效 session 在当前会话中有效 application 在所有...

    jsp 九种内置对象, 四种作用域

    JSP的九大内置对象 request:封装客户端的请求,包含来自GET或POST请求的参数; response:响应对象,代表的是从服务器向浏览器响应数据; pageContext:提供了对JSP页面所有的...JSP中的四种作用域 pagepage作用域表示

    jsp九大内置对象、四种作用域、跳转方式

    jsp有四种属性范围: page -&gt; 页面级别,显然只有在一个页面内可用。 request -&gt; 请求级别 服务器跳转,一次请求之后消失。 session -&gt; 会话级别 客户端跳转(服务器跳转),与浏览器有关,ie是在重新打开ie时才...

    jsp的内置对象的详细讲解

    了解内置对象的分类及组成 掌握输入/输出对象:request、response 和 out 掌握作用域通信对象:session、application和pageContext 掌握 Servlet 相关对象:page 和 config 掌握错误对象:exception

    JSP 内部培训教程

    JSP的作用域 2 二、JSP的結構 3 JSP結構圖 3 一個完整的JSP網頁實例 3 三、JSP注釋和指令 4 JSP注釋 4 JSP指令 4 page指令 4 include指令 5 taglib指令 5 四、JSP腳本元素 6 JSP聲明 6 JSP表達式 6 JSP腳本小程序 6 ...

    javaBean和JSP标准动作.rar

    pageContext session application ---- 应用作用域对象 page config ---- Servlet对象 exception ---- 异常处理对象 了解区分并使用隐式对象 JSP强有力的一个方面就是能够使用JavaBean组件体系。JavaBean往往...

    JSP技术知识点考查 jsp动态建站技术

    pageContext对象是Jsp页面本身的上下文,它提供唯一一组方法来管理具有不同作用域的属性 request对象提供对Http请求数据的访问,同时还提供用于加入特定请求数据的上下文 response对象允许直接访问...

    JSP/Servlet Java面试逻辑题

    1、说一说Servlet的生命周期?★★★★★ 答: servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。...这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

    java web 期末复习题库及答案

    在 JSP中作用域由小到大的组合是 A .request page session application B.page request session application C.pageContext request session application D.pageScope request sessionScope applicationScope

    JAVA程序员面试题

    会话作用域ServletsJSP 页面描述 page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成...

    jsp从入门到高级编程

    6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的方法和属性 6.11.3 application对象内包含的系统信息 6.11.4 利用...

    jsp servlet 入门学习资料-新手一看就懂

    6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的方法和属性 6.11.3 application对象内包含的系统信息 6.11.4 利用...

    JSP高级教程

    6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的方法和属性 6.11.3 application对象内包含的系统信息 6.11.4 利用...

    jsp内置对象

    JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception 1、request对象 request对象代表了客户端的请求信息,主要用于接受通过HTTP协议...

    JSP高级编程

    6.10.5 JavaBeans的作用域 6.10.6 利用JavaBeans制作的购物车 6.11 使用application对象 6.11.1 应用的概念 6.11.2 application对象可用的方法和属性 6.11.3 application对象内包含的系统信息 6.11.4 ...

    超级有影响力霸气的Java面试题大全文档

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    java面试题

    int和Integer有什么区别? 答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装类。 String和StringBuffer的区别? 答:String是不可变的对象,每次对String类型进行...

Global site tag (gtag.js) - Google Analytics