- 浏览: 822343 次
- 性别:
- 来自: 株洲->深圳
文章分类
- 全部博客 (283)
- JAVA (54)
- 数据库 (25)
- Linux (22)
- Spring (9)
- Hibernate (7)
- mybatis (1)
- struts (10)
- javascript (22)
- Web (11)
- 异常 (30)
- 工具 (21)
- pay (9)
- 软件相关 (7)
- 其它 (28)
- python (1)
- 缓存 (9)
- 面试题 (2)
- 代码规范 (14)
- 网络编程 (1)
- 架构设计 (1)
- 程序测试 (3)
- 移动 (1)
- 安全 (2)
- 服务器 (4)
- 程序员 (1)
- php (4)
- 非技术 (7)
- web容器 (3)
- 竞彩篮球 (1)
- nginx (5)
- 加密 (2)
- jquery (2)
- 原理 (2)
- 项目管理 (1)
- www..betradar.com (0)
- www.betradar.com (1)
- 爬虫 (1)
最新评论
-
July01:
有一款web 打印控件StratoIO,浏览器和系统的兼容性都 ...
WEB免费打印控件推荐(4款) -
lihaimian:
你好,有个问题咨询一个,为何我在java中,无法使用与运算符, ...
位运算、异或的实际应用 -
小黄牛:
很好谢谢分享!推荐几篇spring boot基础入门文章:ht ...
Spring Boot 快速入门 (官方quick start) -
littlesheep:
我按照你的方法从新生成了密钥可是还是报者个错误...
狗日的支付宝 -
di1984HIT:
学习了~~~
javassist:增强型的java反射工具,获取方法参数名
示例:
public class VelocityTest { private static Properties props = new Properties(); static { props.setProperty(Velocity.INPUT_ENCODING, "UTF-8"); props.setProperty(Velocity.RESOURCE_LOADER, "class"); props.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); } public static void main(String[] args) { testStringVelocity(); testCommonsStringUtils(); } /** * 测试字符串模板替换 */ private static void testStringVelocity() { // 初始化并取得Velocity引擎 VelocityEngine engine = new VelocityEngine(props); // 字符串模版 String template = "${owner}:您的${type} : ${bill} 在 ${date} 日已支付成功"; // 取得velocity的上下文context VelocityContext context = new VelocityContext(); // 把数据填入上下文 context.put("owner", "nassir"); context.put("bill", "201203221000029763"); context.put("type", "订单"); context.put("date", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); StringWriter writer = new StringWriter(); engine.evaluate(context, writer, "", template); System.out.println(writer.toString()); } /** * 测试模板静态方法使用 */ private static void testCommonsStringUtils() { VelocityEngine engine = new VelocityEngine(); engine.init(); VelocityContext ctx = new VelocityContext(); ctx.put("stringUtils", new StringUtils()); ctx.put("comments", "this is a \n newline test"); ctx.put("newline", "\n"); ctx.put("break", "<br/>"); String template = "#set($comments = $stringUtils.replace($comments,$newline,$break))"; template += "$comments"; StringWriter writer = new StringWriter(); engine.evaluate(ctx, writer, "", template); System.out.println(writer.toString()); // assertEquals("this is a <br /> newline test", writer.toString()); } }
运行结果:
nassir:您的订单 : 201203221000029763 在 2012-03-26 18:13:01 日已支付成功
this is a
newline test
评论
2 楼
wenjinglian
2012-04-13
lhw891104 写道
这个帖子给我帮助太大了,正要用它呢
1 楼
lhw891104
2012-04-13
这个帖子给我帮助太大了,正要用它呢
发表评论
-
linux 服务器挂载出问题,导致写文件失败,程序超时
2014-07-11 11:07 0linux 服务器挂载出问题,导致写文件失败,程序超时 -
HessianProxy cannot connect to 'http://localhost
2014-04-12 10:57 3278HessianProxy cannot connect t ... -
位运算、异或的实际应用
2013-12-24 15:53 10877一. 位操作基础,用 ... -
了解LinkedList原理
2013-12-25 14:38 11651.LinkedList介绍 线性链表集合,循环链表ht ... -
了解ArrayList原理
2013-12-18 10:45 11141.ArrayList 介绍 有序集合,按顺序存储元素 ... -
java Cookie的有效期
2013-12-03 19:55 6020Cookie的有效期 Cookie的maxAge决定着Co ... -
10 道 Java 泛型面试题
2013-10-20 19:07 1798关于泛型的面试题在 Java面试中变得越来越常见,因为 Ja ... -
tomcat 访问记录日志
2013-05-17 01:43 1724Tomcat7.0.xx访问请求记录是默认打开的 ... -
支付宝RSA 公私钥 程序生成,openssl rsa 密钥程序生成,想要多少有多少
2013-05-01 00:21 30521.先配置好openssl 环境变量 保证cmd 输 ... -
MD2withRSA is disabled
2013-04-25 14:44 1757请求https报以一错误: javax.net.ssl.S ... -
狗日的支付宝
2013-04-24 23:26 14709用openssl 生成的密钥老是报以下错误: ja ... -
quartz 启动时会自动启动检测是否有可用的新版本
2013-04-24 20:06 1844日志提示: [org.quartz.utils.Updat ... -
Data truncation: Incorrect datetime value: '' for column 'createTime' at row
2013-03-22 17:11 21994mysql SQL Error: 0, SQLState: ... -
session失效通过头信息判断跳转
2013-03-13 18:06 1672/** * 拦截用户是否登录跳转到登录页 * 页面请 ... -
jsonlib转换树型数据没其它框架好
2013-01-26 14:39 1442jsonlib的性能请看这篇文章:http://wangym ... -
[ava.net.SocketException四大异常解决方案
2012-12-05 12:31 5298java.net.SocketException如何才能 ... -
SSM1.0中UpdateSingleCache 参数keyIndex,dataIndex解释
2012-08-31 00:21 1437simple-spring-memcached 简称:ssm ... -
simple-spring-memcached-3.0.x 注解详解
2012-08-10 18:37 4630@CacheName: 指定缓存实例注解 @Cach ... -
simple-spring-memcached-3.0.x 用了lombok类库记录一下
2012-08-08 12:20 1501消除冗长的 Java 代码 Lombok Lombok ... -
Ehcache集群使用
2012-07-21 15:48 4794集群的事例是由别人提供(附件也提供下载,我将相关包已导入),我 ...
相关推荐
正则表达式是实现这种字符串模板替换的一种有效方法。 在给定的实例中,`renderString` 方法演示了如何使用正则表达式和Java的 `Pattern` 和 `Matcher` 类来完成字符串模板的替换。以下是对这个方法的详细解释: 1...
当Velocity引擎处理模板时,它会将这些指令和变量替换为实际的值,生成最终的输出。 1. **Velocity模板语法** - **变量引用**:在Velocity模板中,通常使用`$variable`来引用Java对象的属性,例如`$user.name`表示...
运行上述Java代码后,输出的HTML字符串将替换掉模板中的VTL变量,形成如下内容: ```html 欢迎,张三! 你好,你今年已经30岁了。 ``` 这就是Java Velocity模板引擎的基本使用方法和核心概念。它通过简单易懂...
` 或 `${}` 来确保即使变量未定义,也能输出空字符串,防止模板解析错误。 在实际应用中,Velocity 可以与各种框架集成,例如与 Struts MVC 框架结合,将 Velocity 作为视图组件,实现模型-视图-控制器架构中的视图...
例如,`#set($name = "John")` 将字符串"John"赋值给变量$name。这个指令允许我们在模板中进行简单的算术和逻辑运算。 3. **$引用**:在模板中,以`$`开头的表达式用于输出变量的值。例如,`Hello, $name!` 在遇到$...
这些数据可以是Java对象、字符串、数字等,它们会替换模板中的占位符。 4. **合并模板与数据**:使用`VelocityEngine`的`mergeTemplate`方法,将模板和上下文合并,生成一个字符串,这个字符串包含了所有动态数据...
- 渲染模板:调用`Velocity.mergeTemplate()`方法,将模板与上下文合并,生成最终的输出字符串。 4. **Velocity模板语言(VTL)示例** - **变量引用**:`$name`会输出上下文中对应的`name`对象的值。 - **条件...
然后,使用Velocity将这些模板与数据源(如数据库、JSON对象或JavaBean)相结合,将动态数据替换到这些占位符中,生成最终的HTML字符串。 接下来,iText库介入,它读取这个HTML字符串并将其转换为PDF格式。iText...
这些依赖库为Velocity提供了一些基础功能,如日志记录、字符串操作等。 在实际使用中,你需要将这三个JAR文件添加到项目的类路径(Classpath)中,这样Java虚拟机才能找到并加载它们。在Maven或Gradle构建系统中,...
5. **字符串操作**:如`#set($str = $str.uppercase())`将字符串转为大写。 **四、使用Velocity实现静态化** 1. **预渲染**:在服务器端,Velocity可以先将模板和数据结合生成静态HTML页面,然后直接发送给客户端...
变量可以是字符串、数字或布尔值,它们允许在模板中进行简单的计算和逻辑判断。 Velocity的优势之一在于其与MVC(模型-视图-控制器)架构的兼容性。在Web应用中,Velocity可以作为视图组件,与Struts等MVC框架集成...
4. **合并上下文与模板**:调用`evaluate()`或`merge()`方法,将上下文中的数据与模板合并,生成最终的输出字符串。 5. **输出结果**:将生成的字符串写入到响应流中,用户就可以在浏览器上看到结果了。 学习...
- 字符串操作:`#concat`,连接字符串 - 数学运算符:`+`, `-`, `*`, `/`, `%` ### 5. 模板与上下文 Velocity模板与Java代码中的上下文对象交互。上下文对象包含了模板需要的所有变量,这些变量可以通过`put`方法...
5. **处理结果**: 输出合并后的字符串,通常写入到文件或直接发送到客户端。 **四、Velocity实例** 一个简单的Velocity模板可能如下所示: ```html <!DOCTYPE html> $title <h1>Welcome, $username! <p>...
在这个过程中,`VelocityEngine`负责加载和解析模板,`evaluate()`方法将模板和上下文合并,生成HTML字符串。最后,我们可以将`htmlOutput`写入到一个HTML文件中,这样就完成了静态页面的生成。 在提供的压缩包文件...
- **解析模板**: 使用引擎的 `mergeTemplate()` 方法,传入模板路径和上下文,得到输出字符串。 - **输出结果**: 将生成的字符串写入到响应流,或者保存为文件。 ### 5. Velocity 与其他模板引擎比较 - **...
variable}` 避免未定义变量抛出异常,返回空字符串。 - **宏的合理利用**: 通过宏提高代码复用性和可维护性。 - **上下文管理**: 仅在需要时将对象放入上下文,避免上下文过大影响性能。 - **模板资源管理**: ...
7. 双引号和单引号:双引号会进行字符串内变量的替换,而单引号则不会,可以通过设置配置文件中的`stringliterals.interpolate`属性来改变这一默认行为。 8. 条件语句:使用#if指令,例如:`#if($foo) ... #end`,...
Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,以及大小写的替换。 在实际应用中,Velocity 不仅限于 Web 开发,还...
4. 渲染模板:使用设置好的上下文数据,结合模板文件生成代码字符串。 5. 生成文件:将渲染后的代码写入到指定目录,创建对应的Action、Serv、Dao类文件。 在实际应用中,`VelocityGenerator.java`可能还需要处理...