Struts2的Action中访问servletAPI方式
2024-09-06 17:59:25
struts2的数据存放中心为ActionContext,其是每次请求来时都会创建一个ActionContext,访问结束销毁,其绑定在ThreadLocal上,由于每次访问web容器都会为每次请求创建一个独立的线程ThreadLocal,而ActionContext绑定在ThreadLocal上,所以各个ActionContext是相互独立和安全的,在ActionContext中还持有其他的域对象引用,如application,session等,ActionContext销毁时只销毁自己内部创建的如值栈,request等数据,而持有的引用主体并不会销毁,其持有其他域引用,主要是方便用户操作其他域API,其核心原理如下图所示,只是为了方便用户操作API,还据此提供了3种不同访问API的方式
1、通过ActionContext对象获取
页面获取还是和以前一样,直接在jsp页面通过EL表达式获取各个域中的值
2、通过ServletActionContext获取,这个其实就是struts2封装的一个工具类,为了更便捷的操作原生servletAPI,不过struts不推荐使用耦合的原生API,希望使用解耦的struts2的方式,不过内部都一样,只要喜欢用哪种都无所谓
下图为原生servletAPI获取方式:
3、实现接口的方式,这种方式最不推荐,其需要自己来实现这种常用接口,那还用框架干嘛,了解即可,如ServletRequestAware,后缀都是以Aware结尾的
最新文章
- jquery ui 中的插件开发
- navigator对象
- HDU-4527 小明系列故事——玩转十滴水 模拟
- Activiti系列:如何把Activiti工程转换为maven工程以解决依赖项找不到的问题
- https://github.com/akullpp/awesome-java
- 一个朋友js图表开发遇到的问题 解决思路c和js
- linux 系统获取网络ip, mask, gateway, dns信息小程序
- iOS中@class #import #include 简介
- UNION ALL
- poj 1604 Just the Facts
- ORACLE函数之日期时间运算函数
- JavaScript中var变量引用function与直接声明function
- __libc_csu_init函数的通用gadget
- PHPsocket、CURL、File_get_contents采集
- UOJ.26.[IOI2014]Game(交互 思路)
- 去n的第一个出现的1
- IntelliJ IDEA SVN
- 清除 Windows 系统垃圾的 bat
- max-sum-of-sub-matrix-no-larger-than-k
- Mac下Homebrew安装的软件放在什么地方