[JavaWeb基础] 020.Velocity 模板引擎简单示例
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文件
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- </head>
- <body>
- <!-- 页面对变量赋值 -->
- #set( $current = "Velocity22")
- <!-- 输出 -->
- $current is great! <br/>
- <!-- 输出后台context设置的参数 -->
- $name <br/>
- <!--String循环-->
- #foreach( $elem in $arrList)
- $elem</br>
- #end
- <!--对象循环-->
- #foreach( $elem in $userList)
- 名字:$elem.name 性别:$elem.sex 地址:$elem.address</br>
- #end
- </body>
- </html>
4.编写servelet文件
- package com.babybus.sdteam.servelet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.util.ArrayList;
- import java.util.Properties;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.velocity.VelocityContext;
- import org.apache.velocity.app.Velocity;
- import org.apache.velocity.app.VelocityEngine;
- import org.apache.velocity.exception.MethodInvocationException;
- import org.apache.velocity.exception.ParseErrorException;
- import org.apache.velocity.exception.ResourceNotFoundException;
- import com.babybus.sdteam.vo.User;
- public class VelocityTemplateServelt extends HttpServlet {
- private static final long serialVersionUID = 1L;
- @Override
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- // 设置request 和 response 编码,放置乱码
- request.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- // 获取页面输出流
- PrintWriter out = response.getWriter();
- // 创建Properties文件,也可以直接在目录下创建
- Properties properties=new Properties();
- properties.setProperty("resource.loader", "class");
- properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
- properties.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
- properties.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
- properties.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
- // 创建模板引擎
- VelocityEngine velocityEngine = null;
- try {
- velocityEngine = new VelocityEngine(properties);
- } catch (Exception e) {
- e.printStackTrace();
- }
- // 创建上下文, 用于存放变量
- VelocityContext context=new VelocityContext();
- context.put("name", "test");
- // List(String)
- ArrayList<String> arrList = new ArrayList<String>();
- arrList.add("test01");
- arrList.add("test02");
- arrList.add("test03");
- context.put("arrList", arrList);
- // UserList(存放对象List)
- ArrayList<User> userList = new ArrayList<User>();
- userList.add(new User("蔡大三", "男", "南安一中五条巷子"));
- userList.add(new User("马大哈", "男", "红灯区"));
- userList.add(new User("林超", "女", "下三路"));
- context.put("userList", userList);
- // 读取模板文件流
- StringWriter sw = new StringWriter();
- try {
- velocityEngine.mergeTemplate("templates/example.vm", "utf-8", context, sw);
- } catch (ResourceNotFoundException e) {
- e.printStackTrace();
- } catch (ParseErrorException e) {
- e.printStackTrace();
- } catch (MethodInvocationException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- // 输出到页面
- out.println(sw.toString());
- }
- }
5.配置web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <display-name></display-name>
- <!--MyVelocity-->
- <servlet>
- <servlet-name>ve</servlet-name>
- <servlet-class>com.babybus.sdteam.servelet.VelocityTemplateServelt</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>ve</servlet-name>
- <url-pattern>/ve</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
6.输入地址:http://localhost:8080/velocitydemo/ve启动项目
本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4827097.html
[JavaWeb基础] 020.Velocity 模板引擎简单示例的更多相关文章
- 转 如何使用velocity模板引擎开发网站
基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内.这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的UI( ...
- Velocity模板引擎介绍
整理下Velocity使用方法,整理比较详细用例 1 Velocity基础语法 1.1 用户和开发人员参考文档 http://velocity.apache.org/engine/releases/v ...
- velocity模板引擎学习(4)-在standalone的java application中使用velocity及velocity-tools
通常velocity是配合spring mvc之类的框架在web中使用,但velocity本身其实对运行环境没有过多的限制,在单独的java application中也可以独立使用,下面演示了利用ve ...
- Velocity模板引擎语法
Velocity 模板引擎介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java ...
- Velocity模板引擎入门
类似于PHP中的Smarty,Velocity是一个基于Java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代 ...
- 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用
原文地址http://www.itzhai.com/the-introduction-of-the-velocity-template-engine-template-language-syntax- ...
- 使用 Velocity 模板引擎快速生成代码(zhuan)
http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/ ****************************************** ...
- velocity模板引擎学习(3)-异常处理
按上回继续,前面写过一篇Spring MVC下的异常处理.及Spring MVC下的ajax异常处理,今天看下换成velocity模板引擎后,如何处理异常页面: 一.404错误.500错误 <e ...
- 使用Velocity 模板引擎快速生成代码
Velocity 模板引擎介绍 在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中.特别是在如今特别流行的MVC架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加高. ...
随机推荐
- Centos 搭建wordpress个人博客
1.装apache.mariadb yum install httpd mariadb-server php php-mysql -ysystemctl start httpdsystemctl en ...
- 解决Vue中文本输入框v-model双向绑定后数据不显示的问题
前言 项目中遇到一个问题就是在Vue中双向绑定对象属性时,手动赋值属性后输入框的数据不实时更新的问题. <FormItem label="地址" prop="eve ...
- Java笔记(day23-day26)
IO流1,复制一个文本文件. 1,明确体系: 源:InputStream ,Reader 目的:OutputStream ,Writer 2,明确数据: ...
- 用纯css、JavaScript、jQuery简单的轮播图
完成一个可以自动切换或点击数字的轮播图 HTML代码只需要一个div 包含着一个图片和一个列表,我们主要的思路就是通过点击相应的数字,改变图片的 路径. 有4张图片都在img文件夹里,名称为 img ...
- C#并发编程之初识并行编程
写在前面 之前微信公众号里有一位叫sara的朋友建议我写一下Parallel的相关内容,因为手中商城的重构工作量较大,一时之间无法抽出时间.近日,这套系统已有阶段性成果,所以准备写一下Parallel ...
- 从excel表格加载数据返回DataSet
添加命名空间:using System.Data.OleDb; /// <summary> /// 从excel表格加载数据返回DataSet /// </summary> / ...
- MOD3干扰
1.MOD3干扰的定义 MOD3干扰也称模3干扰,是LTE网络内干扰的一种形式,要了解这种干扰的产生原理,就要从小区PCI入手. PCI全称PhysicalCellIdentifier,即物理小区标识 ...
- 【HBase】集群搭建/安装部署
目录 第一步:下载对应的HBase安装包 第二步:上传压缩包并解压 第三步:修改配置文件 第四步:安装包分发到另外两台机器 第五步:三台机器创建软连接 第六步:三台机器添加环境变量 第七步:启动HBa ...
- 单口RAM、双口RAM、FIFO
单口与双口的区别在于,单口只有一组数据线与地址线,因此读写不能同时进行.而双口有两组数据线与地址线,读写可同时进行.FIFO读写可同时进行,可以看作是双口. 双口RAM分伪双口RAM(Xilin ...
- Spring全家桶之spring boot(五)
Thymeleaf简介 Thymeleaf是一个流行的模板引擎,该模板引擎采用Java语言开发,模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在C#.PHP语言体系下也 ...