springMVC spring mvc velocity的模板引擎
spring mvc支持velocity的模板引擎, 我們看下如何配置。
從pom.xml文件開始, 在pom文件中需要添加velocity和spring相關依賴:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>j</artifactId>
<groupId>hello</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hello-web</artifactId>
<packaging>war</packaging>
<name>hello-web Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>3.2.3.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- spring framework related dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- velocity related dependencies -->
<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>
</dependencies>
<build>
<finalName>hello-web</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
</connectors>
<scanIntervalSeconds>10</scanIntervalSeconds>
</configuration>
</plugin>
</plugins>
</build>
</project>
下一步需要配置web.xml文件:
<!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>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<!-- Override init parameter to avoid nasty -->
<!-- file locking issue on windows. -->
<servlet-name>default</servlet-name>
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<!-- spring mvc servlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
<description>spring mvc config file</description>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
在web.xml中指定的spring配置文件位置為spring/spring-mvc.xml, spring-mvc.xml文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="cn.outofmemory.controller"/>
<mvc:annotation-driven/>
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF"/>
<property name="configLocation" value="classpath:velocity.properties"/>
</bean>
<!--org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".vm"/>
<property name="prefix" value="/views"/>
<!-- 使用springMacro的對象 -->
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="requestContextAttribute" value="content"/>
<property name="exposeRequestAttributes" value="true"/>
<property name="exposeSessionAttributes" value="true"/>
<property name="contentType" value="text/html;charset=UTF-8"/>
<!-- spring的日期格式化 -->
<property name="dateToolAttribute" value="dateTool"/>
<!-- velocity toolbox -->
<property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/>
</bean>
</beans>
請注意看注釋內容, 在VelocityViewResolver bean中指定了toolbox.xml, 其內容如下:
<?xml version="1.0" encoding="utf-8"?>
<toolbox>
<tool>
<key>date</key>
<scope>request</scope>
<class>
org.apache.velocity.tools.generic.DateTool
</class>
<parameter name="format" value="yyyy-MM-dd HH:mm:ss"/>
</tool>
<tool>
<key>link</key>
<scope>request</scope>
<class>org.apache.velocity.tools.view.tools.LinkTool</class>
</tool>
<tool>
<key>stringUtils</key>
<scope>request</scope>
<class>org.apache.velocity.util.StringUtils</class>
</tool>
<tool>
<key>math</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.MathTool</class>
</tool>
<tool>
<key>esc</key>
<scope>request</scope>
<class>org.apache.velocity.tools.generic.EscapeTool</class>
</tool>
<tool>
<key>params</key>
<scope>request</scope>
<class>org.apache.velocity.tools.view.tools.ParameterParser</class>
</tool>
</toolbox>
另外我們還需要在resources中配置velocity.properties文件,設定velocity的選項, 其內容如下,你可以根據自己需要來做相應的調整
tools.view.servlet.layout.directory = /WEB-INF/templates/layout/ tools.view.servlet.layout.default.template = default.vm default.contentType=text/html;charset=utf-8 input.encoding = UTF-8 output.encoding = UTF-8 class.resource.loader.cache=false velocimacro.library.autoreload=true directive.set.null.allowed = true runtime.log.error.stacktrace = true runtime.log.warn.stacktrace = true runtime.log.info.stacktrace = true runtime.log.logsystem.class = org.apache.velocity.runtime.log.SimpleLog4JLogSystem runtime.log.logsystem.log4j.category = velocity_log
以上spring mvc + velocity相關配置就完成了,下面我們用一個具體的例子來做下測試:
新建一個Controller類,添加index方法:
package cn.outofmemory.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Created by yukaizhao on 2015/10/17.
*/
@Controller
public class IndexController {
/**
* 首頁處理方法
* @return 首頁對應的view名稱
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index() {
return "/index";
}
}
然后我們還需要在web項目的WEB-INF目錄下建好views目錄,并新建index.vm 文件:
<!doctype html>
<html>
<head>
<title>hello web application</title>
</head>
<body>
<h1>hello web application</h1>
</body>
</html>
運行項目即可看到vm模板引擎正常工作了, 本文源碼提供如下:
本文由用戶 admin 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!