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

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…
在之前的学习中,我们知道struts2可以将表单中的数据自动设置到处理类的属性上,还有类型转换等其他功能.那么struts2是怎样做这件事情的呢? struts2完成这些功能是通过拦截器来完成的,并且在这个过程中数据进行迁移的动作,数据从request对象中迁移到了处理类上.完成数据迁移是由ActionContext来完成的. 1.先学习下ThreadLocal 这个类提供了线程局部(thread-local)变量,ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自…
1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServlet Http的请求(HttpServletRequest),响应(HttpServletResponse)操作. 我们需要在Action中取得request请求参数"username"的值: ActionContext context = ActionCo…
ThreadLocal是通过在不同线程中操作变量的副本,来达到线程安全的目的,是用空间资源换时间资源的方式.今天在看struts2源码的时候,发现ActionContext中,就持有一个静态的ThreadLocal,如下: public class ActionContext implements Serializable { static ThreadLocal actionContext = new ThreadLocal();} 所以推测一下struts2实现线程安全的方式也采用了这种方法…
今天在看Action获取Resquest.Response时,发现了一个词:值栈.于是今天一天都在看,了解了值栈不仅能知道Action怎么获取request.response等这些,还会了解OGNL语言的工作原理.在网上找了下,有一个帖子总结的挺好,所以先提前声明一下,我这篇主要参考是:https://my.oschina.net/u/1425737/blog/197939. 一.ActionContext ActionContext是Action的上下文,Struts2自动在其中保存了一些在A…
一.ServletActionContext  和 actionContext HttpServletRequest request=ServletActionContext.getRequest(); Httpsession session=request.getSession(); ActionContext actionContext=ActionContext.getContext(); Map<String,Object> map =actionContext.getSession(…
变量 从ActionContext中获得 生命周期 用Ongl来读取值 使用ServletConfigInterceptor来注入 ActionContext类 静态方法ActionContext. getContext() 一次Http请求 使用“#”加上key,如“#name” 无法注入 ValueStack类 ActionContext. getValueStack() 一次Http请求 直接填写来访问栈中对象的方法,或者使用top来直接获得栈中对象 无法注入 HttpServletReq…
这篇文章的目的主要是作为一个框架学习的索引,方便查找及顺序学习 一.struts2学习 1. java之struts框架入门教程 2. java之struts2的执行流程讲解 3. java之struts2的配置讲解 4. java之struts2的action的创建方式 5. java之struts2的数据处理 6. java之struts2的action优化配置 7. java之struts2的ThreadLocal和ActionContext 8. java之struts2之Servlet…
1 再探ActionContext 我们知道,ActionContext是Action执行时的上下文,里面存放着Action在执行时需要用到的对象,也称之为广义值栈.Struts2在每次执行Action之前都会创建新的ActionContext,在同一个线程里ActionContext里面的属性是唯一的,这样Action就可以在多线程中使用. 1.1 ActionContext的线程安全性 那么Struts2是如何保证ActionContext的线程安全性呢?看看ActionContext对象的…
Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定.性能优异.设计成熟的WEB框架. 我这里的struts2源码是从官网下载的一个最新的struts-2.3.15.1-src.zip,将其解压即可.里面的目录页文件非常的多,我们只需要定位到struts-2.3.15.1\src\core…