ActionContext
在每次执行Action的方法之前都会创建新的ActionContext对象,所以ActionContext是线程安全的。struts2是采用ThreadLocal模式来保存ActionContext,ThreadLocal变量为每个线程提供独立的变量值的副本,使得每个线程都可以独立的使用自己的副本,从而不会跟其他线程发送冲突(使用map进行实现的)。
ThreadLocal原理代码
ActionContext的6大对象
valueStack
是什么:ValueStack是ActionContext的一个对象,是栈结构,FILO(先进后出)
使用是:存放的就是Action对象,就是把Action的信息压入栈
注意点: 由于是ActionContext的根对象,所以如果采用OGNL访问,可以直接访问OGNL(Object Graph Navigation Language)
是什么:工作在视图层,用来取代页面中的 Java 脚本,简化数据的访问操作。
怎么用: 常和strus2标签合起来用
"#": 访问非根对象(is not valueStack)的属性,如 ActionContext 上下文加“#”前缀。
“%”符号是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是 OGNL表达式。struts标签库
UI标签
控制标签
<s:if test="表达式 1">
标签内容
</s:if>
<s:elseif test="表达式 2">
标签内容
</s:elseif>
<s:else>
标签内容
</s:else>
<s:iteractor></s:iteractor>
数据标签
<s:property value="">
<s:date name="#" format="yyyy年MM月dd日"/>
<s:include value="foot.jsp"></s:include>
类型转换(typeconvert)
自定义类型转换
Point(x,y)
转换机制贴代码:
校验
(实例表单校验)贴代码:
拦截器(Interceptor)
- 记录访问时间
- 记录访问量
- 登陆拦截
国际化
- jdk国际化贴代码
- struts2国际化实现贴代码
文件上传下载的问题
struts2中的文件上传下载:
Struts2默认采用Common-FileUpload组件来实现文件上传,只是在此基础之后做了一层封装。所以,之前依赖的jar包依然需要
commons-fileupload-1.3.1.jar,commons-io-2.2.jar
表单重复提交问题
团队分模块开发, 就是在xml配置文件的时候进行包含操作, 进行集成。