Velocity + Struts2 + Sitemesh + Spring + Hibernate集成如何配置web.xml?

时间:2009-08-28 15:33:08

标签: struts2

我需要创建一个使用Struts2作为MVC的应用程序,使用Hibernate进行数据访问并在业务逻辑中使用Spring。 而且我还需要使用Velocity作为presentaion和sitemesh进行模板化。

集成Hibernate和Spring很容易,但是将spring,sitemesh和velocity与Struts2集成在一起 我不清楚,但我可以使用Struts2单独使用velocity,spring和sitemsh。

当然如本例http://www.rkcole.com/articles/struts/crudTutorial/step4.html所示 sitemesh和spring可以与struts2集成,将web.xml配置为

<listener> 
<listener-class> 
org.springframework.web.context.ContextLoaderListener 
</listener-class> 
</listener> 

<filter> 
<filter-name>sitemesh</filter-name> 
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> 
</filter> 


<filter-mapping> 
<filter-name>sitemesh</filter-name> 
<url-pattern>/*</url-pattern> 
<dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

现在我的任务是将速度与这种组合相结合...............

通常要集成Velocity和struts2,我使用以下

<servlet-class> 
org.apache.velocity.tools.view.servlet.VelocityViewServlet 
</servlet-class> 
<load-on-startup>10</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>velocity</servlet-name> 
<url-pattern>*.vm</url-pattern> 
</servlet-mapping> 

............................................... ..............................................

现在我的问题是如何设置`

 <servlet-mapping>

`,它仅用于速度或simemesh或必须设置不同

请让我知道如何继续,如果可以请回复完整的web.xml和其他步骤。

问候

T.Thamilvaanan

1 个答案:

答案 0 :(得分:3)

雅,最后我经过大量阅读和搜索后得到了这个web.xml ............

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


<!-- A part in Spring Integration-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>



<!-- All the filters starts here-->

<filter>
    <filter-name>struts-cleanup</filter-name>
    <filter-class>org.apache.struts2.dispatcher.StrutsPrepareFilter</filter-class>
</filter>


<!-- This is used to integrate sitemesh with Struts2-->

<!-- 
I am using Velocity to create sitemesh decorators so I have to use 

  VelocityPageFilter    to integrate

  Sitemesh  (i.e. Sitemesh in velocity)  +  Struts2    
In the web.xml, the VelocityPageFilter should be placed between the
  ActionContextCleanUp (StrutsPrepareFilter since 2.1.3  )  and
and the    FilterDispatcher (StrutsExecuteFilter  since 2.1.3)  
 -->

<filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>org.apache.struts2.sitemesh.VelocityPageFilter</filter-class>
</filter>

<filter>       
<filter-name>struts2</filter-name>   
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> 
</filter> 

<filter-mapping>
<filter-name>struts-cleanup</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>struts</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>



<!-- Spring Integration-->
 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>



    <!--Finally since I am velocity pages in struts2 MVC I am using
 VelocityViewServlet        to Integrate struts2 with Velocity  -->

  <servlet>
  <servlet-name>velocity</servlet-name>
  <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet
  </servlet-class>
  <init-param>
    <param-name>org.apache.velocity.toolbox</param-name>
    <param-value>/WEB-INF/tools.xml</param-value>
  </init-param>
   <init-param>
    <param-name>org.apache.velocity.properties</param-name>
    <param-value>/WEB-INF/velocity.properties</param-value>
  </init-param>
  </servlet>


<!-- Map *.vm files to Velocity -->
<servlet-mapping>
  <servlet-name>velocity</servlet-name>
  <url-pattern>*.vm</url-pattern>
</servlet-mapping>



    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>


    <welcome-file-list>
        <welcome-file>index.vm</welcome-file>
    </welcome-file-list>


   </web-app>

希望这很好,会测试并让你知道。

干杯............

此致

Thamilvaanan