Velocity学习(一)Hello World

Velocity模板引擎技术功能十分强大,在这里仅简单学习了一些入门知识,深入的知识需要在实际开发中运用中慢慢积累经验。这里讲解一下在web application环境中简单使用Velocity。

创建一个View来展示数据,这里以HTML文件作为Template,通过Velocity来填充动态数据。创建一个简单HTML文件 hello.html。

<body>
	<div style="margin:20px;"></div>
	<div style="width:80%;">
		<h3>hello world<span style="color:red;">$name</span></h3>
	</div>
</body>

 当客户端请求上面页面,服务端需要给上面的Template填充动态数据生产出HTML界面返回给客户端,这里没有使用Struts2和SpringMVC等第三方框架。创建一个Servlet对象通过继承VelocityViewServlet,可以简化开发。

public class MyVelocityViewServlet extends VelocityViewServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected Template handleRequest(HttpServletRequest request,
			HttpServletResponse response, Context ctx) {
		ctx.put("name", "Velocity");
		return getTemplate("hello.html");

	}

}

 完成了以上两个步骤,至少有一个问题没有解决那就是Template文件(hello.html)应该放到哪个路径下?

也就是VelocityViewServlet会从哪个路径下加载Template文件的问题?通过配置velocity.properties文件可以解决加载文件路径问题。

#模板的加载路径
webapp.resource.loader.path=/WEB-INF/vm/
## 设置模板文件加载器,webapp从应用根目录加载
resource.loader = webapp
webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader
## 设置编码
input.encoding = UTF-8
output.encoding = UTF-8

 创建了velocity.properties文件,引入了一个新的问题,这个配置文件又该放到哪儿?通过查询官方文档,Velocity会检索WEB-INF目录,来查找配置文件。将配置文件放到WEB-INF目录下即可。如果不放WEB-INF目录下,也可以自定义路径,但是也不是随便把配置文件放到一个随意的目录,Velocity会以WebRoot目录作为根目录查找velocity.properties配置文件。将配置文件放到WebRoot根目录下为例进行配置。


通过在web.xml文件中进行配置,让velocity来找到velocity.properties。

  	<!-- 相对于webroot路径 使用classpath写法无效  -->
  	<context-param>  
           <param-name>org.apache.velocity.properties</param-name>  
           <param-value>velocity.properties</param-value>  
  	</context-param> 
  	<context-param>  
            <param-name>org.apache.velocity.toolbox</param-name>
    		<param-value>/WEB-INF/tools.xml</param-value>
  	</context-param>
  	 
	<servlet>
		<servlet-name>MyVelocityServlet</servlet-name>
		<servlet-class>org.lian.servlet.MyVelocityViewServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>MyVelocityServlet</servlet-name>
		<url-pattern>/servlet/hello</url-pattern>
	</servlet-mapping>
	
	

 下面可以查看一下我们的结果

 


 

猜你喜欢

转载自blog-chen-lian.iteye.com/blog/2380627