java之struts2的ThreadLocal和ActionContext
2024-10-20 03:30:38
在之前的学习中,我们知道struts2可以将表单中的数据自动设置到处理类的属性上,还有类型转换等其他功能。那么struts2是怎样做这件事情的呢?
struts2完成这些功能是通过拦截器来完成的,并且在这个过程中数据进行迁移的动作,数据从request对象中迁移到了处理类上。完成数据迁移是由ActionContext来完成的。
1.先学习下ThreadLocal
这个类提供了线程局部(thread-local)变量,ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。
public class ThreadLocalTest {
public static void main(String[] args) throws InterruptedException {
//ThreadLocal是一个容器
final ThreadLocal<Integer> tl = new ThreadLocal<>();
//设置值
tl.set(20);
new Thread(new Runnable() { @Override
public void run() {
tl.set(50);
System.out.println(Thread.currentThread().getName()+"===="+tl.get());
}
}).start();
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName()+"======"+tl.get());
}
}
执行结果:
通过以上案例可以知道,ThreadLocal中存放的数据是线程安全的。ThreadLocal是一种典型以空间换时间的办法来做到线程安全。
2.ActionContext是Action处理类执行的上下文对象
ActionContext是一个Map结构的对象,属于一个容器。ActionContext是线程安全的。并且ActionContext在struts2执行过程中负责数据的存储。
ActionContext机制是将ServletAPI中的数据进行了解耦,在Action执行过程中,struts2都从ActionContext中获取数据。那么实现线程安全,同时也降低了执行效率。
ActionContext对象中的重要的对象
另外,ThreadLocal的不错参考网址:
https://www.cnblogs.com/dolphin0520/p/3920407.html
最新文章
- IOS系列swift语言之课时五
- CNN笔记
- Ubuntu 12.10 配置MyEclipes 10.7环境(加破解)
- iOS Error
- CentOS 7 安装Redis 2.8.7
- Replace JSON.NET with ServiceStack.Text in ASP.NET Web API
- struts2的java文件中不能直接弹出script对话框
- ubuntu压缩解压
- 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结
- Vue + element-ui
- 用反射写自己的DataTable转为对应的Mod
- JAVA编程思想(2) - 操作符(一)
- Object-C定时器,封装GCD定时器的必要性!!! (一)
- win10- *.msi 软件的安装,比如 SVN安装报2503,2502
- 【noip模拟】tree
- Linux 安装zookeeper
- jpa @RepositoryRestResource
- redis的安装使用以及在python中操作redis
- java linux ftp问题
- JSON数据的解析和生成(Swift)
热门文章
- Go内置函数
- 第12组 Beta冲刺(1/5)
- D3.js的v5版本入门教程(第十二章)—— D3.js中各种精美的图形
- dockerfile文件语法命令
- spring入门篇
- CEF 访问需要认证网页或接口(在Request的Headers中添加认证Token)
- Python numpy 中常用的数据运算
- leetcode 10. Regular Expression Matching 、44. Wildcard Matching
- App installation failed (A valid provisioning profile for this executable was not found)
- 改进初学者的PID-测量的比例介绍