捣鼓了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
结果:
OVER! 总算搞定,感谢兽哥无私的帮助,全是眼泪啊、、、