Velocity学习(一)文章中,使用Velocity简单在页面中输出了一句话,接下来想在template文件中引用图片、CSS文件或者JS文件,也就是要处理一些与路径相关问题。要在模板中引入一张图片,摆在面前一个首要问题就是图片的路径问题。这时候想到在JSP中如何引入图片,JSP中通过Request.getContextPath()可以获得项目根目录,也就是说在Velocity中如果拿到了项目的根目录也就解决了上面的路径问题。很幸运的是Velocity的开发者已经预料到这个问题。
创建toolbox配置文件,通常使用XML文件,将tool.xml配置文件的路径配置到web.xml文件中。
<?xml version="1.0" encoding="UTF-8"?> <tools> <toolbox scope="request"> <tool key="link" class="org.apache.velocity.tools.view.LinkTool" forceRelative="true" includeRequestParams="true"/> </toolbox> </tools>
配置web.xml文件
<context-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/tools.xml</param-value> </context-param>
在模板中使用$link.contextPath就可以获得项目根目录
<body> <div style="margin:20px;"></div> <div style="width:50%"> <table width="50%"> <tr><th>姓名</th><th>头像</th></tr> <tr> <td>$userName</td> <td><img src="$link.contextPath/resources/images/head.jpg" width="60" heigth="60"/></td> </tr> </table> </div> </body>
效果如下:
Context有多个构造器,在构造Contex对象时可以传递Map对象或者InnerContext对象构造方法如下
在Servlet中要灵活使用Context对象,可以采用下面一种解决方案
@SuppressWarnings("serial") public class UserServlet extends VelocityViewServlet { @Override protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) { Template template = getTemplate("user.html"); return template; } @Override protected void fillContext(Context context, HttpServletRequest request) { // TODO Auto-generated method stub context.put("userName", "薛之谦"); } @Override protected void mergeTemplate(Template template, Context context, HttpServletResponse response) throws IOException { // context 进行了一些参数初始化 // TODO Auto-generated method stub Map<String, Object> values = new HashMap<String, Object>(); values.put("userName", "薛之谦"); // 组织复杂的数据可以这样 Context context2 = new VelocityContext(values, context); super.mergeTemplate(template, context2, response); } }
相关推荐
- `FileResourceLoader` 用于加载磁盘上的文件,路径可以是绝对路径或相对于当前工作目录的相对路径。 - `ClasspathResourceLoader` 用于从类路径中加载模板,路径通常是类路径内的相对路径。 - `...
【Velocity学习Web项目】 Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态网页内容。在J2EE环境中,Velocity经常与Struts等MVC框架结合使用,以提供更加灵活和高效的视图层...
### Velocity学习笔记精要 **一、Velocity简介与特点** Velocity是一种基于Java的模板引擎,用于将静态数据和动态内容结合在一起,生成最终的HTML、XML或其他格式的文档。其最大的特点是性能高、易于理解和使用,...
在这个“velocity学习资料.zip”压缩包中,可能包含了关于Velocity的基本概念、语法、最佳实践以及一些示例代码,帮助初学者或有经验的开发者更好地理解和应用Velocity。 Velocity的工作原理基于MVC(Model-View-...
在这个"velocity的学习资料"压缩包中,我们很可能会找到关于Velocity的基本概念、语法、最佳实践以及如何将其整合到Java Web项目中的相关信息。 1. **Velocity基本概念** - **模板语言**: Velocity使用简单的文本...
提供的《Velocity_java开发指南》和《Java的模板引擎Velocity初体验》两本书籍是学习Velocity的好资料。它们会详细介绍Velocity的使用方法、语法特性以及最佳实践,对于初学者来说非常有帮助。同时,Apache官网也有...
**Velocity中文手册与学习资料详解** Velocity是一款基于Java的模板引擎,它允许开发者将HTML页面设计与业务逻辑相分离,让网页设计人员专注于页面布局,而程序员则专注于编写控制逻辑。Velocity通过简单的语法使得...
### Velocity框架学习教程知识点 #### 一、Velocity框架概述 - **定义**:Velocity是一款开源的Java模板引擎,它的核心作用在于将业务逻辑与展示层相分离,使得开发者能够更加专注于各自的任务。对于Web开发而言,...
Velocity用户指南旨在帮助页面设计者和内容提供者了解Velocity和其简单而又强大的脚本语言(Velocity Template Language (VTL))。本指南中有很多示例展示了用Velocity来讲动态内容嵌入到网站之中,但是所有的VTL ...
1. **引入依赖**: 在Java项目中,需要添加Velocity的jar包到类路径中。 2. **创建引擎**: 通过`VelocityityEngine`创建一个Velocity引擎实例。 3. **加载模板**: 使用引擎实例加载模板文件,例如`VelocityContext ...
2. **上下文(Context)**:上下文是Velocity的核心组件,用于存储要在模板中显示的数据。你可以将Java对象放入上下文中,然后在模板中通过变量引用它们。 3. **解释器(Parser)**:Velocity解释器负责解析模板,...
9. **最佳实践**:学习如何编写清晰、可维护的Velocity模板,遵循一定的编码规范和设计模式。 10. **性能优化**:理解Velocity的缓存机制,以及如何通过配置和编程优化模板的执行效率。 通过学习Velocity,你可以...
学习Velocity,你需要掌握以下几个关键点: 1. **基础语法**: Velocity模板语言包括变量引用(如`${variable}`)、控制结构(如`#if`, `#else`, `#foreach`等)、逻辑运算符和比较操作。 2. **上下文对象**: 模板中...
这里的 `FILE_RESOURCE_LOADER_PATH` 属性指定了模板文件的路径。 3. **设置 Context**:将需要在模板中使用的 Java 对象放入 Context。 ```java VelocityContext context = new VelocityContext(); context.put(...
在Java代码中,我们需要初始化Velocity上下文(Context)和Velocity引擎。在`main`方法中,加入以下代码: ```java import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.VelocityContext; ...
Velocity是一个强大的基于Java的模板引擎,它是Apache软件基金会的Jakarta项目的一部分。...Velocity通过使用简单的模板语言(Velocity ...无论是在Web应用还是在其他领域,Velocity都是一个值得学习和使用的工具。
`eclipse相关插件`,虽然不是必需的jar包,但对于使用Eclipse作为IDE的开发者来说,可能需要安装Velocity支持的Eclipse插件,如Velocity视图插件,它能提供模板语法高亮和代码完成等功能,提高开发效率。 为了正确...
在实际使用中,开发者需要将这些JAR文件添加到项目的类路径中,然后可以通过创建VelocityContext对象,填充数据,最后使用Velocity Engine渲染模板。这整个过程是完全独立于具体的服务器环境的,使得Velocity成为一...
Velocity是Apache软件基金会的一个开源项目,它是一款快速、强大且易用的模板引擎,用于生成动态Web内容。在Java世界中,Velocity常被用来作为MVC框架中的视图层技术,与Struts2等框架集成,以实现更灵活的页面渲染...