清单 5. ListTableTemplate.vm
#parse (“macro.vm”)
#set($plus = “status.index+1”)
#generateTH($attrs)
#generateTD($classNameLowCase $attrs)
No.
${${plus}}
Modify
Delete
在定义好所有的模板文件之后,需要做的是读取这些文件,然后根据这些文件将 model 的数据类型以及名称设置到 context 中,最后将解析出来的内容写到相应的目录中去。这些工作我们放在了一个叫做 VelocityGenerator 的类中来做,它的源码如下:
清单 6. TemplateGenerator.java
public class VelocityGenerator {
public static void main(String[] args) {
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, “classpath”);
ve.setProperty(“classpath.resource.loader.class”, ClasspathResourceLoader.class.getName());
ve.init();
Template actionTpt = ve.getTemplate(“ActionTemplate.vm”);
Template listJspTpt = ve.getTemplate(“ListJspTemplate.vm”);
Template addTpt = ve.getTemplate(“AddTemplate.vm”);
Template modifyTpt = ve.getTemplate(“ModifyTemplate.vm”);
VelocityContext ctx = new VelocityContext();
ctx.put(“classNameLowCase”, “teacher”);
ctx.put(“classNameUpCase”, “Teacher”);
String[][] attrs = {
{“Integer”,”id”},
{“String”,”name”},
{“String”,”serializeNo”},
{“String”,”titile”},
{“String”,”subject”}
};
ctx.put(“attrs”, attrs);
String rootPath = VelocityGenerator.class.getClassLoader().getResource(“”).getFile() + “../../src/main”;
merge(actionTpt,ctx,rootPath+”/java/com/liuxiang/velocity/action/TeacherAction.java”);
merge(listJspTpt,ctx,rootPath+”/webapp/teacherList.jsp”);
merge(addTpt,ctx,rootPath+”/webapp/teacherAdd.jsp”);
merge(modifyTpt,ctx,rootPath+”/webapp/teacherModify.jsp”);
System.out.println(“success…”);
}
private static void merge(Template template, VelocityContext ctx, String path) {
PrintWriter writer = null;
try {
writer = new PrintWriter(path);
template.merge(ctx, writer);
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
writer.close();
}
}
}
在运行以上代码之后,项目文件夹中将会出现与 Teacher 相关的代码文件。
在实际项目中可能不会出现很多这种单张表维护的情况,而且业务逻辑和系统架构会更加复杂,编写模板文件就更加不容易。但是无论多复杂的系统,不同的业务逻辑之间一定或多或少会有相似的代码,特别是在 JSP 和 JS 显示端文件中,因为我们在一个系统中要求显示风格、操作方式一致的时候就免不了会有相似内容的代码出现。在总结这些相似性之后我们还是可以使用 Velocity 来帮助我们生成部分内容的代码,而且即使有一些非共性的内容,我们也可以在生成的代码中继续修改。使用 Velocity 的另外一个好处是生成出来的代码更好维护,风格更加统一。
回页首
结束语
Velocity 可以被应用在各种各样的情景下,本文介绍的只是它的一种用途而已,它还可以被用来做 MVC 结构中的 view 层,或者动态内容静态化等。另外,Velocity 并不是唯一的模板框架,同样很优秀的 Freemarker 也获得了非常广泛的应用,有兴趣的读者可以去深入研究更多的功能和用途。
快下载安装吧,今天头条送你钱啦!!!!
中国人都在使用的地球上最好玩的游戏
中国人都在使用的地球上最好玩的游戏
中国人都在使用的地球上最快的浏览器
中国人都在使用的地球上最厉害的安全软件
中国人都在使用的地球上最好的看图王
中国人都在使用的地球上最快速的视频软件
中国人都在使用的地球上最全的视频软件
中国人都在使用的地球上最好最全的压缩软件
中国人都在使用的地球上最好的音乐播放器
中国人都在使用的地球上最安全的杀毒软件
中国人都在使用的地球上最全的影视大全