1.什么是Velocity

一种J2EE的前端模版技术,和JSP,Freemarker差不多,都是用来展示网页内容的。和JSP不同的是velocity只能显示Action中的数据,不能处理数据。不能写java代码,但是可以使用Velocity标记。也就是说把显示代码和后端的JAVA代码分离开来,降低程序的耦合性

2.需要引入哪些Jar包

velocity-1.5.jar,velocity-1.6.2.jar,velocity-tools-2.0.jar,velocity-tools-generic-2.0.jar,velocity-tools-view-2.0.jar

3.编写模板.vm文件

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. </head>
  5. <body>
  6. <!-- 页面对变量赋值 -->
  7. #set( $current = "Velocity22")
  8. <!-- 输出 -->
  9. $current is great! <br/>
  10. <!-- 输出后台context设置的参数 -->
  11. $name <br/>
  12.  
  13. <!--String循环-->
  14. #foreach( $elem in $arrList)
  15. $elem</br>
  16. #end
  17.  
  18. <!--对象循环-->
  19. #foreach( $elem in $userList)
  20. 名字:$elem.name 性别:$elem.sex 地址:$elem.address</br>
  21. #end
  22. </body>
  23. </html>

4.编写servelet文件

  1. package com.babybus.sdteam.servelet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.io.StringWriter;
  6. import java.util.ArrayList;
  7. import java.util.Properties;
  8.  
  9. import javax.servlet.ServletException;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13.  
  14. import org.apache.velocity.VelocityContext;
  15. import org.apache.velocity.app.Velocity;
  16. import org.apache.velocity.app.VelocityEngine;
  17. import org.apache.velocity.exception.MethodInvocationException;
  18. import org.apache.velocity.exception.ParseErrorException;
  19. import org.apache.velocity.exception.ResourceNotFoundException;
  20.  
  21. import com.babybus.sdteam.vo.User;
  22.  
  23. public class VelocityTemplateServelt extends HttpServlet {
  24.  
  25. private static final long serialVersionUID = 1L;
  26.  
  27. @Override
  28. public void doGet(HttpServletRequest request, HttpServletResponse response)
  29. throws IOException, ServletException {
  30.  
  31. // 设置request 和 response 编码,放置乱码
  32. request.setCharacterEncoding("UTF-8");
  33. response.setContentType("text/html;charset=UTF-8");
  34.  
  35. // 获取页面输出流
  36. PrintWriter out = response.getWriter();
  37.  
  38. // 创建Properties文件,也可以直接在目录下创建
  39. Properties properties=new Properties();
  40. properties.setProperty("resource.loader", "class");
  41. properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
  42. properties.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
  43. properties.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
  44. properties.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
  45.  
  46. // 创建模板引擎
  47. VelocityEngine velocityEngine = null;
  48. try {
  49. velocityEngine = new VelocityEngine(properties);
  50. } catch (Exception e) {
  51. e.printStackTrace();
  52. }
  53.  
  54. // 创建上下文, 用于存放变量
  55. VelocityContext context=new VelocityContext();
  56. context.put("name", "test");
  57.  
  58. // List(String)
  59. ArrayList<String> arrList = new ArrayList<String>();
  60. arrList.add("test01");
  61. arrList.add("test02");
  62. arrList.add("test03");
  63. context.put("arrList", arrList);
  64.  
  65. // UserList(存放对象List)
  66. ArrayList<User> userList = new ArrayList<User>();
  67. userList.add(new User("蔡大三", "男", "南安一中五条巷子"));
  68. userList.add(new User("马大哈", "男", "红灯区"));
  69. userList.add(new User("林超", "女", "下三路"));
  70. context.put("userList", userList);
  71.  
  72. // 读取模板文件流
  73. StringWriter sw = new StringWriter();
  74. try {
  75. velocityEngine.mergeTemplate("templates/example.vm", "utf-8", context, sw);
  76. } catch (ResourceNotFoundException e) {
  77. e.printStackTrace();
  78. } catch (ParseErrorException e) {
  79. e.printStackTrace();
  80. } catch (MethodInvocationException e) {
  81. e.printStackTrace();
  82. } catch (Exception e) {
  83. e.printStackTrace();
  84. }
  85.  
  86. // 输出到页面
  87. out.println(sw.toString());
  88. }
  89. }

5.配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <display-name></display-name>
  8.  
  9. <!--MyVelocity-->
  10. <servlet>
  11. <servlet-name>ve</servlet-name>
  12. <servlet-class>com.babybus.sdteam.servelet.VelocityTemplateServelt</servlet-class>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>ve</servlet-name>
  16. <url-pattern>/ve</url-pattern>
  17. </servlet-mapping>
  18.  
  19. <welcome-file-list>
  20. <welcome-file>index.jsp</welcome-file>
  21. </welcome-file-list>
  22. </web-app>

6.输入地址:http://localhost:8080/velocitydemo/ve启动项目

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)

转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4827097.html

[JavaWeb基础] 020.Velocity 模板引擎简单示例的更多相关文章

  1. 转 如何使用velocity模板引擎开发网站

    基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内.这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的UI( ...

  2. Velocity模板引擎介绍

    整理下Velocity使用方法,整理比较详细用例 1 Velocity基础语法 1.1 用户和开发人员参考文档 http://velocity.apache.org/engine/releases/v ...

  3. velocity模板引擎学习(4)-在standalone的java application中使用velocity及velocity-tools

    通常velocity是配合spring mvc之类的框架在web中使用,但velocity本身其实对运行环境没有过多的限制,在单独的java application中也可以独立使用,下面演示了利用ve ...

  4. Velocity模板引擎语法

    Velocity 模板引擎介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java ...

  5. Velocity模板引擎入门

    类似于PHP中的Smarty,Velocity是一个基于Java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代 ...

  6. 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用

    原文地址http://www.itzhai.com/the-introduction-of-the-velocity-template-engine-template-language-syntax- ...

  7. 使用 Velocity 模板引擎快速生成代码(zhuan)

    http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/ ****************************************** ...

  8. velocity模板引擎学习(3)-异常处理

    按上回继续,前面写过一篇Spring MVC下的异常处理.及Spring MVC下的ajax异常处理,今天看下换成velocity模板引擎后,如何处理异常页面: 一.404错误.500错误 <e ...

  9. 使用Velocity 模板引擎快速生成代码

    Velocity 模板引擎介绍 在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中.特别是在如今特别流行的MVC架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加高. ...

随机推荐

  1. Centos 搭建wordpress个人博客

    1.装apache.mariadb yum install httpd mariadb-server php php-mysql -ysystemctl start httpdsystemctl en ...

  2. 解决Vue中文本输入框v-model双向绑定后数据不显示的问题

    前言 项目中遇到一个问题就是在Vue中双向绑定对象属性时,手动赋值属性后输入框的数据不实时更新的问题. <FormItem label="地址" prop="eve ...

  3. Java笔记(day23-day26)

     IO流1,复制一个文本文件. 1,明确体系:        源:InputStream ,Reader        目的:OutputStream ,Writer    2,明确数据:       ...

  4. 用纯css、JavaScript、jQuery简单的轮播图

    完成一个可以自动切换或点击数字的轮播图 HTML代码只需要一个div 包含着一个图片和一个列表,我们主要的思路就是通过点击相应的数字,改变图片的 路径. 有4张图片都在img文件夹里,名称为  img ...

  5. C#并发编程之初识并行编程

    写在前面 之前微信公众号里有一位叫sara的朋友建议我写一下Parallel的相关内容,因为手中商城的重构工作量较大,一时之间无法抽出时间.近日,这套系统已有阶段性成果,所以准备写一下Parallel ...

  6. 从excel表格加载数据返回DataSet

    添加命名空间:using System.Data.OleDb; /// <summary> /// 从excel表格加载数据返回DataSet /// </summary> / ...

  7. MOD3干扰

    1.MOD3干扰的定义 MOD3干扰也称模3干扰,是LTE网络内干扰的一种形式,要了解这种干扰的产生原理,就要从小区PCI入手. PCI全称PhysicalCellIdentifier,即物理小区标识 ...

  8. 【HBase】集群搭建/安装部署

    目录 第一步:下载对应的HBase安装包 第二步:上传压缩包并解压 第三步:修改配置文件 第四步:安装包分发到另外两台机器 第五步:三台机器创建软连接 第六步:三台机器添加环境变量 第七步:启动HBa ...

  9. 单口RAM、双口RAM、FIFO

    单口与双口的区别在于,单口只有一组数据线与地址线,因此读写不能同时进行.而双口有两组数据线与地址线,读写可同时进行.FIFO读写可同时进行,可以看作是双口.    双口RAM分伪双口RAM(Xilin ...

  10. Spring全家桶之spring boot(五)

    Thymeleaf简介 Thymeleaf是一个流行的模板引擎,该模板引擎采用Java语言开发,模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在C#.PHP语言体系下也 ...