Nutz支持Velocity

捣鼓了N久,总于有点成效,记录下来以供不时之需。

前提:了解nutz,及其相关注解配置(Nutz官网:http://code.google.com/p/nutz/)

第一步:准备jar包 

项目结构

第二步:添加配置文件

    1.添加velocity.properties配置文件

    

#设置模版目录

file.resource.loader.path = /

#模板文件目录

webapp.resource.loader.path=/

#输入,输出编码

input.encoding=UTF-8 

output.encoding=UTF-8

    2.配置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">
	
	<!-- 配置nutzmvc servlet -->
	<servlet>
		<servlet-name>nutzmvc</servlet-name>
		<servlet-class>org.nutz.mvc.NutServlet</servlet-class>
		<init-param>
			<param-name>modules</param-name>
			<param-value>cn.com.nutz.velocity.module.MainModule</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>nutzmvc</servlet-name>
		<url-pattern>*.nutz</url-pattern>
	</servlet-mapping>

	<!-- 配置velocity servlet -->
	<servlet>
		<servlet-name>velocity</servlet-name>
		<servlet-class>
			org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
		<init-param>
			<param-name>org.apache.velocity.properties</param-name>
			<param-value>/WEB-INF/velocity.properties</param-value>
		</init-param>
		<load-on-startup>10</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>velocity</servlet-name>
		<url-pattern>*.vm</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

注: VelocityViewServlet 为 Velocity 用作一种视图层技术提供了更复杂的支持,既可以与 JSP 技术联合使用也可以代替后者。使用  VelocityViewServlet 可以减少许多冗余代码。

第三步:编写测试代码

1.nutz必须提供的主模块入口类 MainModule.java

package cn.com.nutz.velocity.module;

import org.nutz.mvc.annotation.Encoding;
import org.nutz.mvc.annotation.IocBy;
import org.nutz.mvc.annotation.Modules;
import org.nutz.mvc.ioc.provider.ComboIocProvider;

/**
 * 入口模块,web.xml中需配置
 * @author xxs
 *
 */
@Modules({ TestVeloctiyModule.class }) //声明应用的所有子模块
@IocBy(type = ComboIocProvider.class, args = {
		"*org.nutz.ioc.loader.annotation.AnnotationIocLoader",
		"cn.com.nutz.velocity.module" })
@Encoding(input = "UTF-8", output = "UTF-8")
public class MainModule {

}

2.子模块类   TestVeloctiyModule.java

package cn.com.nutz.velocity.module;

import java.util.ArrayList;
import java.util.List;

import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;

/**
 * 子模块
 * @author xxs
 *
 */
@IocBean
@At("test")
public class TestVeloctiyModule {

	//返回字符串
	@At("/returnStr")
	@Ok("forward:/testStr.vm")//必须为内部重定向,否则obj对象为空。redirect: 伤不起啊 -_-!
	public String returnStr(){
		return "return msg";
	}
	
	//返回集合
	@At("/returnItems")
	@Ok("forward:/testItems.vm")
	public List<String> returnItems(){
		List<String> list=new ArrayList<String>();
		list.add("item 1");
		list.add("item 2");
		list.add("item 3");
		//编写相应的业务实现
		return list;
	}
}

 

第四步:编写模板文件

1.testStr.vm 

打印出:$!{obj}

2.testItems.vm

#foreach($temp in $!{obj})
	$temp<br/>
#end

第五步:发布项目运行

浏览器输入:

http://localhost:8080/test/returnStr.nutz

http://localhost:8080/test/returnStr.nutz

结果:

Nutz支持VelocityNutz支持Velocity

 OVER! 总算搞定,感谢兽哥无私的帮助,全是眼泪啊、、、

你可能感兴趣的:(velocity,nutz)