`
woming66
  • 浏览: 57913 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java模板引擎——Velocity应用实例(原创)

    博客分类:
  • Java
阅读更多
对于b/s架构的项目而言,表示层呈现页面技术大多数选用jsp,但是对于一个并发量很大的网站而言,jsp并不是一个很好的解决方案,懂Java web开发的人都会知道,jsp就是servlet,jsp->servlet->class->html(第一次编译),第一次编译执行以后class->html。

在Java开源框架层出不穷的今天,很多Java牛人都提出了用其他的技术替代jsp,从而提高页面显示速率,之后就有了模板的概念。模板的概念提出了很多年,应用最好的两大模板引擎:Velocity ,FreeMarker。Velocity是Apache的顶级项目,它出现的非常早,而且有很多成功的项目应用的此模板引擎。FreeMarker在当今应用的非常广泛,我的毕业设计就应用了FreeMarker。这两大模板引擎个人比较倾向于FreeMarker,但是没有办法,公司要求用Velocity,所以只能听公司的了。

package com.velocity.test.model;


import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.junit.BeforeClass;
import org.junit.Test;

public class ModelTest {

 @Test
 public void testModel() {
  
  VelocityEngine ve = new VelocityEngine();
  ve.setProperty(Velocity.RESOURCE_LOADER, "class");   
        ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); //设置类路径加载模板   
  ve.setProperty(Velocity.INPUT_ENCODING, "GBK");//设置输入字符集
        ve.setProperty(Velocity.OUTPUT_ENCODING, "GBK");//设置输出字符集
        try {
   ve.init();//初始化模板引擎
   Template t = ve.getTemplate("com/velocity/test/model/model.vm");//加载模板,相对于classpath路径
   VelocityContext context = new VelocityContext();
   
   Person person = new Person("小强", 24);
   List<String> hobby = new ArrayList<String>();
   hobby.add("aaa");
   hobby.add("bbb");
   person.setHobby(hobby);
   
   context.put("person", person);
   
   StringWriter writer = new StringWriter();
   t.merge(context, writer); //转换
   System.out.println(writer.toString());
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

public class Person {

 private String name;
 private int age;
 private List<String> hobby;

 public Person(String name, int age) {
  this.name = name;
  this.age = age;
 }

 //getters and setters

}



model.vm

person.toString():$person
person.name:$person.name
person.age:$person.age
person.Name:$person.Name
person.age:$person.Age
=====================================
person.getName():$person.getName()
person.getAge():$person.getAge()
person.setName("zzq"):$person.setName("zzq")
person.setAge(15):$person.setAge(15)
person.getName():$person.getName()
person.getAge():$person.getAge()
=====================================
java.util.List<String>:
#foreach($s in $person.hobby)
$velocityCount/$person.hobby.size() |$s
#end
person.setHobby(["篮球", "唱歌" , "游泳"]):$person.setHobby(["篮球", "唱歌" , "游泳"])
#foreach($s in $person.hobby)
$s#if($velocityCount != $person.hobby.size()),#end
#end



输出:

person.toString():com.velocity.test.model.Person@1729854
person.name:小强
person.age:24
person.Name:小强
person.age:24
=====================================
person.getName():小强
person.getAge():24
person.setName("zzq"):
person.setAge(15):
person.getName():zzq
person.getAge():15
=====================================
java.util.List<String>:
1/2 |aaa
2/2 |bbb
person.setHobby(["篮球", "唱歌" , "游泳"]):
篮球, 唱歌, 游泳
分享到:
评论

相关推荐

    velocity.rar

    【Velocity简介】 Velocity是Apache软件基金会的一个开源项目,它是一...通过深入学习并实践"velocity工程实例",你将能够熟练掌握Velocity的使用,提高开发效率,并理解如何在实际项目中有效地应用Velocity模板引擎。

    velocity基础教程--1.标准使用

    Velocity是一个开源的Java模板引擎,它允许开发者将HTML页面中的业务逻辑与展示逻辑分离。Velocity通过提供一个简单的模板语言来实现这一目标,使得非程序员也能轻松编辑模板,而程序员则专注于后端业务逻辑的实现。...

    网络商店实例编程(struts2+hibernate+velocity)

    Velocity则是Apache的一个模板引擎,它专注于视图层的生成,使得开发者能够将业务逻辑和显示逻辑分离。在ESHop中,Velocity模板将负责生成动态HTML页面,通过与Struts2的Action结果相结合,根据用户请求呈现不同的...

    Velocity中文手册

    **Velocity** 是一款基于 Java 的模板引擎,它提供了一种简洁高效的语法——**Velocity 模板语言 (VTL)**,用于引用 Java 代码中定义的对象。这使得页面设计者能够专注于页面布局和样式,而 Java 开发人员则负责业务...

    java生成各种pdf模板

    对于更复杂的模板,可以结合FreeMarker或Velocity等模板引擎,预先定义好PDF结构,然后填充动态数据。这些模板引擎允许开发者编写模板语言,将Java对象的数据渲染到PDF中。 6. **实战示例** 创建一个简单的PDF...

    基于Java的实例源码-论坛系统 JForum.zip

    10. **模板引擎**:如果JForum使用了模板引擎,如Freemarker或Velocity,可以学习其模板语法和工作原理。 通过研究JForum的源代码,开发者不仅能提升Java Web开发技能,还能了解到一个成熟的开源项目的组织结构、...

    struts2.0编程实例

    5. **插件和扩展性**:Struts2支持许多插件,如Tiles插件用于布局管理,Freemarker或Velocity插件用于模板引擎,JSON插件用于处理JSON响应等。这些插件增强了Struts2的功能,使其能够适应不同的应用场景。 6. **...

    java8-spring5部分技术与工具介绍.pdf

    虽然Spring 5官方已经不再支持Velocity作为模板引擎的一部分,但是仍然可以通过第三方库实现集成。 #### 第三方集成示例 1. **添加依赖** - 在`pom.xml`中添加第三方Velocity支持的依赖。 ```xml &lt;groupId&gt;...

    最新面试题最新面试题

    - `freemarker.jar` 或 `velocity.jar`:模板引擎。 ### Hibernate框架 Hibernate是一个全功能的Java持久化框架,主要用于对象关系映射(ORM)。它可以将Java对象映射到数据库表,并管理这些对象的生命周期。 ####...

    jsp博客管理系统.zip

    本系统——"jsp博客管理系统.zip",就是一个典型的应用实例,它展示了如何利用Java语言和JSP技术实现一个完整的博客管理平台。该系统不仅适用于毕业设计或课程设计,而且对于学习Java Web开发的学生来说,是一份宝贵...

    customizing powerdesigner

    这个过程中,我们需要解析模型中的对象,获取表名、字段名、数据类型等信息,再利用Java的模板引擎(如FreeMarker或Velocity)生成Java源码。 五、挑战与最佳实践 - **兼容性问题**:确保你的插件兼容PowerDesigner...

    -Springboot一起来约苗系统.zip

    在前端,虽然具体文件列表未提供,但通常SpringBoot项目会配合Thymeleaf、Freemarker或Velocity等模板引擎,提供动态网页渲染。这些模板引擎使得前后端分离更加方便,提高了开发效率。 最后,日志管理也是...

    JFinalDemo.zip

    本实例——"JFinalDemo.zip",结合了JFinal、Freemarker和Maven三个关键组件,为开发者提供了一个完整的Web应用程序开发环境。下面,我们将详细探讨这三个技术的核心概念以及它们如何协同工作。 **JFinal** 是一个...

    JSP源码——[新闻文章]梦想年华JSP新闻发布系统1.0_jspnews.zip

    9. **模板技术**:为了提高代码的复用性和可维护性,系统可能使用了FreeMarker或Velocity这样的模板引擎,将静态页面布局与动态数据分离。 10. **安全与权限控制**:对于新闻发布系统,权限控制很重要,如管理员...

    学生信息管理系统-struts2.zip

    2. 模板引擎:Freemarker或Velocity用于生成动态HTML页面。 3. AJAX技术:提升用户体验,实现页面局部刷新,减少服务器交互次数。 4. 安全控制:Struts2内置的安全组件防止XSS、CSRF等攻击,保证数据安全。 六、...

    jsp程序设计实用案例教程课件、代码

    7. **模板技术**:可能使用了Freemarker或Velocity等模板引擎,分离视图和逻辑。 **学习资源与价值** 本教程不仅提供了详细的课件,帮助学习者系统地学习JSP,而且提供了一个实际的网上书店项目源代码,使学习者有...

    struts2.1.6.jar

    这些模板引擎允许开发者编写清晰、分离的视图代码,提高代码的可维护性。 8. **插件系统**: - Struts 2拥有丰富的插件库,可以扩展框架的功能,如上传下载、国际化、AJAX支持等。 9. **测试支持**: - Struts 2...

    apache-wicket-7

    5. **模板引擎**:Wicket支持多种模板引擎,如Freemarker和Velocity,使得开发者可以选择最适合他们项目的模板语法。 6. **安全特性**:Wicket提供了一套内置的安全机制,包括CSRF防护、权限管理以及防止XSS攻击。...

    毕业设计-基于struts的文章系统测试通过

    6. 模板技术:在视图层,除了使用JSP外,还可以利用FreeMarker或Velocity这样的模板引擎,将静态HTML与动态数据分离,使视图更易于管理和设计。 7. 国际化与本地化:对于一个完整的系统,支持多语言功能是很常见的...

Global site tag (gtag.js) - Google Analytics