属性

什么是属性

属性就是一个对象,可以设置到(绑定)到另外3个servlet API对象中的一个,包括ServletContext、HttpSession、HttpServletRequest(ServletRequest)。
可以简单的认为是一个映射实例对象中的名/值(名--String,值--Obeject)。
属性不是参数

三个作用域



属性API

属性安全问题

作用域在ServletContext的属性显然不安全,因为webapp的所有线程都可以访问处理。再想一想,HttpSession的属性是不是安全的呢?一般人的回答是线程安全的,但是这是错误的。如果再打开一个浏览窗口(即使在另一个浏览器中),但容器仍认为这是同一个会话,这也就造成了多个线程在一个会话中,所以HttpSession中的属性不是线程安全的!
这就需要用线程的知识解决了。只需对ServletContext/HttpSession同步即可,千万不能对servlet进行同步,否则就会只有一个线程可以访问servlet,导致效率很低。

只有请求属性和局部变量是线程安全的

请求属性与转发

如果希望应用的其他组件[Servlet/JSP]接管全部或部分请求,就可以使用请求属性。
那么如何让组件的其他部分接管这个请求呢?用RequestDispatcher.
举个例子:

servlet

示意图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。