读书人

Freemarker网站静态化的兑现(转载)

发布时间: 2012-06-26 10:04:13 作者: rapoo

Freemarker网站静态化的实现(转载)

?做程序也做了将近4年时间了,从来没有发过什么技术性的文章,今天发一个只在大家一起共同学习进步,如有错误地方请指正。?
?? 最近自己做了一个做网络广告的网站叫全方位商机平台的项目,由于网站首页上板块划分很多,不同板块的数据库查询方式不同,首页内容量巨大,如果按照一般的动态jsp页面的话那么数据库查询将是巨大的开销,会导致首页访问速度的下降。于是考虑将这个首页全部静态化。参考地址:http://www.361pt.com/。首页的速度是非常快的。?
?? 整个网站才用struts2 + spring + hibernate + freemarker + urlrewrite完成。首页纯静态化,频道及其他页面通过urlrewrite伪静态。现在废话少说。我先给出首页jsp body源代码:?

然后再写一个方法专门生成友情链接静态页面:?

view sourceprint?1?????/** 2?* 生成友情链接的静态页index_link.html 3?* @param context 4?* @param data 5?*/6public static void createIndexFriendLink(ServletContext context,Map<String,Object> data){ 7????crateHTML(context,data,"index_link.ftl","index_link.html"); 8}

此方法调用上面的createHTML方法。?
然后根据以上方法我们就可以再Struts2的action里面从数据库查询数据放入map调用createIndexFriendLink()方法生成静态页了。?
这是action中的一个方法:?

view sourceprint?01?????/** 02?* 生成友情链接静态页index_link.html 03?* @return 04?*/05public String createLink(){ 06????//权限验证 07????if(! this.isAccess()) 08????????return "error"; 09????try{ 10????????//得到友情链接 11????????List links = friendLinkDAO.findAll(); 12????????//准备数据 13????????HashMap<String,Object> data = new HashMap<String,Object>(); 14????????data.put("links", links); 15????????//调用静态页面方法 16????????HTML.createIndexFriendLink(ServletActionContext.getServletContext(), data); 17????????addActionMessage("静态页面生成成功!"); 18????????return "message"; 19????}catch(Exception e){ 20????????e.printStackTrace(); 21????????return "failure"; 22????} 23}

List links = friendLinkDAO.findAll();通过spring注入action的hiberate DAO获取数据给list然后通过以下代码?
HashMap<String,Object> data = new HashMap<String,Object>();?
data.put("links", links);?
准备数据调用createIndexFriendLink()方法。?
以下是:ftl模版源码:?

view sourceprint?01<#if links?size != 0> 02<div class="link"> 03????????<strong>友情链接:</strong> 04????????<#list links as link> 05????????<a href="${link.linkUrl}" target="_blank" title="${link.linkName}">${link.linkName}</a> 06????????</#list> 07</div> 08<#else> 09<div class="link"></div> 10</#if>

这样友情链接静态页就生成了。然后其他静态页依此葫芦画瓢。?

总结:虽然静态页访问速度快,但实现起来毕竟还是比较麻烦了,维护也是一个麻烦事情。如果您的站点更新速度快那么就需要在你的后台数据更新部分调用相应的createHTML方法实时的生成静态页面。如果更新速度不慢可以在后台手动更新或者利用操作系统的定时任务功能去执行你的静态页面生成程序。www.361pt.com这个网站我是采用了这两种方式。

读书人网 >软件架构设计

热点推荐