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>
下面可以查看一下我们的结果
推荐阅读