首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

施用struts2时为什么使用ActionContextCleanUp filter

2012-11-20 
使用struts2时为什么使用ActionContextCleanUpfilter使用struts2时为什么使用ActionContextCleanUp??? fil

使用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>

热点排行