对于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简介】 Velocity是Apache软件基金会的一个开源项目,它是一...通过深入学习并实践"velocity工程实例",你将能够熟练掌握Velocity的使用,提高开发效率,并理解如何在实际项目中有效地应用Velocity模板引擎。
Velocity是一个开源的Java模板引擎,它允许开发者将HTML页面中的业务逻辑与展示逻辑分离。Velocity通过提供一个简单的模板语言来实现这一目标,使得非程序员也能轻松编辑模板,而程序员则专注于后端业务逻辑的实现。...
Velocity则是Apache的一个模板引擎,它专注于视图层的生成,使得开发者能够将业务逻辑和显示逻辑分离。在ESHop中,Velocity模板将负责生成动态HTML页面,通过与Struts2的Action结果相结合,根据用户请求呈现不同的...
**Velocity** 是一款基于 Java 的模板引擎,它提供了一种简洁高效的语法——**Velocity 模板语言 (VTL)**,用于引用 Java 代码中定义的对象。这使得页面设计者能够专注于页面布局和样式,而 Java 开发人员则负责业务...
对于更复杂的模板,可以结合FreeMarker或Velocity等模板引擎,预先定义好PDF结构,然后填充动态数据。这些模板引擎允许开发者编写模板语言,将Java对象的数据渲染到PDF中。 6. **实战示例** 创建一个简单的PDF...
10. **模板引擎**:如果JForum使用了模板引擎,如Freemarker或Velocity,可以学习其模板语法和工作原理。 通过研究JForum的源代码,开发者不仅能提升Java Web开发技能,还能了解到一个成熟的开源项目的组织结构、...
5. **插件和扩展性**:Struts2支持许多插件,如Tiles插件用于布局管理,Freemarker或Velocity插件用于模板引擎,JSON插件用于处理JSON响应等。这些插件增强了Struts2的功能,使其能够适应不同的应用场景。 6. **...
虽然Spring 5官方已经不再支持Velocity作为模板引擎的一部分,但是仍然可以通过第三方库实现集成。 #### 第三方集成示例 1. **添加依赖** - 在`pom.xml`中添加第三方Velocity支持的依赖。 ```xml <groupId>...
- `freemarker.jar` 或 `velocity.jar`:模板引擎。 ### Hibernate框架 Hibernate是一个全功能的Java持久化框架,主要用于对象关系映射(ORM)。它可以将Java对象映射到数据库表,并管理这些对象的生命周期。 ####...
本系统——"jsp博客管理系统.zip",就是一个典型的应用实例,它展示了如何利用Java语言和JSP技术实现一个完整的博客管理平台。该系统不仅适用于毕业设计或课程设计,而且对于学习Java Web开发的学生来说,是一份宝贵...
这个过程中,我们需要解析模型中的对象,获取表名、字段名、数据类型等信息,再利用Java的模板引擎(如FreeMarker或Velocity)生成Java源码。 五、挑战与最佳实践 - **兼容性问题**:确保你的插件兼容PowerDesigner...
在前端,虽然具体文件列表未提供,但通常SpringBoot项目会配合Thymeleaf、Freemarker或Velocity等模板引擎,提供动态网页渲染。这些模板引擎使得前后端分离更加方便,提高了开发效率。 最后,日志管理也是...
本实例——"JFinalDemo.zip",结合了JFinal、Freemarker和Maven三个关键组件,为开发者提供了一个完整的Web应用程序开发环境。下面,我们将详细探讨这三个技术的核心概念以及它们如何协同工作。 **JFinal** 是一个...
9. **模板技术**:为了提高代码的复用性和可维护性,系统可能使用了FreeMarker或Velocity这样的模板引擎,将静态页面布局与动态数据分离。 10. **安全与权限控制**:对于新闻发布系统,权限控制很重要,如管理员...
2. 模板引擎:Freemarker或Velocity用于生成动态HTML页面。 3. AJAX技术:提升用户体验,实现页面局部刷新,减少服务器交互次数。 4. 安全控制:Struts2内置的安全组件防止XSS、CSRF等攻击,保证数据安全。 六、...
7. **模板技术**:可能使用了Freemarker或Velocity等模板引擎,分离视图和逻辑。 **学习资源与价值** 本教程不仅提供了详细的课件,帮助学习者系统地学习JSP,而且提供了一个实际的网上书店项目源代码,使学习者有...
这些模板引擎允许开发者编写清晰、分离的视图代码,提高代码的可维护性。 8. **插件系统**: - Struts 2拥有丰富的插件库,可以扩展框架的功能,如上传下载、国际化、AJAX支持等。 9. **测试支持**: - Struts 2...
5. **模板引擎**:Wicket支持多种模板引擎,如Freemarker和Velocity,使得开发者可以选择最适合他们项目的模板语法。 6. **安全特性**:Wicket提供了一套内置的安全机制,包括CSRF防护、权限管理以及防止XSS攻击。...
6. 模板技术:在视图层,除了使用JSP外,还可以利用FreeMarker或Velocity这样的模板引擎,将静态HTML与动态数据分离,使视图更易于管理和设计。 7. 国际化与本地化:对于一个完整的系统,支持多语言功能是很常见的...