天天看點

Spring整合Velocity

最近在整合velocity模闆引擎寫的前端頁面,遇到的一些小坑,記錄一波:

一、velocity是什麼?

官方網站:http://velocity.apache.org/

官方文檔:http://velocity.apache.org/engine/devel/user-guide.html#The_Mud_Store_Example

中文翻譯文檔:http://ifeve.com/apache-velocity-dev/

二、什麼是springMVC?

這個自己體會

三、正式開始整合

1、導入依賴

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity-tools</artifactId>
      <version>2.0</version>
    </dependency>
           

2、在web.xml中配置springMVC

<!-- 配置DispatcherServlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置springMVC需要加載的配置檔案-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
</servlet>
           

3、在spring-mvc.xml中配置velocity

<!--velocity-->
    <bean id="velocityConfig" 
          class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <!--這裡配置vm檔案的位置-->
        <property name="resourceLoaderPath" value="WEB-INF/templates"/>
        <!--這裡配置velocity的其他屬性,比如輸入輸出字元-->
        <property name="configLocation" value="classpath:velocity.properties"/>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="cache" value="false"/>
        <property name="prefix" value="" />
        <property name="suffix" value=".vm"/>
    </bean>
           

4、velocity.properties(這裡隻配置簡單的編碼,其他屬性再另行配置)

#這裡隻配置簡單的編碼
input.encoding=UTF-8
output.encoding=UTF-8
           

5、然後編寫個controller去調用模闆代碼吧,這裡就不給出來了。

注意:WEN-INF下面的檔案用戶端不能直接引用,需要經過服務端去分發跳轉。

四、velocity的簡單用法

前後端共享基于context容器,可以在java代碼中往裡面存值,然後在vm檔案中擷取,這是velocity的基本用法。

1、變量:使用$聲明變量,還可以用$取出velocityContext中的值。

##聲明變量

#set($name = "hello") 
##引用變量

$name    ##不推薦
${name}  ##推薦

$!name    ##不推薦
$!{name}  ##推薦
           

注意:${var}擷取變量時,若變量為空則原樣輸出。

           $!{var}擷取變量時,若變量為空則變成空白輸出。

2、循環

#foreach ( $item in $list )
    ---
    $item           ##每一項
    $velocityCount  ##目前次數
    ---
#end
           

 3、條件控制

#if (condition)
    ---
#elseif(condition)
    ---
#else
    ---
#end 
           

4、宏,可以了解為函數

##聲明宏
#macro(sayHello $name)
    hello $name
#end


##使用宏
#sayHello("nick")
           

5、parse和include

#parse("header.vm")    ##解析後輸出
#include("header.vm")  ##原樣輸出,沒有經過velocity
           

#個人了解,若有錯誤的地方,請指教。

繼續閱讀