提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Java的四大作用域为:PageContext,ServletRequest,HttpSession,ServletContext,
这里只涉及其中两个作用域,既HttpSession和ServletContext
一、HttpSession
范围第二大的域,(会话范围)在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session。如果没有,就在内存中创建一个session并返回。当一短时间内(默认30分钟)session没有被使用,则服务器会销毁该session。若服务器非正常关闭,未到期的session也会跟着销毁。若调用session提供的invalidate()方法,可以立即销毁session。
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。
会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
获取方法截图:
该域只在同一浏览器内共享数据,在不同浏览器中数据不共享。
在Chrome中的效果:
在IE浏览器中的效果:
说明不同浏览器下,数据不共享。
二、ServletContext
所有作用域中范围最大的域,由于所有servlet共享一个servletcontext对象,所有多个servlet通过servletcontext可以实现数据在不同servlet之间的共享,是一个全局变量
获取方法截图:
该域范围最大,所有servlet共享一个servletcontext对象。
在Chrome中的效果:
在IE浏览器中累加一次的效果:
说明在不同浏览器中,对于servletcontext中的数据是共享的。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了HttpSession与ServletContext两个域的不同,HttpSession:服务器会为每个会话创建一个session对象,所以每个session对象只被在当前的servlet对象共享;ServletContext:ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用。