servletContext、session、request比较
两者的区别可从:显示网页被浏览次数(accessCount)中被体现
1、先用一个例子说明session与servletContext区别:
例如:
用session保存accessCount:当浏览器关闭再次打开时,accessCount从零开始计数,原session中的accessCount数值丢失。
用servletContext保存accessCount:浏览器即使再次打开,accessCount数值也不会丢失。
2、session:是一个会话范围,局部变量。在用户第一次访问时创建,在用户关闭浏览器或者网页超时的时候销毁。在此期间,session中数据一致保存。每一个用户都 有一个独有的session,用户之间不共享。
servletContext:是一个servlet环境的上下文,全局变量。只要Web应用在启动中(服务器不关闭),数据一直存在。存储的数据可被所有用户访问。
request:保存的键值只在下一个request对象中可得到。
3、利弊
session:
利:是局部变量,可保存用户信息。不用每次在需要用户信息时都从数据库中取,减少操作,方便程序编写。
弊:
1)、每个用户都有一个session,用户之间不能共享session,不同用户之间可能存有大量的重复(共享)数据,这样会耗费大量服务器内存。
2)、session构建在cookie和url重写的基础上。所以用session实现会话跟踪,会用掉一点点服务器带宽与客户端保持联络。session越多耗费的带宽越多,理论上对 性能会造成影响。
servletContext:
利:存储的数据所有用户都能访问。减少了重复在内存中存储数据带来的内存问题。
弊:通常需要被所有用户同时使用的数据并不是很多。适用的范围没那么广。
request:
利:用完就扔,不会导致资源占用的无限增长。
弊:数据只能在下一个request对象中获取。所以会因为无法共享数据导致每次都要从数据库获取数据。这样对性能肯定有影响。