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对象中获取。所以会因为无法共享数据导致每次都要从数据库获取数据。这样对性能肯定有影响。

  

 

posted @ 2013-11-15 09:22  hiqj  阅读(1324)  评论(0编辑  收藏  举报