MENU

Java四个域对象的使用及区别

2022 年 04 月 03 日 • SSM

page,request,session,application 四个域对象的使用及区别.jpeg

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 都是完全隔离的,无论如何修改都不会影响其他人的数据。

pageContext 对象的范围只适用于当前页面范围,即超过这个页面就不能够使用了。所以使用 pageContext 对象向其它页面传递参数是不可能的。
request 对象的范围是指在一 JSP 网页发出请求到另一个 JSP 网页之间,随后这个属性就失效。
session 的作用范围为一段用户持续和服务器所连接的时间,但与服务器断线后,这个属性就无效。比如断网或者关闭浏览器。
application 的范围在服务器一开始执行服务,到服务器关闭为止。它的范围最大,生存周期最长。

最后编辑于: 2022 年 05 月 09 日