整合了Spring/Webwork/Sitemesh/FreeMarker的相关配置
web.xml需要配置3个filter,这3个filter的顺序不能够颠倒,必须按照如下顺序:其中ActionContextCleanUp设定当webwork执行完毕后延迟清理ActionContext,以便于sitemesh使用ActionConext,sitemesh则是在Webwork执行完毕后进行模版的组装。此处使用的是FreeMarker作为网站模版,FreeMarkerPageFilter是webwork2.2提供的增强类(推荐使用freemarker作为网站模版),如果使用JSP作为网站模版,则改为com.opensymphony.module.sitemesh.filter.PageFilter。
这3个filter的mapping URL都必须是/*,这是由于webwork的filter使用的特殊资源从/webwork/*这样的URL网络位置获得,因此webwork filter需要对所有URL截获,相应的,其他两个filter也需要对所有URL进行截获。
JspSupportServlet是一个辅助类,在使用FreeMarker作为View的时候,需要设置该Servlet,以便于FreeMarker使用JSP Tag。dwr是一个AJAX分布式调用框架,Webwork使用dwr实现AJAX方式的remote form验证。
< xml version="1.0" encoding="UTF-8" >
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>com.opensymphony.webwork.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
dwr.xml也放在WEB-INF目录下面,用来配置通过dwr暴露给客户端JavaScript的服务器端对象,下面的默认配置用来支持webwork的remote form验证。
< xml version="1.0" encoding="UTF-8" >
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="validator">
<param name="class" value="com.opensymphony.webwork.validators.DWRValidator"/>
</create>
<convert converter="bean" match="com.opensymphony.xwork.ValidationAwareSupport"/>
</allow>
<signatures>
<![CDATA[webwork:
import java.util.Map;
import com.opensymphony.webwork.validators.DWRValidator;
DWRValidator.doPost(String, String, Map<String, String>);
]]>
</signatures>
</dwr>
sitemesh.xml也放在WEB-INF下面,配置sitemesh的行为,使用何种页面解析器和装饰器,也可以不要该文件,sitemesh.jar里面自带的默认的配置,包含更多装饰器,如果不需要那些更多的装饰器,则最好自己配置,避免多个装饰器调用造成的无谓性能损失。
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml"/>
<excludes file="${decorators-file}"/>
<page-parsers>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper>
</decorator-mappers>
</sitemesh>
decroators也放在WEB-INF下面,配置装饰器装饰哪些URL
<decorators defaultdir="/WEB-INF/decorators">
<excludes>
<pattern>/css/*</pattern>
<pattern>/js/*</pattern>
<pattern>/images/*</pattern>
<pattern>/dojo/*</pattern>
<pattern>/webwork/*</pattern>
<pattern>/config-browser/*</pattern>
</excludes>
<decorator name="main" page="main.ftl">
<pattern>*.action</pattern>
</decorator>
</decorators>
分享到:
相关推荐
**配置Struts2 Sitemesh插件** 1. 将`struts2-sitemesh-plugin-2.2.1.1.jar`添加到项目的类路径中。 2. 在`struts.xml`配置文件中启用插件: ```xml <constant name="struts.plugin.packages" value="org.apache....
### Struts2整合SiteMesh技巧 #### 概述 在Web开发中,为了实现页面布局的统一性与可维护性,通常会...通过以上步骤,即可完成Struts2与SiteMesh的基本整合,从而实现页面布局的一致性和美观性,提高项目的可维护性。
2. **配置Struts2**:在struts.xml配置文件中,添加SiteMesh插件的配置,使Struts2知道需要使用SiteMesh进行页面装饰: ```xml <constant name="struts.action.excludePattern" value="/decorator.*"/> ...
2. 配置Struts2的struts-default.xml,启用Sitemesh拦截器,如`<interceptor-ref name="decorator"/>`。 3. 创建一个装饰器配置文件,如WEB-INF/decorators.xml,定义哪些页面使用哪种装饰器。 4. 在Action类或结果...
3. **配置struts2-sitemesh-plugin**:在Struts2的配置文件(struts.xml)中启用Sitemesh插件。这将告诉Struts2如何与Sitemesh协作。 ```xml <constant name="struts.plugins" value=...
Struts2、Spring2.5 和 SiteMesh 是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的Web应用程序架构。在这个小DEMO中,我们将深入探讨这三个框架的集成和工作原理。 **Struts2** 是一个基于MVC...
1. **Struts2的配置**:了解如何配置struts.xml文件,包括Action的定义、结果类型、拦截器链等。 2. **Sitemesh的配置**:学习如何配置sitemesh.xml文件,设置装饰器路径,以及定义哪些页面需要被装饰。 3. **...
在源码中,可以看到Sitemesh配置和过滤器的实现,以及如何与Struts2整合,确保每个Action的结果都能被正确装饰。 3. **FreeMarker模板引擎**:FreeMarker是一个基于模板的语言,它与Java代码分离,使得视图层更加...
而Struts2 SiteMesh 插件则使得整合 SiteMesh 和 Struts2 框架变得更加方便,让开发者可以充分利用 SiteMesh 的功能来提升用户体验。 首先,我们需要理解 Struts2 是一个基于 Model-View-Controller(MVC)设计模式...
在配置Struts2时,需要创建或修改`struts.xml`文件来定义Action、结果类型和拦截器栈。示例中的`struts.xml`包含了一个过滤器配置,用于设置字符编码,这有助于处理中文字符。 此外,还有一些额外的依赖库,如`...
3. 配置Struts2,设置Action类,定义Action拦截器,结合Spring进行依赖注入。 4. 配置Hibernate,创建实体类,编写映射文件,初始化SessionFactory。 5. 使用Sitemesh定义全局布局模板,并在Struts2配置中指定装饰器...
- **过滤器顺序**:在`web.xml`中,过滤器的配置顺序很重要,通常情况下,Sitemesh过滤器应当在Struts2过滤器之前配置,以确保Sitemesh能正确地处理视图。 - **装饰器选择**:合理配置`decorators.xml`文件中的模式...
接着,配置Struts2的核心过滤器是在`web.xml`文件中进行的,这是Web应用的部署描述符。配置这个过滤器使得所有请求都能通过Struts2处理,从而实现MVC的控制层。 部署Struts2应用后,你将在浏览器中看到应用的主页面...
web.xml是Web应用的部署描述符,它用于配置Struts2的核心过滤器FilterDispatcher以及其他相关的初始化参数。 ##### 3.2 配置struts.xml struts.xml是Struts2的核心配置文件,它定义了Action的映射关系以及所使用的...
Struts2、Spring2、Hibernate3、Velocity和Sitemesh是经典的Java Web开发框架组合,它们各自在Web应用的不同层面提供了强大的支持。这个集成框架代码集合了这些技术,旨在提供一个高效、灵活和可扩展的开发环境。 1...
Struts2、Spring2、Hibernate3和Sitemesh是经典的Java Web开发框架组合,它们在构建企业级应用中发挥着重要作用。MyEclipse则是一款强大的集成开发环境,为这种组合提供了便捷的开发支持。 Struts2是MVC(模型-视图...
Struts2的设计理念和工作流程与WebWork框架相似,可以认为Struts2是对WebWork的升级和扩展,吸收了WebWork的优点,同时改进了Struts1的一些不足,如更简洁的配置和更强大的动作映射。 8. **集成其他框架**: ...