博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVAEE Velocity配置例子
阅读量:6901 次
发布时间:2019-06-27

本文共 4440 字,大约阅读时间需要 14 分钟。

hot3.png

看了红薯的,也想学习一下Velocity。网上例子也不少,有很多都用到Veloctiy 配置文件,我觉得比较麻烦,最后找了只用代码的,这样结构比较清晰。

0.开发环境:MyEclipse10.7,jdk1.6,JAVAEE 6.0

1.相关jar包下载:

Engine,velocity-1.7和Tools,velocity-2.0都下载,包很多,我这个例子用到下面的包就可以跑起来:

2.配置,code

新建WebProject-->VelocityTest,创建完成后结构如下:

先在web.xml配置IndexServlet(EncodeFilter是处理字符编码的,我都是UTF-8的),然后在IndexServlet里用velocity来处理页面。VelocityHelper.java是配置Velocity的。VelocityTest.java是测试的。下面我把代码一一贴出,这里是代码工程:

web.xml:

EncodeFilter
com.suchok.filter.EncodeFilter
EncodeFilter
/*
velocity
org.apache.velocity.tools.view.VelocityViewServlet
velocity
*.html
IndexServlet
com.suchok.IndexServlet
IndexServlet
/*
index.jsp
IndexServlet.java

package com.suchok;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.suchok.velocity.VelocityTest;public class IndexServlet extends HttpServlet{	/**	 * 	 */	private static final long serialVersionUID = 1L;	@Override	protected void doGet(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		process(req,resp);	}	@Override	protected void doPost(HttpServletRequest req, HttpServletResponse resp)			throws ServletException, IOException {		process(req,resp);	}		private void process(HttpServletRequest req, HttpServletResponse resp){		 PrintWriter out;		try {			resp.setContentType("text/html;charset=UTF-8");			out = resp.getWriter();			out.println(VelocityTest.HelloWorld());		} catch (IOException e) {			e.printStackTrace();		}	}}
EncodeFilter.java

package com.suchok.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class EncodeFilter implements Filter{	@Override	public void destroy() {			}	@Override	public void doFilter(ServletRequest arg0, ServletResponse arg1,			FilterChain arg2) throws IOException, ServletException {		arg0.setCharacterEncoding("utf-8");		arg2.doFilter(arg0, arg1);	}	@Override	public void init(FilterConfig arg0) throws ServletException {			}}
VelocityHelper.java

package com.suchok.velocity;import org.apache.log4j.Logger;import org.apache.velocity.Template;import org.apache.velocity.app.Velocity;public class VelocityHelper {	private static final String TMP_PATH="com/suchok/velocity/tmp";    public static Logger logger = Logger.getLogger(VelocityHelper.class);    static {       	//***find tmp file under class path    	Velocity.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");         try {            Velocity.init();        } catch (Exception e) {            logger.error(e.getMessage(), e);        }    }    public static Template getTemplate(String fileName) throws Exception {        return Velocity.getTemplate(TMP_PATH+"/"+fileName, "UTF-8");    }}
VelocityTest.java

package com.suchok.velocity;import java.io.StringWriter;import org.apache.log4j.Logger;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;public class VelocityTest {	private static Logger logger = Logger.getLogger(VelocityTest.class);	public static String HelloWorld() {		StringWriter write = null;		try {			Template template = VelocityHelper.getTemplate("hello.html");			VelocityContext vc = new VelocityContext();			vc.put("title", "hello");			write = new StringWriter();			template.merge(vc, write);			write.flush();			write.close();		} catch (Exception e) {			logger.error(e.getMessage(), e);			e.printStackTrace();		}		return write == null ? "null" : write.toString();	}}
hello.html

内容:$title

3.运行结果

4.感受

才开始学JAVAEE开发,用jsp感觉页面元素比较复杂,有时候要写java code,比较混乱,而velocity页面简单全是html和velocity标签即可,和以前用过php的smarty引擎一样,前端和后端分离了,更好维护了;jsp页面第一次要编译,然后再装载class文件,而velocity直接装载模板,暴露一些细节,但我觉得结构也清晰了。

转载于:https://my.oschina.net/yale8848/blog/167943

你可能感兴趣的文章
忙中记录
查看>>
Js点餐加减数量
查看>>
【转】ACM训练计划
查看>>
Design Tic-Tac-Toe
查看>>
LeetCode 477: Total Hamming Distance
查看>>
win10安装MarkdownPad 2报错This view has crashed的处理及md简单语法
查看>>
Unity3D - 设计模式 - 工厂模式
查看>>
第二十六课:jQuery对事件对象的修复
查看>>
Leetcode题目:Swap Nodes in Pairs
查看>>
Windows聚焦转为图片
查看>>
POJ NOI0101-09 字符菱形
查看>>
jQuery--停止动画和判断是否处于动画状态stop()
查看>>
1-1 接口自动化测试框架从设计到开发
查看>>
MYSQL常用命令
查看>>
js 打开新页面 window.open()
查看>>
Intellij idea 一个窗口打开多模块并添加依赖
查看>>
生成自己的js工具包,包括打包webpack、测试mocha、生成文档jsdoc、发布npm包的操作...
查看>>
企业构建大数据分析体系的4个层级
查看>>
[Linux学习]man page常用按键
查看>>
Django中的CSRF
查看>>