为什么80%的码农都做不了架构师?>>>   

hello.vm

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Insert title here</title></head><body bgcolor="#ffffff"><center><h2>Hello Velocity </h2>
<form method="post" action="LayServlet" name=""><table><tr><td  align="center"><input type="text" name="username" value=""/></td></tr><tr><td  align="center"><input type="password" name="pwd" value=""/></td></tr><tr><td  align="center"><input type="submit" name="submit" value="sub"/></td></tr></table>
</form></center></body>
</html>

结果页面 helloResult.vm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Insert title here</title></head><body bgcolor="#ffffff"><center><h2>Hello Velocity yang</h2><table width="100" cellpadding="5" cellspacing="1" bordercolor="#333333"><tr><td bgcolor="#eeeeee" align="center">Names</td></tr>#foreach ($name in $theList)  <tr><td bgcolor="#6666FF" align="center">$name</td></tr>#end  <tr><td >you win</td></tr></table></center></body>
</html>

LayoutServlet

package test_vm;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Properties;
import java.util.Vector;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.tools.view.VelocityLayoutServlet;/*** Servlet implementation class LayServlet*/
public class LayServlet extends VelocityLayoutServlet {private static final long serialVersionUID = 1L;/*** @see VelocityLayoutServlet#VelocityLayoutServlet()*/public LayServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubthis.processDoc(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubthis.processDoc(request, response);}public void processDoc(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{Properties prop = new Properties();  String path = this.getServletContext().getRealPath("/");  prop.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path + "xa_template/");  Velocity.init(prop);VelocityContext vContext = new VelocityContext();Template template = Velocity.getTemplate("helloResult.vm");String p1 = request.getParameter("username");  String p2 = request.getParameter("pwd");   Vector personList = new Vector();  personList.addElement(p1);  personList.addElement(p2);  vContext.put("theList", personList); //将模板数据 list放置到上下文环境context中  PrintWriter writer =response.getWriter();template.merge(vContext,writer);writer.flush();writer.close();}}

web.xml  配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>xinai</display-name><welcome-file-list><welcome-file>/xa_template/hello.vm</welcome-file></welcome-file-list><servlet><servlet-name>velocity</servlet-name><servlet-class>org.apache.velocity.tools.view.VelocityLayoutServlet</servlet-class></servlet><servlet-mapping><servlet-name>velocity</servlet-name><url-pattern>*.vm</url-pattern></servlet-mapping><servlet><description></description><display-name>LayServlet</display-name><servlet-name>LayServlet</servlet-name><servlet-class>test_vm.LayServlet</servlet-class></servlet><servlet-mapping><servlet-name>LayServlet</servlet-name><url-pattern>/LayServlet</url-pattern></servlet-mapping>
</web-app>

注意:servlet继承VelocityLayoutServlet 配置文件velocity.properties必须有如下代码片段

# Filepath for error template,
#  relative to web application root directory
tools.view.servlet.error.template = error.vm     #错误页# Directory for layout templates,
#  relative to web application root directory
tools.view.servlet.layout.directory = xa_template/   #vm文件所在路径# Filepath of the default layout template
#  relative to the layout directory
#  NOT relative to the root directory of the webapp!
tools.view.servlet.layout.default.template =  hello.vm    #默认页

依赖jar包

commons-beanutils-1.7.0.jar

commons-collections-3.2.jar

commons-digester-1.8.jar

commons-logging-1.1.jar

velocity-1.7-dep.jar

velocity-1.7.jar

velocity-tools-2.0.jar

velocity-tools-generic-2.0.jar

velocity-tools-view-2.0.jar

转载于:https://my.oschina.net/UpBoy/blog/155572

Velocity初尝试相关推荐

  1. SQLSERVER2012里的扩展事件初尝试(上)

    SQLSERVER2012里的扩展事件初尝试(上) SQLSERVER2012里的扩展事件初尝试(下) 周未看了这两篇文章: 扩展事件在Denali CTP3里的新UI(一) 扩展事件在Denali ...

  2. Serverless 开发前端初尝试

    Serverless 开发前端初尝试 啥是云开发 云开发serverless是一种模式,和传统模式的区别在于开发者不用维护服务器.服务器的日常维护, 负载均衡,扩容和减容, 运维,安全,日志等都交给了 ...

  3. Wireshark研究血族Bloodline手游聊天系统 - 初尝试

    血族Bloodline手游聊天系统的相关研究 目录 1. 介绍&起因 2. Fiddler初尝试 3. Wireshark初尝试 4. 总结 一.介绍&起因 ↶ (PS. 容我说先几句 ...

  4. eclipse Debug 初尝试 (09.10教师节(*^▽^*))

    09.10 eclipse Debug 初尝试 首先我们新建一个project,class.在其中写入我们即将要调试的源代码. 点击工具栏的瓢虫图标,进入debug界面(或者点击上面的Run-> ...

  5. HarmonyOS实战—原子化服务初尝试

    目录 原子化服务初尝试 什么是原子化服务 原子化服务的优点 创建原子化服务项目 运行原子化服务项目 目录结构分析 原子化服务初尝试 什么是原子化服务 原子化服务是HarmonyOS提供的一种面向未来的 ...

  6. Cydia Substrate 初尝试:刷计步软件数据

    Cydia Substrate 初尝试:刷计步软件数据 Cydia Substrate 初尝试刷计步软件数据 Cydia 设备准备 探索 思路 监听器注册 事件分发 进行Hook Cydia Cydi ...

  7. Velocity初体验

    不少人看过或了解过Velocity,名称字面翻译为:速度.速率.迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts是如何联系,怎么看待Vel ...

  8. vuejs和webpack项目(VueComponent)初尝试——瀑布流组件

    碎碎念:      好久不见,最近自己有些懈怠没更过多少博,主要原因之一是对自己学习方式的一些思考,翻看之前的博客多是记录学习笔记这反映出了自己对于前端还停留在学习-复习知识点的阶段压根没多少实践经验 ...

  9. 手机编程环境初尝试-用AIDE开发Android应用

    前不久才接触到纯粹用手机进行编程的开发者, 当时颇有孤陋寡闻之感, 因为之前听说过手机编程还是一些在线编程学习网站开发的学习环境, 没有想过真的有用它做实际开发的. 此文用AIDE免费版在自己的手机上 ...

最新文章

  1. 一文读懂机器学习、数据科学、人工智能、深度学习和统计学之间的区别!
  2. java 不用if_Java 不用for不用if写出九九乘法表算法
  3. 开发日记-20190521 关键词 bash的几个初始化文件
  4. 程序员面试题精选100题(63)-数组中三个只出现一次的数字[算法]
  5. 粒子滤波Matlab示例
  6. 《scikit-learn》随机森林之分类树
  7. 微信iOS 7.0.5版本终于上线:新功能好方便!
  8. windows netstat taskkill命令 操作进程
  9. C++ 怎么自己创建头文件
  10. python中mid_Python生成音乐 之 mido库读取midi文件
  11. Embarcadero.ERStudio安装
  12. 计算机基础excel操作试题,大学计算机基础 excel测试题 求答案~~喵~~
  13. 3D 机器视觉应用并采用 DLP 技术的精确点云生成
  14. Python进制转换与ASCII转换
  15. 读《如何有效阅读一本书:超实用笔记读书法》
  16. iwatch表盘壁纸图片_iwatch壁纸大全卡西欧表盘app
  17. 中国到欧洲专线快递要多长时间
  18. oracle裁员原因_甲骨文中国裁员是什么情况? 甲骨文中国裁员的原因是什么?...
  19. 【FlutterFlame 游戏 - 壹】开启新世界的大门
  20. 信息墒与压缩编码基础

热门文章

  1. 大数据成国际博弈焦点
  2. 2020校招提前批vivo一二题
  3. [整理]三个独体字组成的字汇总
  4. Java 打印PDF文档 - 指定打印机、自定义纸张大小、设置打印参数、显示打印对话框等
  5. nxp电源管理芯片计划及功能介绍
  6. 最新代雅阁噪音测试软件,【图】雅阁八代全车隔音噪音测试报告(用科学的数据说话)(转)...
  7. ArcGIS:加载历史遥感影像
  8. 牛客 五子棋 逆波兰表达式计算器
  9. Object._proto_指向谁?带来的思考
  10. 数字信号处理(DTFT与DFT、DFS的详细讲解以及FFT算法)