使用struts2时为什么使用ActionContextCleanUp filter
使用struts2时为什么使用ActionContextCleanUp filter(转)
为了使用WebWork,我们只需要在web.xml配置FilterDispatcher一个过滤器即可,阅读一下FilterDispatcher的JavaDoc和源码,我们可以看到它调用了:
finally
{
ActionContextCleanUp.cleanUp(req);
}
在ActionContextCleanUp中,有这样的代码:
req.setAttribute(CLEANUP_PRESENT, Boolean.TRUE);
如果FilterDispatcher检测到这个属性,就不会清除ActionContext中的内容了,而由ActionContextCleanUp后续的代码来清除,保证了一系列的Filter访问正确的ActionContext.
文档中提到,如果用到SiteMesh的Filter或者其他类似Filter,那么设置顺序是:
ActionContextCleanUp filter
SiteMesh filter
FilterDispatcher
所以最后我们的web.xml应该类似这样:
<filter>
<filter-name>ActionContextCleanUp</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter</filter-class>
</filter>
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>ActionContextCleanUp</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
上一篇: nova 7 Pro配超广角双摄自拍:单反级BM3D降噪
下一篇: Java 传递参数
推荐阅读
-
前端使用mobx时,变量已经修改了,为什么组件还是没变化,map类型变量,对象类型变量的值获取问题(主要矛盾发生在组件使用时)
-
C#中LINQ多条件JOIN时为什么可以使用匿名类
-
C#中LINQ多条件JOIN时为什么可以使用匿名类
-
使用limit,offset分页场景时为什么会慢
-
斗牛士在斗牛时为什么要使用红色的布 蚂蚁庄园5月19日答案
-
诸葛亮多次使用火攻,为什么火烧藤甲兵时感叹自己会折寿?
-
为什么使用中间件下载时总是收到警告消息Object is in status Wait CRMERP中间件SAPMiddleware
-
使用limit,offset分页场景时为什么会慢
-
php 进行多图上传时,html文件中使用file 来接收文件为什么没有生成文件数组
-
php 进行多图上传时,html文件中使用file 来接收文件为什么没有生成文件数组