Velocity + Spring定时器 生成静态页面

最近做项目需要将首页静态化,于是着手了下velocity,成功将首页静态化。 
首先需要下载 velocity-dep.jar 在附件中我上传了 

velocity需要配置如下 
velocity.property 
日志生成路径 
runtime.log = velocity.log 
乱码解决 
input.encoding=GBK 
output.encoding=GBK 
指定vm模板路径 绝对所在路径(如我的vm模板放在src下 编译后就在一下目录了) 
file.resource.loader.path = X://workspace//test//web//WEB-INF//classes 


spring定时器 
Java代码   收藏代码
  1. public class ToHTMLServiceImp implements ToHTMLService{  
  2. // 稿件点击排行  
  3. private List articlelist = new ArrayList();  
  4. public void toHtml() {  
  5. //执行查询的方法  
  6. articlelist =  查询方法list  
  7. //使用vm模板静态化  
  8. 读取配置文件  
  9. VelocityEngine   ve   =   new   VelocityEngine();  
  10. ve.init("X:\\workspace\\test\\src\\velocity.properties");   
  11. VelocityContext context = new VelocityContext();  
  12. //路径跟前面设置的path相对应   
  13. Template template = ve.getTemplate("mytemplate.vm");  
  14. //将获得的对象放入Velocity的环境上下文中方便取用  
  15. context.put("articleListMap", articleListMap);  
  16. //将模板生成到指定位置 我生成的名字叫home.html  
  17. File savefile = new File("X:\\workspace\\test\\web\\site\\home\\home.html");   
  18. if(!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs();   
  19.   
  20. FileOutputStream outstream = new FileOutputStream(savefile);   
  21.   
  22. OutputStreamWriter writer = new OutputStreamWriter(outstream,"GBK");   
  23.   
  24. BufferedWriter bufferWriter = new BufferedWriter(writer);   
  25.   
  26. template.merge(context, bufferWriter);   
  27.   
  28.  bufferWriter.flush();   
  29.   
  30. outstream.close();   
  31.   
  32.  bufferWriter.close();   
  33. }catch( Exception e ){   
  34.   
  35.             e.printStackTrace();   
  36.   
  37. }   
  38. }  


jsp页面包含html 
<body> 
<%@include file="home_head.jsp" %> 
<!--生成的静态页面 使用jsp动态标签 加入 如编码一致 基本不会出现乱码的情况 --> 
<jsp:include page="home.html"></jsp:include> 
<%@include file="home_foot.jsp" %> 
</body> 

spring定时器相关配置 
<bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean"> 
<property name="scheduledTimerTasks"> 
<list> 
<ref local="timeTask"/> 
</list> 
</property> 
</bean> 

<bean id="home.ToHTML" class="zgzy.site.timer.Home2HtmlTimer" singleton="true"> 
</bean> 

<bean id="methodInvokingTask" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject"><ref bean="home.ToHTML"/></property> 
<property name="targetMethod"><value>toHtml</value></property> 
</bean> 

<bean id="timeTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> 
<property name="timerTask"><ref bean="methodInvokingTask"/></property> 
<property name="delay"><value>0</value></property> 
<!-- 我设的是 十分钟一次 --> 
<property name="period"><value>600000</value></property> 
</bean> 

  <context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/classes/config/site/site-time-task.xml</param-value> 
  </context-param> 
  <listener> 
<listener-class> 
org.springframework.web.context.ContextLoaderListener 
</listener-class> 
</listener> 
vm标签语法 我贴几个我为了方便贴在记事本里的草稿 应该很容易理解 所以不解释了:) 
$element.sid 
#set ($i=0) 
#foreach($element in $pictureList) 
#set($i=$i+1) 
$element.getStringFormat($element.name,22) 
$element.fileDate 
#foreach($element in $articleListMap.get("test")) 
#foreach($element in $zhuantiList)  
#if($velocityCount < 4) 
#end 

$element.getStringDate($element.fileDate,5,10) 

提一句:生成的静态文件,如果是linux服务器,通过rsync+inotify,同步到静态文件夹或者是静态文件服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值