为了使用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>
分享到:
相关推荐
5. ActionContextCleanUp过滤器的作用: `ActionContextCleanUp`过滤器是Struts2的一部分,它用于清理ActionContext,确保每次HTTP请求都有一个干净的上下文环境,防止上一次请求的数据影响当前请求,同时有助于...
3. 拦截器作用于Action请求,过滤器作用范围更广。 4. 拦截器可以访问Action上下文和值栈,过滤器则不能。 **使用Struts2框架的原因**: 1. MVC架构清晰,开发流程明确,便于理解和控制。 2. 使用OGNL(Object-...
`ActionContextCleanUp`的作用是清理当前线程的`ActionContext`,确保每个请求的上下文环境独立。`FilterDispatcher`则根据`ActionMapper`来确定应该调用哪个Action。`ActionMapper`从HTTP请求中解析出Action映射,...
3. 拦截器作用于Action请求,过滤器可应用于所有请求。 4. 拦截器能访问Action上下文和值栈,过滤器则不能。 5. 拦截器在Action生命周期内可多次调用,过滤器仅在容器初始化时调用。 Struts1与Struts2的比较: 1. ...
- **作用**:此过滤器用于清理Struts框架中的临时对象,确保每次请求都是干净的环境。 - **配置**:需在Struts2的核心过滤器配置之前完成,以确保正确清理。 **FilterDispatcher** ```xml <filter-name>struts ...
- 拦截器只作用于Action请求,过滤器能处理所有类型请求。 - 拦截器可以访问Action上下文和值栈中的对象,过滤器则不行。 - 在Action生命周期中,拦截器可以多次调用,而过滤器在容器初始化时仅调用一次。 4. **...
`ActionContextCleanUp`的作用是与`FilterDispatcher`协作,提供更灵活的SiteMesh整合,以及允许SiteMesh先于其他操作运行。 总的来说,Struts2.1.8是一个成熟的Java Web开发框架,它简化了MVC应用的构建,提供了...
ActionContextCleanUp过滤器的作用是清理Action中的属性,确保它们在JSP页面中仍然可访问,提供了一种跨请求共享数据的方法。通过这样的设计,Struts2提供了一个高度可定制和可扩展的框架,使得开发者能够更加专注于...
3. 拦截器仅对Action请求生效,过滤器可作用于所有请求。 4. 拦截器能访问Action上下文和值栈中的对象,过滤器则不能。 5. 在Action生命周期中,拦截器可多次调用,过滤器仅在容器初始化时调用一次。 【Struts1与...
- 拦截器仅作用于Action请求,过滤器能处理所有请求。 - 拦截器可以访问Action上下文和值栈,过滤器不行。 - 拦截器在Action生命周期中可多次调用,过滤器只在容器初始化时调用一次。 4. **Struts1与Struts2的...
5. `FilterDispatcher`将请求转发给`ActionMapper`,`ActionMapper`的作用是解析请求URL,判断是否需要Struts2进行处理。 6. 如果`ActionMapper`确认请求需要处理,`FilterDispatcher`会停止后续过滤器链的执行,并...
Struts2中默认包含的过滤器有ActionContextCleanUp,这是一个可选过滤器,主要作用是在请求结束时清理与请求相关的上下文环境,这对于框架间的集成特别有帮助,例如在使用SiteMesh插件时。除此之外,还有其他自定义...
Struts2是一个流行的...总的来说,掌握Struts2的基本知识包括理解其核心组件的作用,配置文件的结构和作用,以及如何在IDE中进行有效的开发支持。这将有助于开发者更高效地开发和维护基于Struts2的Java web应用程序。
同时,`FilterDispatcher`还会负责调用`ActionContextCleanUp`过滤器来清理`ActionContext`。 **2. ActionContextCleanUp** 在每次请求结束时,`ActionContextCleanUp`会清除与当前请求相关的`ActionContext`,...
- **作用**: 确定如何获取Action实例,无论是在本地还是远程。 - **ActionInvocation**: - **功能**: 使用命令模式执行Action,负责拦截器的调用。 - **实现**: 通过继承`Invocation`接口实现对Action的调用逻辑...
ActionMapper的作用是确定请求与哪个Action相对应。如果需要,FilterDispatcher将请求传递给ActionProxy。ActionProxy通过Configuration Manager读取struts.xml配置文件,找到需要执行的Action类,例如,在用户注册...