1. ThreadLocal:该类提供了线程局部(thtead-local)变量。threadLocal是一个容器,该容器中存放的数据可以保证线程安全。

案例如:

public class ThreadLocalDemo {
public static void main(String[] args) {
final ThreadLocal<Integer> tl = new ThreadLocal<Integer>();
//向ThreadLocal中存放数据
tl.set(20);
new Thread(){
public void run() {
tl.set(100);
//获取数据
System.out.println(Thread.currentThread().getName()+tl.get());
}
}.start();
//获取ThreadLocal中的数据
System.out.println(Thread.currentThread().getName()+tl.get());
}
}

2. 在struts2中,相比于servlet做很多处理,比如说:获取数据,数据封装,数据转换等。这些功能都是通过struts的拦截器实现的,并且在这个过程中都是对数据进行处理的。在struts2中,数据的迁移(从 request 中到struts中--actionContext)工作是通过ActionContext来完成的。struts2中所有处理数据的工作都是从action context获取的。

3.  ActionContext就是一个容器。是struts2中的上下文对象,ActionContext是map结构对象。是线程安全的对象,在struts2中,ActionContext是贯穿action整个执行流程。每次请求都会新创建ActionContext并且将servletApi中的数据装如actionContext,在执行完成后将数据重新装如servletApi。所以struts2的执行效率相比servlet更低。但是,线程安全。

4.ActionContext中的6大对象:

  (1) request : 存放请求域中的数据。

  (2) session : 存放回话域中的数据。

  (3) application: 存放全局域中的数据。

  (4) parameter : 存放请求数据。

  (5) attr : 存放以上4个域中的数据。

  (6) ValueStack: 值栈

  

  

  

  

struts2 之 ThreadLocal 和 ActionContext的更多相关文章

  1. java之struts2的ThreadLocal和ActionContext

    在之前的学习中,我们知道struts2可以将表单中的数据自动设置到处理类的属性上,还有类型转换等其他功能.那么struts2是怎样做这件事情的呢? struts2完成这些功能是通过拦截器来完成的,并且 ...

  2. struts2中 ServletActionContext与ActionContext区别

    1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息, ...

  3. ThreadLocal(关于struts2的ThreadLocal,实际上Jdk1.2就有了)

    ThreadLocal是通过在不同线程中操作变量的副本,来达到线程安全的目的,是用空间资源换时间资源的方式.今天在看struts2源码的时候,发现ActionContext中,就持有一个静态的Thre ...

  4. Struts2之ValueStack、ActionContext

    今天在看Action获取Resquest.Response时,发现了一个词:值栈.于是今天一天都在看,了解了值栈不仅能知道Action怎么获取request.response等这些,还会了解OGNL语 ...

  5. struts2 的 ServletActionContext 和 actionContext,服务器代码测试, redirect 、dispatcher、chain、redirectAction

    一.ServletActionContext  和 actionContext HttpServletRequest request=ServletActionContext.getRequest() ...

  6. Struts2中 ValueStack、ActionContext、ServletContext、request、session等 表格解析

    变量 从ActionContext中获得 生命周期 用Ongl来读取值 使用ServletConfigInterceptor来注入 ActionContext类 静态方法ActionContext. ...

  7. java框架学习系列

    这篇文章的目的主要是作为一个框架学习的索引,方便查找及顺序学习 一.struts2学习 1. java之struts框架入门教程 2. java之struts2的执行流程讲解 3. java之stru ...

  8. 【struts2】ActionContext与ServletActionContext

    1 再探ActionContext 我们知道,ActionContext是Action执行时的上下文,里面存放着Action在执行时需要用到的对象,也称之为广义值栈.Struts2在每次执行Actio ...

  9. struts2请求过程源码分析

    Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相 ...

随机推荐

  1. Hibernate框架单向多对多关联映射关系

    建立单向多对多关联关系    Project.java (项目表)                private Integer proid;                private Strin ...

  2. 第36篇 Asp.Net源码解析(一)

    上面两篇文章说了http协议和IIS处理,这次说下当IIS把请求交给Asp.net后的过程. AppManagerAppDomainFactory 当IIS把请求交给asp.net时候,如果AppDo ...

  3. CSS实现覆盖弹窗(效果如JQuery-UI的Dialog)

    原理:定义一个新的div用来覆盖整个页面,再把想要弹出的窗口放在这个div上面 1.定义一个div,设置其隐藏(display:none),用于覆盖整个页面,并设置其CSS属性为: #divBg { ...

  4. .NET平台和开发.

  5. 利用instsrv和srvany来手动安装服务

    Windows提供了两个小工具instsrv.exe和srvany.exe来把任何应用包装成windows服务.顾名思义instsrv(install service)是用来安装服务的,而srvany ...

  6. ReactiveSwift框架

    最近项目不多,所以就研究了一下RxSwift和RAS,RAC以前项目中用过了,在这里我就先简单的介绍一下什么是RAS.总述:在RAC 5.0这个版本,有了很大的改动,API已经重新命名.在和Swift ...

  7. Postman使用教程——调试网络接口的凶器

    postman是谷歌浏览器的一个插件,干什么用的呢?跟题目一样,就是用来调试网络接口的.在我们程序猿做程序的时候,如果做网络应用的开发,比如一些B/S.C/S,我们总会给别人一些网络接口,也会使用别人 ...

  8. laravel的延迟消息队列

    laravel的延迟消息队列 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能(http://mp.weixin.qq.com/s?__biz=MjM5ODYx ...

  9. 如何javascript获取css中的样式

    obj.style.height只能获取行间样式,但是我们要怎么获取写在css文件中的样式呢? 首先我们要用一个新的方法currentStyle.这个方法由current和style两个单词组成意思是 ...

  10. ThinkPHP数据字段的缓存问题

    在使用ThinkPHP开发应用时,在项目运行后会在应用(Application)目录下产生一个Runtime缓存文件夹 在生成Runtime之后,若改变数据表的字段结构,则在PHP代码中无法为新的字段 ...