Spring渲染Velocity模版实例

本文介绍了Spring MVC中使用Velocity模板的步骤,包括Maven依赖配置、Request如何映射到Controller、VelocityController的实现以及如何定位模板并进行渲染输出。
摘要由CSDN通过智能技术生成

这篇文章适合的人:

  • 已经了解Spring MVC request 处理流程(参见 《Spring MVC请求处理流程》,该篇待续)
  • 用maven开发
在Controller返回ModelAndView对象后,我希望view层用velociyt模版展示,需要配置特殊的ViewResolver。以请求http://localhost/vmview.htm为例,分以下几块说明:

  1. maven配置
  2. request定位到Contoller
  3. controller如何处理
  4. 模版选择,渲染输出

1. maven 的dependency

 <properties>
		<org.springframework.version>2.5.6</org.springframework.version>
	</properties>


	<dependencies>

		<!-- servlet api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>

		<!-- Spring Framework -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.5</version>
		</dependency>
       <dependencies>

2. 让request定位到具体的Controller

web.xml配置:
	<!-- 配置上下文载入器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 配置DispatcherServlet -->
	<servlet>
		<servlet-name>demo</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>demo</servlet-name>
		<url-pattern>*.htm</url-pattern>
	</servlet-mapping>
ContextLoaderListner默认载入配置文件appName(项目名)-servlet.xml。

appName-servlet.xml配置:
        <bean name="/vmview.htm" class="com.tiemei.spring.demo.controller.VelocityController" />

	<!-- for velocity view -->
	<bean id="velocityConfig"
		class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
		<property name="resourceLoaderPath" value="/WEB-INF/templates/" />
	</bean>
	<bean id="vmViewResolver"
		class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
		<property name="cache" value="true" />
		<property name="prefix" value="" />
		<property name="suffix" value=".vm" />
		<property name="order" value="1" /> <!-- 多ViewResovler配置 -->
	</bean>
默认BeanNameUrlHandlerMapping,/vmview.htm路径的请求被分发到VelocityController。

3. VelocityController

public class VelocityController extends AbstractController {
	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		System.out.println("------------ enter VelocityController");

		List<String> list = new ArrayList<String>();
		list.add("one");
		list.add("two");
		list.add("three");
		return new ModelAndView("vmview", "list", list);
	}

}
 最后new MovdelAndView传入的第一个参数vmview在后续ViewSovler寻找对应view时用到。

4. 定位模版,渲染输出

第2步中的appName-servlet.xml定义了寻找模版的规则。会去/WEB-INF/templates/目录下寻找vmview.vm模版(模版名由第3步确定)。
vmview.vm内容:
<ul>
#foreach( $entry in $list )
    <li>$entry</li>
#end
</ul>
$list对应第三步中传入的变量名。
最终浏览器中输出:
  • one
  • two
  • three





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值