Velocity出现的目的用于简化基于MVC的web应用开发,用于替代JSP标签技术,那么Velocity如何访问Java代码.本篇继续以Velocity三http://bit1129.iteye.com/blog/2106142中的例子为基础,
POJO
package com.tom.servlets; public class User { private String name; private String passwd; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } }
Service
package com.tom.servlets; public class UserService { public User get(String userId) { User user = new User(); user.setName("tom"); user.setPasswd("tom_pwd"); return user; } public User get(Long userId) { User user = new User(); user.setName("Jack"); user.setPasswd("Jack"); return user; } public void save() {//用于测试,vm是否可以调用无参数的方法 System.out.println("save is called"); } }
Servlet代码
package com.tom.servlets; import org.apache.velocity.Template; import org.apache.velocity.context.Context; import org.apache.velocity.tools.view.VelocityViewServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestVelocityViewServlet extends VelocityViewServlet { @Override protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) { UserService userService = new UserService(); ctx.put("userService" , userService);//把userService对象设置到Context中 return getTemplate("obj.vm"); } }
vm代码
<!--obj.vm--> <html> <body> <p>$userService</p> ##call userService's toString method #set($user = $userService.get(0)) ##When call the java method on its object, only string typed parameters can be accepted <p>$user.name</p> ##print #$user.name as it is, because $user can't be resolved <p>$user.getName()</p> ##Equivalent with $user.name #set($user = $userService.get("0")) <p>$user.name</p> ##print $$user.name as it is, because $user can't be resolved <p>$user.getName()</p> ##Equivalent with $user.name <p>$user.save()</p> ##$user.save can't be resolved,so vm can't resolve method that takes no parameter </body> </html>
运行结果
com.tom.servlets.UserService@48b4721b
$user.name
$user.getName()
tom
tom
$user.save()
总结
1.可以通过Velocity将Java的对象注入到Context中,这样在vm中可以获得这个注入的Java对象,例子中调用了这个Java对象的toString方法
2.在vm中,仅仅能调用Java对象的带有String类型参数的方法,这是非性常巨大的局限,因为在vm中,没法像在JSP中通过<%%>创建Java对象,然后把它作为参数调用Java的方法
3.对于setter和getter,可以直接使用属性进行方法,例如$user.getName和$user.name是等价的,不管User类是否定义了name属性(比如把User类中的属性name改名为xname,getName和setName方法名不变)
4.$user.save()不能正确解析,也就是说,vm只能调用Java对象带String类型参数的方法(POJO的get方法除外)
相关推荐
Velocity1.4java开发指南中文版 Velocity1.4模板使用指南中文版中文版
JAVA的Velocity语法学习 内涵《Velocity_java开发指南》《Java的模板引擎Velocity初体验》 以及所必须的jar ,和大家一块学习,很好哦
《Velocity java开发指南》中文版《Velocity java开发指南》中文版《Velocity java开发指南》中文版《Velocity java开发指南》中文版《Velocity java开发指南》中文版《Velocity java开发指南》中文版《Velocity ...
l 从基础开始 : 只要有一些java开发的基础就可以学习第一部分velocity engine l 全面 : 本课程从基础的velocity engine 讲到进阶的velocity Tools , 从代码生成器到web开发 , 多种使用场景都有涉及 l 版本新 : 本...
velocity的web实例,java实例。下载后,直接导入到eclipse里,可以直接运行。
velocity+Java开发指南中文版.zip velocity velocity.pdf velocity开发指南 velocity帮助文档
Velocity java开发指南 Velocity是一种基于java的一个模版引擎。
JAVA中Velocity语法基础.pdf
初学velocity,做的一个小实例。
velocity+digester+java
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...
Velocity 是一处基于java 语言的模板引擎, 使用这个简单、功能强大的开发工具,可以很容易的将数据对象灵活的 与格式化文档组装到一起;希望本文能指引使用velocity 在开发基于servlet 或一般java 应用程序的应用上...
基于RCP和velocity的java代码生成器 该代码生成器只可用于mysql数据库 版权公司所有 仅供交流学习 注意:请把templates文件下的模板拷贝到C:根目录下 各类都有注释 JDK6 Myeclipse6开发
Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上。Velocity 是 Apache 基金会的项目,开发的目标是分离 MVC 模式中的持久化层和业务层。但是在实际应用过程中,...
标签:core、apache、engine、velocity、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
Velocity模板引擎技术在Java Web中的应用
Velocity 是一个基于Java的模版引擎。它允许web 页面设计者引用JAVA代码预定义的方法。Web 设计者可以根据MVC模式和JAVA程序员并行工作,这意味着Web设计者可以单独专注于设计良好的站点,而程序员则可单独专注于...
10.Velocity Configuration Keys and Values(配置参数名字和值说明) 20 1.Runtime Log 20 2.字符集编码问题 21 3.#foreach() Directive 21 4.#include() and #parse() Directive 21 5.资源管理 21 6.Velocimacro(宏...
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...