欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Velocity学习(一)Hello World

程序员文章站 2022-06-12 09:46:25
...

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根目录下为例进行配置。


Velocity学习(一)Hello World
            
    
    博客分类: 模板引擎 模板引擎Velocity 

通过在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>
	
	

 下面可以查看一下我们的结果
Velocity学习(一)Hello World
            
    
    博客分类: 模板引擎 模板引擎Velocity 
 


 

  • Velocity学习(一)Hello World
            
    
    博客分类: 模板引擎 模板引擎Velocity 
  • 大小: 12.4 KB
  • Velocity学习(一)Hello World
            
    
    博客分类: 模板引擎 模板引擎Velocity 
  • 大小: 39.8 KB