首选网上有很多教程,我这里用的是Velocity教程 - 简书。本身教程可以,但是有很多模糊不清楚的地方。我这里踩了很多坑。所以这里将我踩的坑扒出来,如果有人能用到最好。
在进行velocity的web开发尝试中。web.xml的配置需要注意一点。教程中只是说了要配置velocity.properties的配置。没有说杂么去加载它。我这里采用的是在web.xml中进行配置的加载方式。
测试项目结构如图:
其中教程中需要修改的文件有:
MyVelocityViewServlet:
packagecom.jiyx.test.servlet;
importorg.apache.velocity.Template;
importorg.apache.velocity.context.Context;
importorg.apache.velocity.tools.view.servlet.VelocityViewServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*@authorjiyx
*@create2018-02-28-16:14
*/
public classMyVelocityViewServletextendsVelocityViewServlet {
@Override
protectedTemplate handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
ctx.put("name","jiyx");
request.setAttribute("age",28);
returngetTemplate("/vm/test.vm"); // 主要变换在这里
}
}
velocity.properties
##设置模板文件加载器,webapp从应用根目录加载
resource.loader=webapp
#webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader
##因为我的项目结构可能和教程提供人的项目结构不同,这里直接用classPath加载器
webapp.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader ## 主要变化在这里
##模板路径,根目录下的vm文件夹
webapp.resource.loader.path=/vm
##设置编码
input.encoding=UTF-8
output.encoding=UTF-8
web.xml
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd";>
Archetype Created Web Application
MyVelocityServlet
com.jiyx.test.servlet.MyVelocityViewServlet
org.apache.velocity.properties
/velocity.properties
MyVelocityServlet
/servlet/myVelocityServlet
这几个文件修改完成之后,项目才能正常访问。
网友评论