JavaWeb chapter6 对象作用域

Posted littlejava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb chapter6 对象作用域相关的知识,希望对你有一定的参考价值。

1、  对象属性所在作用域:谁能看到并使用这个属性,以及它能存活多久。

2、  应用上下文ServletContext对象作用域:

  • 对于整个Web应用,只有一个ServletContext对象,而且在Web应用中的所有地方都可以访问它;
  • ServletContext对象由Web容器创建并实例化,它可以多线程同时读/写属性;
  • 是线程不安全的,所以需要对属性的读/写进行同步处理或进行深度复制;
  • 当web容器关闭,会销毁ServletContext对象;
  • 建议:在ServletContext对象中尽可能少量保存不会被修改的数据,常用的方法是用单例模式来处理共享数据。

3、  HTTPSession对象作用域:

  • 用于维护服务器与一个客户的会话状态。在HttpSession对象中设置属性,不能被Web应用中的所有地方访问;
  • HttpSession对象在用户会话期间存在,只能在处理属于同一个HttpSession的请求的线程中被访问;
  • HttpSession对象的属性访问理论上是线程安全的,但当用户打开多个属于一个进程的浏览器窗口,在这些窗口的访问属于同一个HttpSession对象,会出现多次请求,需要多个工作线程处理请求,可能造成线程不安全,这时需要对属性的读写进行线程同步处理,一般使用同步块synchronized来处理;
  • 当会话被销毁,HttpSession的设置属性也会被销毁;

4、  HTTPServletRequest对象作用域:

  • HttpServletRequest对象用于一次客户端请求过程。对于每一个请求,由一个线程来执行,都会创建一个新的HttpServletRequest对象;
  • 所以HttpServletRequest对象只能在一个线程中被访问,它是线程安全的;

5、  三个对象的共同点:都是内置对象,都相当于容器,可以存取属性,拥有相同的属性操作方法。

6、  三个对象的不同点:

  • 作用域大小比较:ServletContext>HttpSession对象>HttpServletRequest对象;
  • 存活时间长短比较:ServletContext>HttpSession对象>HttpServletRequest对象;
  • 资源消耗多少比较:ServletContext>HttpSession对象>HttpServletRequest对象;
  • 线程安全性比较:ServletContext<HttpSession对象<HttpServletRequest对象;

以上是关于JavaWeb chapter6 对象作用域的主要内容,如果未能解决你的问题,请参考以下文章

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

JavaWeb-四大域对象复习

JavaWeb的四大域对象总结

JavaWeb的四大域对象

JavaWeb总结

JavaWeb的四大作用域详解