http://llying.iteye.com/blog/419685
用veloctiy代替jsp作为程序视图展示
这里我们需要一个velocity的扩展工具包veloctiy-tools,我们可以在velocity的官方网站中得到。
在web.xml中配置相关的servlet
<?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">
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/toolbox.xml</param-value>
</init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
</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>
toolbox.xml是实体映射文件后面会有说明
velocity.properties是配置文件
这里仅设置了字符编码
input.encoding=utf-8
output.encoding=utf-8
directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 1
velocimacro.library = /WEB-INF/conf/vm/VM_global_library.vm,/WEB-INF/conf/vm/anyplaceMacro.vm
velocimacro.permissions.allow.inline = true
velocimacro.permissions.allow.inline.to.replace.global = false
velocimacro.permissions.allow.inline.local.scope = false
velocimacro.context.localscope = false
这里我们创建了一个默认的vm模板文件
VM_global_library.vm 放置在/WEB-INF/conf/vm/根目录下 放置一些全局的数据
接下来我们创建一个Person类
public class Person {
private String name;
private int id;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
PersonService实际处理的对象
import java.util.ArrayList;
import java.util.List;
public class PersonService {
static private List<Person> PERSONS = new ArrayList<Person>();
static{
for (int i = 0 ; i<10;i++){
Person p = new Person();
p.setId(i);
p.setAge(i+3);
p.setName("p_name "+i);
PERSONS.add(p);
}
}
public List<Person> getPersons(){
return PERSONS;
}
public Person getPerson(int id){
for(int i = 0 ; i<PERSONS.size() ; i++){
Person p = PERSONS.get(i);
if(id==p.getId()){
return p;
}
}
return null;
}
public int parseInt(String id){
return Integer.parseInt(id);
}
}
现在再看看我们的映射文件应该可以很明确了
<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
<data type="string">
<key>personList</key>
<value>用户列表</value>
</data>
<tool>
<key>personService</key>
<scope>request</scope>
<request-path>/person/*</request-path>
<class>PersonService</class>
</tool>
</toolbox>
下面看看我们的两个模板
一个是显示全部 一个是显示单个
persons
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> $personList </TITLE>
</HEAD>
<BODY>
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
#foreach($person in ${personService.getPersons()})
<tr>
<td><a href="person.vm?id=${person.getId()}">${person.getName()}</a></td>
<td>${person.getAge()}</td>
<tr>
#end
</table>
</BODY>
</HTML>
person
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> $personList </TITLE>
</HEAD>
<BODY>
#set ($paramName = $request.getParameter("id"))
$paramName
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
#set( $person = ${personService.getPerson($personService.parseInt($paramName))} )
<tr>
<td>${person.getName()}</td>
<td>${person.getAge()}</td>
<tr>
</table>
</BODY>
</HTML>
接下来大家可以看看效果 不过很简陋
有一点令我十分不爽 就是String --> int转换 我自己写得方法
如果有知道更好的希望赐教
分享到:
相关推荐
整合velocity和jsp 通过不同视图解析器,返回不同视图
Velocity网页程序设计是李晓黎写的一本较早的书
本课程从velocity engine也就是velocity引擎开始, 先讲解velocity的基本使用以及基础语法 , 然后再讲解velocity 的进阶内容velocity Tools , 以及velocity作为web项目的视图改如何使用 , 每一部分都会有一个综合案例...
struts2结合velocity做为表现层的整合框架,详细演示了velocity的标签用法,不需要数据库支持,Action层模拟数据。
用velocity作为JSF的View相关技术。 本文源自国外网站,花了点时间翻译过来的。 另外本人翻译水平有限,附有英文原文,各位看官自行取舍。
用WebWork、JSP、Velocity建立注册页面-JSP教程,JspServlet
学习拦截器和Velocity视图技术,struts 2实例
jsp、freemarker、velocity简介和对比。---如果你已经开发Java Web应用程序一段时间,那么对于 JVM 的 PermGen 问题可能并不陌生。由于 FreeMarker 模板不编译成类,它们不占用 PermGen 空间,并不需要一个新的类...
整合三大框架,前端视图使用velocity渲染,数据访问层使用hibernate+mysql,整合jpa技术,适合二次开发的一个大型项目框架
Spring集成Velocity时所需的扩展类,供大家一起共同分享学习。
-session对象和out对象、JSP中request属性的用法、用WebWork、JSP、Velocity建立注册页面、在JSP中使用JavaMail、用JSP操作Cookie、解决MVC下分页显示的问题、缓冲技术提高JSP程序性能和稳定性、jsp属性的保存范围、...
Jsp结合Velocity实现依据Word模板文件生成对应数据文件,操作非常灵活,方便。
本指南中有很多示例展示了用Velocity来讲动态内容嵌入到网站之中,但是所有的VTL examples 都同演示用于所有的页面和模版。 感谢选择Velocity! 2. 什么是Velocity? Velocity是一个基于Java的模版引擎。它允许...
他也可用于一个独立的程序以产生源代码和报告,或者作为其它系统的一个集成组件。这个项目完成后,Velocity将为Turbine web 应用程序框架提供模板服务。Velocity+Turbine 方案提供的模板服务将允许web 应用按真正的...
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine...
OSChina 就是采用 velocity 作为页面模板 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发...
Velocity实现的例子 介绍了如何使用velocity生成动态jsp
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine ...
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine ...