`
rain_2372
  • 浏览: 683002 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Velocity帮我们实现页面静态化

    博客分类:
  • java
阅读更多
Velocity作为一款成熟的基于java的模板引擎,能够帮我们实现页面静态化。它允许使用模板语言(template language)来引用由java代码定义的对象。最重要的是,它简单易用,乃至于看一眼它的示例就可上手使用。

------------------------------------------

“Velocity将Java代码从Web 页面中分离出来,使用Web站点从长远看更容易维护,并且提供了一种可行的JavaServer Pages替代解决方案。”——Velocity用户手册

Velocity下载地址:http://velocity.apache.org/

在开发中,我们必须导入\lib\log4j-1.2.12.jar和velocity-1.6-dep.jar两个包。如果使用velocity-1.6.jar会稍微麻烦一点,需要把\lib下的commons-collections-3.2.1.jar\commons-lang-2.4.jar和oro-2.0.8.jar放入类路径下。 velocity-1.6-dep.jar文件内部已经包含前面三个jar文件的类。

导入开发包以后,我们需要在类路径中加入velocity.properties文档:

指定日志文件存放位置

runtime.log = E:\\spring\\velocity\\velocity_example.log

指定模版文件加载位置

file.resource.loader.path=E:\\spring\\velocity

指定输入编码格式

input.encoding=UTF-8

指定velocity的servlet向浏览器输出内容的编码

default.contentType=text/html; charset\=UTF-8

指定输出编码格式

output.encoding=UTF-8

接下来是老黎讲的10个例子:

一:

try{

       Velocity.init("src/velocity.properties");

       VelocityContext context = new VelocityContext();

       context.put("hello", "HelloWorld");

       context.put("who", "黎明");

       Template template = Velocity.getTemplate("mytemplate.vm");

       StringWriter sw = new StringWriter();

       template.merge(context, sw);

       sw.flush();

       System.out.println(sw.toString());

    }catch( Exception e ){

       e.printStackTrace();

    }

mytemplate.vm内容如下:

${who}说:${hello}

二:访问对象

try{

   Velocity.init("src/velocity.properties");

   VelocityContext context = new VelocityContext();

   context.put("person", new Person(2,"小张"));

   Template template = Velocity.getTemplate("mytemplate.vm");

   StringWriter sw = new StringWriter();

   template.merge(context, sw);

   sw.flush();

   System.out.println(sw.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

${person.id}=${person.name}

三:历遍集合/数组

try{

   Velocity.init("src/velocity.properties");

   VelocityContext context = new VelocityContext();

context.put("list", Arrays.asList("第一个","第二个","第三个"));

   Template template = Velocity.getTemplate("mytemplate.vm");

   StringWriter sw = new StringWriter();

   template.merge(context, sw);

   sw.flush();

   System.out.println(sw.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

#foreach($element in $list)

    $element

#end

四:历遍Map集合

try{

   Velocity.init("src/velocity.properties");

   VelocityContext context = new VelocityContext();

  Map<String,String> map = new HashMap<String, String>();

   map.put("key1", "value1");

   map.put("key2", "value2");

   context.put("map", map);

  Template template = Velocity.getTemplate("mytemplate.vm");

   StringWriter sw = new StringWriter();

   template.merge(context, sw);

   sw.flush();

   System.out.println(sw.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

#foreach( $key in $map.keySet() )

    $key=$map.get($key)

#end

五:获得当前迭代的索引

try{

   Velocity.init("src/velocity.properties");

   VelocityContext context = new VelocityContext();

  Map<String,String> map = new HashMap<String, String>();

   map.put("key1", "value1");

   map.put("key2", "value2");

   context.put("map", map);

  Template template = Velocity.getTemplate("mytemplate.vm");

   StringWriter sw = new StringWriter();

   template.merge(context, sw);

   sw.flush();

   System.out.println(sw.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

#foreach( $key in $map.keySet() )

   $velocityCount > $key=$map.get($key)

#end

velocityCount 变量名可以通过directive.foreach.counter.name属性修改,如: directive.foreach.counter.name =index,以后可以通过$index进行访问。迭代的索引默认从1开始,我们可以通过directive.foreach.counter.initial.value=0进行修改。

六:在模版中进行赋值

#set( $name = "老张" )

$name



#set( $condition = true )



数组赋值:

#set( $ints = [1..10])

#foreach( $entry in $ints)

    $entry

#end



#set( $ints = ["第一个","第二个"])

#foreach( $entry in $ints)

    $entry

#end

七:#if#else#end

try{

   Velocity.init("src/velocity.properties");

   VelocityContext context = new VelocityContext();

  context.put("condition", true);

   Template template = Velocity.getTemplate("mytemplate.vm");

   StringWriter sw = new StringWriter();

   template.merge(context, sw);

   sw.flush();

   System.out.println(sw.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

#if($condition)

   成立

#else

   不成立

#end

八:格式化日期

格式化日期必须将velocity-tools-generic-1.4.jar包加入到类路径。

try{

   Velocity.init("src/velocity.properties");

   VelocityContext context = new VelocityContext();

   context.put("now", new Date());

   context.put("dateformat", new DateTool());

   Template template = Velocity.getTemplate("mytemplate.vm");

   StringWriter sw = new StringWriter();

   template.merge(context, sw);

   sw.flush();

   System.out.println(sw.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

$dateformat.format("yyyy-MM-dd", $now)

九:输出到文件

try{

    Velocity.init("src/velocity.properties");

    VelocityContext context = new VelocityContext();

    context.put("title", "巴巴运行网");

    context.put("body", "这是内容");

    Template template = Velocity.getTemplate("mytemplate.vm");

    File savefile = new File("E:\\spring\\velocity\\WebRoot\\page\\test.html");

    if(!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs();

    FileOutputStream outstream = new FileOutputStream(savefile);

    OutputStreamWriter writer = new OutputStreamWriter(outstream,"UTF-8");

    BufferedWriter bufferWriter = new BufferedWriter(writer);

    template.merge(context, bufferWriter);

    bufferWriter.flush();

    outstream.close();

    bufferWriter.close();

}catch( Exception e ){

    e.printStackTrace();

}

十:null处理

try{

    Velocity.init("src/velocity.properties");

    VelocityContext context = new VelocityContext();

    context.put("title", null);

    Template template = Velocity.getTemplate("mytemplate.vm");

    StringWriter writer = new StringWriter();

    BufferedWriter bufferWriter = new BufferedWriter(writer);

    template.merge(context, bufferWriter);

    bufferWriter.flush();

    System.out.println(writer.toString());

}catch( Exception e ){

    e.printStackTrace();

}

mytemplate.vm内容如下:

$title
分享到:
评论

相关推荐

    velocity freemarke 模版 静态化 实现

    在Web开发中,页面静态化是一种提升网站性能和用户体验的...通过以上步骤,我们能够利用Velocity和FreeMarker模板引擎实现页面静态化,提高Web应用的性能和用户体验。在实际项目中,需要根据需求进行适当的调整和优化。

    java JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip

    3. **实现JSP页面静态化的策略**: - **重写JspWriter**:JspWriter是JSP页面中负责输出内容的对象。通过自定义JspWriter,可以在页面渲染时直接将内容写入到静态HTML文件中,而不是输出到浏览器。 - **使用...

    velocity生成静态页面实例

    在“velocity生成静态页面实例”中,我们首先需要一个 Velocity模板文件(通常以`.vm`为扩展名),在这个文件中,我们可以使用Velocity语法来定义页面结构,并插入动态数据占位符。例如,我们可以写一个简单的模板:...

    有关Java页面静态化

    Java页面静态化主要有两种方式:服务器端静态化和客户端静态化。 1. 服务器端静态化: - **预渲染(Prerendering)**:在用户请求之前,系统自动将一些常用或者热点页面生成静态HTML文件,存储在文件系统或CDN上。...

    页面静态化

    在Java Web环境中,可以使用以下技术实现页面静态化: 1. JSP到HTML转换:通过JSP的`&lt;jsp:include&gt;`和`&lt;jsp:forward&gt;`标签,或者使用Servlet生成HTML,然后保存到指定目录。 2. Freemarker或Thymeleaf模板引擎:...

    Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化

    Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...

    JSP页面静态化

    包括使用freemarker和velocity两种技术来实现静态化。压缩包里面的文件有说明文档,说得很仔细,特别适合入门级别的人参考。还有freemarker和velocity开发所需要的jar包和插件。

    新闻静态化技术整理,服务器端包含技术SSI,模板技术velocity

    新闻静态化技术是一种提高网站性能和搜索引擎...总结,新闻静态化通过SSI和Velocity等技术,实现了动态内容与静态展示的高效结合,提高了网站性能和用户体验。在实际应用中,可根据项目需求和资源选择合适的技术方案。

    Velocity初始化过程解析

    1. **Logging System**:Velocity通过LogManager和LogChute实现日志记录。首先,它创建一个HoldingLogChute实例作为临时存储,然后根据配置文件中的runtime.log.logsystem或runtime.log.logsystem.class属性来创建...

    JavaWeb监听器—案例(二)页面静态化

    本案例将探讨如何利用JavaWeb监听器实现页面静态化,以提高网站性能和用户体验。页面静态化是将动态生成的网页转化为HTML静态文件,使得用户在访问时无需经过服务器端复杂的处理过程,直接从硬盘或缓存中读取内容,...

    velocity jar包

    Velocity在页面静态化中的作用是动态生成这些静态页面,根据用户数据或环境变量进行个性化定制,同时保持静态页面的高效交付。 在使用Velocity时,开发者首先需要在项目中引入velocity.jar包。这个jar包包含了...

    javaCMS 生成静态页面简单列子

    Java CMS(内容管理系统)生成静态页面是一种常见的优化网站性能和提升用户体验的方法。在这个过程中,原本由动态脚本生成的...在实际应用中,需要结合具体业务场景和资源状况,选择合适的静态化策略,以实现最佳效果。

    jsp静态化总结(jsp2html)

    **JSP静态化总结(JSP2HTML)** 在Web开发中,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将Java代码嵌入到HTML页面中,以实现...通过合理的静态化策略,我们可以构建一个既快速又易于维护的Web应用。

    detail静态化

    - 是否使用ESI技术实现页面部分更新。 - 是否使用物理机提高性能。 - 压缩处理由谁完成。 - 选择何种类型的网卡以适应高并发场景。 #### 四、总结 通过Detail系统的静态化改造,淘宝技术团队成功地解决了原有架构...

    WEB网站架构分析HTML静态化.pdf

    2. **用户体验**:静态化不应牺牲页面的美观性和可用性,保证用户界面的正常展示。 3. **维护便捷性**:需要考虑内容的动态管理,如菜单、链接和广告位的调整,应能轻松实现静态页面的更新。 **三、Java实现HTML...

    Velocity标签详解文档

    Velocity,作为一个基于Java的模板引擎,其主要任务是将静态的HTML页面与动态的数据内容结合,从而实现网页的个性化和动态生成。它采用模板语言(Template Language),使得非程序员,如网页设计师,能够专注于页面...

    通用静态页面生成系统

    在压缩包文件"通用静态页面生成系统(Engineer) v.1"中,我们可以推测它包含了该系统的源代码、文档、可能的示例配置文件以及部署指南等资源。对于开发者而言,这将是一个宝贵的资源,他们可以研究源代码来理解系统的...

    Jsp结合Velocity实现依据Word模板文件生成对应数据文件

    在这种场景下,"Jsp结合Velocity实现依据Word模板文件生成对应数据文件"的技术方案显得尤为实用。JSP(JavaServer Pages)是用于构建动态Web应用的服务器端技术,而Velocity则是一个强大的模板引擎,它允许开发者将...

    Velocity简单案例

    作为一个强大的模板语言,Velocity能够将静态页面和动态内容分离,使得开发者可以专注于业务逻辑,而设计师则可以专注于页面布局和样式设计。 在Java工程中,Velocity通常被用作Web应用的视图层技术,与Spring MVC...

    oa静态页面

    【OA静态页面】是企业信息化建设中的一个重要组成部分,主要用于实现办公自动化系统的用户界面展示。在Spring、Hibernate和Struts这三大框架的集成下,可以构建高效、稳定的OA系统前端。这三个框架分别是Spring作为...

Global site tag (gtag.js) - Google Analytics