`
ithero
  • 浏览: 145615 次
社区版块
存档分类
最新评论

配置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>

分享到:
评论

相关推荐

    struts2-sitemesh-plugin-2.2.1.1.jarstruts2

    **配置Struts2 Sitemesh插件** 1. 将`struts2-sitemesh-plugin-2.2.1.1.jar`添加到项目的类路径中。 2. 在`struts.xml`配置文件中启用插件: ```xml &lt;constant name="struts.plugin.packages" value="org.apache....

    Struts2整合SiteMesh技巧

    ### Struts2整合SiteMesh技巧 #### 概述 在Web开发中,为了实现页面布局的统一性与可维护性,通常会...通过以上步骤,即可完成Struts2与SiteMesh的基本整合,从而实现页面布局的一致性和美观性,提高项目的可维护性。

    Struts2整合SiteMesh

    2. **配置Struts2**:在struts.xml配置文件中,添加SiteMesh插件的配置,使Struts2知道需要使用SiteMesh进行页面装饰: ```xml &lt;constant name="struts.action.excludePattern" value="/decorator.*"/&gt; ...

    struts2+sitemesh例子

    2. 配置Struts2的struts-default.xml,启用Sitemesh拦截器,如`&lt;interceptor-ref name="decorator"/&gt;`。 3. 创建一个装饰器配置文件,如WEB-INF/decorators.xml,定义哪些页面使用哪种装饰器。 4. 在Action类或结果...

    struts2与sitemesh整合所需架包

    3. **配置struts2-sitemesh-plugin**:在Struts2的配置文件(struts.xml)中启用Sitemesh插件。这将告诉Struts2如何与Sitemesh协作。 ```xml &lt;constant name="struts.plugins" value=...

    一个Struts2+Spring2.5+SiteMesh的小DEMO

    Struts2、Spring2.5 和 SiteMesh 是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的Web应用程序架构。在这个小DEMO中,我们将深入探讨这三个框架的集成和工作原理。 **Struts2** 是一个基于MVC...

    Struts2.0 与 sitemesh的例子

    1. **Struts2的配置**:了解如何配置struts.xml文件,包括Action的定义、结果类型、拦截器链等。 2. **Sitemesh的配置**:学习如何配置sitemesh.xml文件,设置装饰器路径,以及定义哪些页面需要被装饰。 3. **...

    struts2sitemesh-freemarker 源码

    在源码中,可以看到Sitemesh配置和过滤器的实现,以及如何与Struts2整合,确保每个Action的结果都能被正确装饰。 3. **FreeMarker模板引擎**:FreeMarker是一个基于模板的语言,它与Java代码分离,使得视图层更加...

    SiteMesh 开发 struts插件

    而Struts2 SiteMesh 插件则使得整合 SiteMesh 和 Struts2 框架变得更加方便,让开发者可以充分利用 SiteMesh 的功能来提升用户体验。 首先,我们需要理解 Struts2 是一个基于 Model-View-Controller(MVC)设计模式...

    Struts2+Spring+Ibatis环境配置.doc

    在配置Struts2时,需要创建或修改`struts.xml`文件来定义Action、结果类型和拦截器栈。示例中的`struts.xml`包含了一个过滤器配置,用于设置字符编码,这有助于处理中文字符。 此外,还有一些额外的依赖库,如`...

    sitemesh+ spring2 + struts2 + hibernate 的 demo

    3. 配置Struts2,设置Action类,定义Action拦截器,结合Spring进行依赖注入。 4. 配置Hibernate,创建实体类,编写映射文件,初始化SessionFactory。 5. 使用Sitemesh定义全局布局模板,并在Struts2配置中指定装饰器...

    sitemesh和freemarker结合自我总结

    - **过滤器顺序**:在`web.xml`中,过滤器的配置顺序很重要,通常情况下,Sitemesh过滤器应当在Struts2过滤器之前配置,以确保Sitemesh能正确地处理视图。 - **装饰器选择**:合理配置`decorators.xml`文件中的模式...

    struts2学习--helloword

    接着,配置Struts2的核心过滤器是在`web.xml`文件中进行的,这是Web应用的部署描述符。配置这个过滤器使得所有请求都能通过Struts2处理,从而实现MVC的控制层。 部署Struts2应用后,你将在浏览器中看到应用的主页面...

    原创struts2讲义2.pdf

    web.xml是Web应用的部署描述符,它用于配置Struts2的核心过滤器FilterDispatcher以及其他相关的初始化参数。 ##### 3.2 配置struts.xml struts.xml是Struts2的核心配置文件,它定义了Action的映射关系以及所使用的...

    struts2+spring2+hibernate3+velocity+sitemesh集成框架代码

    Struts2、Spring2、Hibernate3、Velocity和Sitemesh是经典的Java Web开发框架组合,它们各自在Web应用的不同层面提供了强大的支持。这个集成框架代码集合了这些技术,旨在提供一个高效、灵活和可扩展的开发环境。 1...

    struts2 + spring2+hibernate3+sitemesh+myeclipse

    Struts2、Spring2、Hibernate3和Sitemesh是经典的Java Web开发框架组合,它们在构建企业级应用中发挥着重要作用。MyEclipse则是一款强大的集成开发环境,为这种组合提供了便捷的开发支持。 Struts2是MVC(模型-视图...

    Struts2基本原理

    Struts2的设计理念和工作流程与WebWork框架相似,可以认为Struts2是对WebWork的升级和扩展,吸收了WebWork的优点,同时改进了Struts1的一些不足,如更简洁的配置和更强大的动作映射。 8. **集成其他框架**: ...

Global site tag (gtag.js) - Google Analytics