SpringMVC 集成velocity


前言

       沒有美工的時代自然少不了對應的模板視圖開發,jsp時代我們用起來也很爽,物極必反,項目大了,數據模型復雜了jsp則無法勝任。

 

開發環境

      idea2016、jdk1.8、tomcat8.0.35

      spring 4.3.6、velocity1.6、velocity-tools 2.0

 

SpringMVC集成velocity

1、VelocityViewResolver。

<!--VelocityViewResolver視圖配置-->
    <!--<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">-->
        <!--<property name="suffix" value=".vm"/>-->
        <!--<property name="prefix" value=""/>-->
        <!--<property name="contentType" value="text/html;charset=UTF-8"/>-->
    <!--</bean>-->

 

2、VelocityLayoutViewResolver。也就是可以自定義模板布局。和VelocityViewResolver相比較的話多了一個layout.vm,在WEB-INF/views/layout/layout.vm配置。

<!--VelocityLayoutViewResolver-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
        <property name="suffix" value=".vm"/>
        <property name="prefix" value=""/>
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="layoutUrl" value="layout/layout.vm"/>
    </bean>

 

3、完整的springmvc-servlet.xml

 <context:component-scan base-package="com.autohome.controller" />
    <!-- 注解驅動 -->
    <mvc:annotation-driven />


    <!--velocity模板配置-->
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath" value="/WEB-INF/views/"/>
        <property name="configLocation" value="classpath:velocity.properties"/>
        <property name="velocityProperties">
            <props>
                <prop key="input.encoding">UTF-8</prop>
                <prop key="output.encoding">UTF-8</prop>
            </props>
        </property>
    </bean>
    <!--VelocityViewResolver視圖配置-->
    <!--<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">-->
        <!--<property name="suffix" value=".vm"/>-->
        <!--<property name="prefix" value=""/>-->
        <!--<property name="contentType" value="text/html;charset=UTF-8"/>-->
    <!--</bean>-->

    <!--VelocityLayoutViewResolver-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
        <property name="suffix" value=".vm"/>
        <property name="prefix" value=""/>
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="layoutUrl" value="layout/layout.vm"/>
    </bean>

4、pom.xml

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.3.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity-tools</artifactId>
      <version>2.0</version>
    </dependency>
  </dependencies>

 我的layout.vm. 視圖頁嵌套的內容就在$screen_content中渲染

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>

    </head>
    <body>
        <div>header</div>
        <div>
            $screen_content
        </div>
        <div>footer</div>
    </body>

</html>

index.vm

<h2>${msg}</h2>

layout.vm的渲染結果

 

總結

      1、pom下載spring-context.jar包時並沒有自動加載spring-context-support.jar  然后我在springmvc-servlet編寫velocityconfig VelocityConfigurer類時找不到configLocation屬性。后加上spring-context jar包后OK。

      2、既然在velocity.properties文件中已經配置了編碼格式,還要在velocityconfig中繼續配置編碼方式,如果不配置的話則拋一個spring.vm相關的異常, 不知道這個設計何為。

 

參考資料

http://shishi11.iteye.com/blog/869290

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM