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 对象作用域的更多相关文章
- 跨JavaScript对象作用域调用setInterval方法
跨JavaScript对象作用域调用setInterval方法: var id = window.setInterval(function() {foofunc.call(this);}, 200);
- [PHP]获取静态方法调用者的类名和运用call_user_func_array代入对象作用域
一.获取静态方法调用者的类名 方法一: class foo { static public function test() { var_dump(get_called_class()); } } cl ...
- 第六章 对象作用域与servlet事件监听器
作用域对象 Servlet上下文监听器 Servlet会话监听器 Servlet请求监听器 一:对象作用域 作用域对象 属性操作方法 作用域范围说明 ServletContext( ...
- JavaWeb response对象常用操作
JavaWeb response对象常用操作 CreationTime--2018年7月18日10点42分 Author:Marydon 1.设置响应内容类型 方式一 response.setCo ...
- JavaWeb request对象常用操作
JavaWeb request对象常用操作 CreateTime--2018年6月1日16点47分 Author:Marydon 一.前提 import javax.servlet.http.Ht ...
- JavaScript 执行环境(执行上下文) 变量对象 作用域链 上下文 块级作用域 私有变量和特权方法
总结自<高程三>第四章 理解Javascript_12_执行模型浅析 JS的执行环境与作用域 javascript高级程序第三版学习笔记[执行环境.作用域] 在javascript ...
- Python学习之路——函数对象作用域名称空间
一.函数对象 # 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象 # 函数对象的应用 # 1 可以直接被引用 fn = cp_fn # 2 可以当作函数参数传 ...
- Spring实现Ioc的多种方式--控制反转、依赖注入、xml配置的方式实现IoC、对象作用域
Spring实现Ioc的多种方式 一.IoC基础 1.1.概念: 1.IoC 控制反转(Inversion of Control) IoC是一种设计思想. 2.DI 依赖注入 依赖注入是实现IoC的一 ...
- jsp内置对象作用域白话演示
内置对象就是JSP中不需要自己定义和声明的对象,可以在JSP中直接使用.JSP中有9大内置对象,它们有两个常用的方法:setAttribute("key","value& ...
随机推荐
- Centos7中源码安装Nodejs
Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安装. [root@BobServerStation local]# yum -y install gcc gcc- ...
- 获取表单选中的值(利用php和js两种方式)
php代码中获取表单中单选按钮的值: (单选按钮只能让我们选择一个,这里有一个“checked”属性,这是用来默认选取的,我们每次刷新我们的页面时就默认为这个值.) 例: <form name= ...
- boost源码剖析----boost::any
boost源码剖析----boost::any 有的时候我们需要有一个万能类型来进行一些操作,这时候boost::any就派上用场了. boost::Any testInt(10); int val ...
- Git Permission denied (publickey).
有可能, jenkins slave service or jenkins service的logon 账户没有设置好
- 如何在普清的屏上调试CSS样式二倍图背景
背景: 最近就遇到一个同事的项目,还是像平常一样小心切图,认真对像素. 一切测试都没有问题,顺利上线. 但是,上线之后,产品经理跑过来说,有BUG. BUG描述:(不认为是BUG) 前端页面上的图标是 ...
- Notepad++的列编辑功能
转自:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/index.html http://www.crifan.c ...
- 剑指offer——变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 问题分析 由于每次跳的阶数不确定,没有一个固定的规律,但是可以了解的是后一次跳 ...
- 自己封装的 recyclerView的 BaseAdapter,带item点击和长按事件。
第一种是把创建viewholder的步骤给子类来做. 第二种是参照陈宇明的博客,试着只暴露给子类设置holder属性的方法.(还未测试条目中控件的点击事件能否成功) 代码如下: /** * Creat ...
- SourceTree 免登录跳过初始设置
SourceTree 安装之后需要使用账号登陆以授权,以前是可以不登陆的,但是现在是强制登陆. 虽然是免费授权,但是碰上不可抗力因素,登陆不是很方便,这里记录一下跳过这个初始化的步骤. 安装之后,转到 ...
- spring netty-socket.io
spring-nettysocketio.xml文件内容如下: <?xml version="1.0" encoding="UTF-8"?>< ...