静态化-VeloCity
1.在spring.xml中配置
1 <!-- 指定vm模版路径 start --> 2 <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> 3 <property name="resourceLoaderPath" value="/WEB-INF/"/> 4 <property name="preferFileSystemAccess" value="true"/> 5 <property name="velocityProperties"> 6 <props> 7 <prop key="input.encoding">UTF-8</prop> 8 <prop key="output.encoding">UTF-8</prop> 9 <prop key="default.contentType">text/html;charset=UTF-8</prop> 10 </props> 11 </property> 12 </bean> 13 <!-- 指定vm模版路径 end -->
2.java方法
1
@Autowired
@Qualifier("velocityEngine")
private VelocityEngine velocityEngine;
@RequestMapping(value = "/vm", method = RequestMethod.GET)
2 public void createHeader(HttpServletRequest request, HttpServletResponse response, String type) throws Exception { 3 try { 4 // 静态页生成路径 5 String path1 = request.getSession().getServletContext().getRealPath("/") + "index/template/include/"; 6 createPath(path1); 7 String path = path1+"header.jsp"; 8 // css路径 9 String csspath = getPath(request); 10 //velocityEngine.setProperty("resourceLoaderPath", "/WEB-INF/velocity/"); 11 Template tl = velocityEngine.getTemplate("./index.vm", "UTF-8"); 12 VelocityContext vc = new VelocityContext(); 13 //数据封装start 14 vc.put("csspath", csspath); 15 vc.put("tag", 12); 16 vc.put("isnull", ""); 17 vc.put("bool", false); 18 List l=new ArrayList(); 19 l.add("a"); 20 l.add("b"); 21 l.add("c"); 22 l.add("d"); 23 l.add("e"); 24 vc.put("list", l); 25 SysNew s = new SysNew(); 26 s.setContents("contents"); 27 s.setEvents("eve"); 28 vc.put("sys", s); 29 //数据封装end 30 vc.put("charset","<%@ page language='java' import='java.util.*' pageEncoding='UTF-8'%>"); 31 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8")); 32 tl.merge(vc, bw); 33 34 //直接生成html代码不生成--发模版邮件使用star 35 //StringWriter sw = new StringWriter(); 36 //tl.merge(vc, sw); 37 //response.getWriter().print(sw.toString()); 38 //直接生成html代码不生成--发模版邮件使用end 39 bw.close(); 40 41 } catch (Exception e) { 42 System.out.println(e.getMessage() + "-----------------------"); 43 } 44 }
3.在WEB-INF下创建模版index.vm,内容如下,我整理了常用的标签在模版中
$charset##去掉这个当前页面中文乱码 1.变量的调用,后台存入“csspath”,前台 $csspath</br>${csspath}<br /> 2.if判断</br> #if($tag == 1) 等于1 #else 不等于1 #end <br/> 3.判断是否为空<br/> #if($isnull) 变量为空 #else 变量不为空 #end <br/> 4.判断true OR false <br/> #if($bool) true #else false #end <br/> 5.注释:两个“#”注释单行,“#**#”注释代码块 <br/> 6.循环<br/> #foreach($lis in $list) $lis -- $velocityCount ##当前循环下标 #end <br/> 7.定义变量 #set ($bianliang="bianliang") $bianliang <br/> 8.调用对象中的值,和jsp中类似<br> $sys.events $sys.Contents <br/> 9.引用模版<br/> 主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。 如:##parse("/blog/top.html")或#include("/blog/top.html") parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样显示。 ##inclue("模板文件名")或#parse("模板文件名") <br/>
4.引用jar
velocity-1.7.jar