配置struts2和sitemesh

整合了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验证。

web.xml
< 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验证。
dwr.xml
< 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.xml
<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.xml
<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值