Velocity中加载vm文件的三种方式(也可以参考demo文件夹下的例子对照)
Velocity中加载vm文件的三种方式:
方式一:加载classpath目录下的vm文件
Properties p = new Properties();
p.put("file.resource.loader.class",
"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
Velocity.init(p);
...
Velocity.getTemplate(templateFile);
方式二:根据绝对路径加载,vm文件置于硬盘某分区中,如:d:\\tree.vm
Properties p = new Properties();
p.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, "d:\\");
Velocity.init(p);
...
Velocity.getTemplate("tree.vm");
方式三:使用文本文件,如:velocity.properties,配置如下:
input.encoding = UTF-8
file.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
再利用如下方式进行加载
Properties p = new Properties();
p.load(this.getClass().getResourceAsStream("/velocity.properties"));
Velocity.init(p);
...
Velocity.getTemplate(templateFile);
方法四:
org.apache.velocity.runtime.resource.loader.URLResourceLoader
2.加载远程文件的问题
解决方案1.
http://mail-archives.apache.org/mod_mbox/velocity-user/200211.mbox/%3CB9F95F44.1AB00%25zodiac@holoweb.net%3E<!--[if !supportNestedAnchors]--><!--[endif]-->
解决方案2
http://badqiu.javaeye.com/blog/691617
http://code.google.com/p/rapid-framework/source/browse/trunk/rapid-framework/src/rapid_framework_common/cn/org/rapid_framework/web/httpinclude/HttpInclude.java
public class
ApplicationContext extends AbstractInterceptor{
private static final long serialVersionUID =
5728757263270691902L;
private static Logger log =
Logger.getLogger(ApplicationContext.class);
@Override
public String intercept(ActionInvocation ai)
throws Exception {
log.info("Oh,yeah.
I'm intercepting.");
try{
Map<String, Object> application =
ai.getInvocationContext().getApplication();
Object ac =
application.get("ac");
Object httpInclude =
application.get("httpInclude");
log.info(application.get("httpInclude"));
if(null==ac && null!=application)
application.put("ac",
new AgencyConstants());
if(null==httpInclude&&null!=application)
application.put("httpInclude",new-HttpInclude(ServletActionContext.getRequest(),
ServletActionContext.getResponse()));
if(null==application)
return
Action.ERROR;
return ai.invoke();
}catch(Exception
e){
log.error(e.getLocalizedMessage());
e.printStackTrace();
return Action.ERROR;
}
}
}
参考:
http://velocity.apache.org/engine/releases/velocity-1.5/developer-guide.html
http://hailinhe1986-163-com.javaeye.com/blog/657211
Other Demo
http://www.javaranch.com/journal/2004/03/Velocity-AnIntroduction.html
http://www.suneca.com/article.asp?id=22
分享到:
相关推荐
3. **读取模板文件**:使用Velocity的`ResourceLoader`加载Word模板文件,这通常涉及到文件系统的操作或者使用URL。 4. **填充数据**:在上下文中添加你需要的数据,例如数据库查询结果、服务器配置信息等。 5. **...
Velocity模板语言(Velocity Template Language,简称VTL)是Velocity的核心,它提供了一种简单但功能强大的模板语言,允许用户通过模板文件引用Java对象属性,结合数据模型动态生成内容。 在本教程中,我们将介绍...
在Velocity中,模板路径是非常关键的概念,它决定了模板文件在应用程序中的位置。模板路径的设置直接影响到模板的加载和解析,从而影响到最终的输出结果。 1. **模板路径的配置** - 在 Velocity 中,模板路径通常...
然后,创建一个Velocity模板文件(例如:`template.vm`),在其中定义PDF的布局和内容。例如,你可以定义一个段落和一个表格: ``` #set($title = "报告标题") #set($data = $!dataList) #foreach($item in $data) ...
同时,这也是一种理解Velocity工作原理的好方式,为以后在更大规模的JAVAEE项目中使用Velocity打下基础。 总结来说,`JAVAEE Velocity例子工程` 提供了一个直接操作 Velocity 的实例,帮助开发者理解如何在JAVAEE...
// 按文件加载 // ve.init(); // Template t = ve.getTemplate("src/velocity/hellovelocity.vm"); ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); // 在类路径下加载 ve.setProperty(...
- 初始化Velocity:在Java代码中,使用`Velocity.init()`方法初始化Velocity引擎,并加载配置文件。 - 设置上下文:通过`VelocityContext`对象将Java对象添加到上下文中,以便在模板中使用。 - 渲染模板:调用`...
1. **配置 Web 应用**:在 Web 应用的配置文件(如 web.xml)中,你需要配置 Velocity 视图解析器(如 VelocityEngineFilter),使得服务器能够识别 .vm 文件。 2. **处理请求**:当用户请求一个 .vm 页面时,服务器...
3. **加载模板**:读取模板文件并将其加载到Velocity引擎中。 4. **渲染模板**:使用上下文中的数据渲染模板,生成XML字符串。 5. **处理生成的XML**:根据需要,可以选择写入文件、发送到网络或者进行其他处理。 ...
其次,关于Vm文件中的中文乱码问题,这通常是由于模板文件的编码与Velocity读取时所使用的编码不一致导致的。为了解决这个问题,我们需要在获取模板时指定正确的编码方式,例如在示例中使用了`gb18030`: ```java ...
Velocity 将模板语言(如 `.vm` 文件)与Java代码相融合,通过简单的语法结构,如 `${expression}` 和 `#if`, `#foreach` 等控制结构,让开发者可以在模板中嵌入动态内容。当Velocity引擎处理模板时,会替换这些...
整合Spring MVC、MyBatis和Velocity,首先需要在项目的pom.xml文件中引入这三个框架的依赖。然后,配置Spring的ApplicationContext.xml,定义DataSource、SqlSessionFactoryBean、MapperScannerConfigurer等,以连接...
6. **代码热部署**:VM插件可以实现代码的热部署,即在不重启应用的情况下更新类文件,这在开发过程中节省了大量的时间。 在提供的“velocity插件”中,Velocity可能是指Velocity Engine,这是一个流行的Java模板...
总结,Velocity提供了一种强大的方式来实现Java应用中的视图层与业务逻辑分离,通过简洁的模板语言和上下文管理,使得开发更高效。掌握Velocity的使用,可以提升你的Web开发效率,让你的应用具备更好的可维护性和可...
3. **加载模板**: 使用引擎实例加载模板文件,例如`VelocityContext context = new VelocityContext();`和`String templatePath = "path/to/your/template.vm";`。 4. **设置上下文**: 将数据填充到上下文对象中,...
同时,需要在`velocity.properties`中配置Velocity的相关参数,如编码、资源加载器等。 **5. 测试与调试** 完成以上配置后,可以通过浏览器访问应用,看看Struts2是否成功地将Action的结果渲染为Velocity模板。如果...
同时,需要在项目的类路径下放置`velocity.properties`文件,用于配置Velocity的行为,例如模板加载路径和缓存策略。 接下来,创建一个 Velocity模板文件,比如`velocityDemo.vm`。这个文件会包含HTML结构,其中...
总结来说,`Velocity 生成Action、Serv、Dao代码`是一种高效的方法,利用 Velocity 模板引擎自动化生成Java项目中的常见三层架构代码。通过理解并运用这一技术,开发者可以提高开发效率,减少重复劳动,使代码更加...
3. **Velocity配置**:工程中会有`velocity.properties`文件,用来配置Velocity引擎的行为,比如设置模板路径、编码、资源加载器等。 4. **Web.xml**:Web应用的部署描述符,用于配置Servlet和其他Web组件。在这个...
总结,Velocity提供了一种简单而强大的方式来生成动态内容,通过分离业务逻辑和表示层,促进了代码的可维护性和可扩展性。通过这个“Velocity之HelloWorld配置”,你应该对如何开始使用Velocity有了基本的认识。...