- 浏览: 115063 次
- 性别:
- 来自: 上海
文章分类
最新评论
1 Freemarker网站静态化的实现(转)
首页:
1.<body>
2.<div id="wrap">
3. <!--头部开始-->
4. <jsp:include page="/html/top.html" flush="true"></jsp:include>
5. <!--头部结束-->
6. <!--导航开始-->
7. <jsp:include page="/html/channel.html" flush="true"></jsp:include>
8. <!--导航结束-->
9. <jsp:include page="/html/center.html" flush="true"></jsp:include>
10. <!--友情连接开始-->
11. <jsp:include page="/html/index_link.html" flush="true"></jsp:include>
12. <!--友情结束-->
13. <!--底部开始-->
14. <jsp:include page="/html/bottom.html" flush="true"></jsp:include>
15. <!--底部结束-->
16.</div>
17.</body>
整个网站首页的基本结构是通过jsp的include标签将所有通过freemarker生成的静态页面组织起来。后台控制各个部分的静态页生成。这样做将首页进行了拆分,便于了静态页面的维护,当我们需要生成“友情链接”部分的时候就只生成友情链接部分,而不需要将整个页面都从新生成一次。 2.<div id="wrap">
3. <!--头部开始-->
4. <jsp:include page="/html/top.html" flush="true"></jsp:include>
5. <!--头部结束-->
6. <!--导航开始-->
7. <jsp:include page="/html/channel.html" flush="true"></jsp:include>
8. <!--导航结束-->
9. <jsp:include page="/html/center.html" flush="true"></jsp:include>
10. <!--友情连接开始-->
11. <jsp:include page="/html/index_link.html" flush="true"></jsp:include>
12. <!--友情结束-->
13. <!--底部开始-->
14. <jsp:include page="/html/bottom.html" flush="true"></jsp:include>
15. <!--底部结束-->
16.</div>
17.</body>
以下是我生成静态页最核心的方法,使用freemarker。
/** *//**
* 生成静态页面主方法
* @param context ServletContext
* @param data 一个Map的数据结果集
* @param templatePath ftl模版路径
* @param targetHtmlPath 生成静态页面的路径
*/
public static void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){
Configuration freemarkerCfg = new Configuration();
//加载模版
freemarkerCfg.setServletContextForTemplateLoading(context, "/");
freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
try {
//指定模版路径
Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8");
template.setEncoding("UTF-8");
//静态页面路径
String htmlPath = context.getRealPath("/html")+"/"+targetHtmlPath;
File htmlFile = new File(htmlPath);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
//处理模版
template.process(data, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
其实很简单,只要Google一下就有很多这方面的代码。我也是Google的代码然后自己再根据实际情况修改。简单说明一下参数: * 生成静态页面主方法
* @param context ServletContext
* @param data 一个Map的数据结果集
* @param templatePath ftl模版路径
* @param targetHtmlPath 生成静态页面的路径
*/
public static void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){
Configuration freemarkerCfg = new Configuration();
//加载模版
freemarkerCfg.setServletContextForTemplateLoading(context, "/");
freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
try {
//指定模版路径
Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8");
template.setEncoding("UTF-8");
//静态页面路径
String htmlPath = context.getRealPath("/html")+"/"+targetHtmlPath;
File htmlFile = new File(htmlPath);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
//处理模版
template.process(data, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
ServletContext :这个不用说了吧。做java web的应该都知道,只不过struts2中这样获取ServletActionContext.getServletContext()
Map<String,Object> data : 模版的数据来源。freemarker通过一个Map给ftl模版送数据。
现在已友情链接为列子详细介绍静态页面如何生成。其他模块以此类推。
String templatePath : ftl所在的路径。我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。
String targetHtmlPath : 最后生成静态页的路径:我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。
友情链接根据这段代码<jsp:include page="/html/index_link.html" flush="true"></jsp:include>我们需要freemarker生成一个index_link.html文件。友情链接数据来源通过数据库查询获取。
然后再写一个方法专门生成友情链接静态页面:
/** *//**
* 生成友情链接的静态页index_link.html
* @param context
* @param data
*/
public static void createIndexFriendLink(ServletContext context,Map<String,Object> data){
crateHTML(context,data,"index_link.ftl","index_link.html");
此方法调用上面的createHTML方法。 * 生成友情链接的静态页index_link.html
* @param context
* @param data
*/
public static void createIndexFriendLink(ServletContext context,Map<String,Object> data){
crateHTML(context,data,"index_link.ftl","index_link.html");
然后根据以上方法我们就可以再Struts2的action里面从数据库查询数据放入map调用createIndexFriendLink()方法生成静态页了。
这是action中的一个方法:
/** *//**
* 生成友情链接静态页index_link.html
* @return
*/
public String createLink(){
//权限验证
if(! this.isAccess())
return "error";
try{
//得到友情链接
List links = friendLinkDAO.findAll();
//准备数据
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
//调用静态页面方法
HTML.createIndexFriendLink(ServletActionContext.getServletContext(), data);
addActionMessage("静态页面生成成功!");
return "message";
}catch(Exception e){
e.printStackTrace();
return "failure";
}
}
List links = friendLinkDAO.findAll();通过spring注入action的hiberate DAO获取数据给list然后通过以下代码 * 生成友情链接静态页index_link.html
* @return
*/
public String createLink(){
//权限验证
if(! this.isAccess())
return "error";
try{
//得到友情链接
List links = friendLinkDAO.findAll();
//准备数据
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
//调用静态页面方法
HTML.createIndexFriendLink(ServletActionContext.getServletContext(), data);
addActionMessage("静态页面生成成功!");
return "message";
}catch(Exception e){
e.printStackTrace();
return "failure";
}
}
HashMap<String,Object> data = new HashMap<String,Object>();
data.put("links", links);
准备数据调用createIndexFriendLink()方法。
以下是:ftl模版源码:
<#if links?size != 0>
<div class="link">
<strong>友情链接:</strong>
<#list links as link>
<a href="${link.linkUrl}" target="_blank" title="${link.linkName}">${link.linkName}</a>
</#list>
</div>
<#else>
<div class="link"></div>
</#if>
这样友情链接静态页就生成了。然后其他静态页依此葫芦画瓢。 <div class="link">
<strong>友情链接:</strong>
<#list links as link>
<a href="${link.linkUrl}" target="_blank" title="${link.linkName}">${link.linkName}</a>
</#list>
</div>
<#else>
<div class="link"></div>
</#if>
发表评论
-
正则基础
2009-11-03 10:15 594public class ReEX { /** * ... -
cookie
2009-11-03 10:25 624//servlet//生成cookie对名象java.uti ... -
junit
2009-11-03 17:44 673junit简介: * 创建test目录与src同级,同时建立 ... -
JAVA语言读取MAC地址(转)
2009-11-06 17:21 740import java.io.*; public cla ... -
Apache BeanUtils
2009-11-29 21:17 567BeanUtils.copyProperties 与 Pr ... -
IO流
2009-11-29 21:18 5901 输入/输出流 字节流 字符 ... -
Map-iterator
2009-11-29 21:20 719Set temp=new HashSet();Set e ... -
日期Format
2009-11-29 21:26 708日期格式化 Date currentTime = new Da ... -
判断是否属于此类型
2009-11-29 21:27 495event.getValue() instanceof Act ... -
日期处理
2009-11-29 21:28 557Calendar g=Calendar.getInsta ... -
生成jar包
2009-11-29 21:29 475生成jar包 jar -cvf test.jar *.* *. ... -
同步锁
2009-11-29 21:30 523public void synchronized getall ... -
序列化与反序列化
2009-11-29 21:31 608序列化是把一个对象的状态写入一个字节流的过程,它执行RMI,R ... -
java mail
2009-11-29 21:33 613JavaMail下载与安装 http://java.sun.c ... -
文件上传组件
2009-11-29 21:34 494文件上传组件 1 Apache的Commons FileUpl ... -
pager-taglib的安装和使用
2009-11-29 21:34 4721、拷贝pager-taglib.jar包 2、在JSP页面中 ... -
文件下载
2009-11-29 21:35 454文件下载代码(2008-02-26 2 ... -
字符串日期转换
2009-12-03 17:09 695java开发时往往需要做字符串和日期的转换 主要用到:java ... -
java反编译工具jad
2009-12-13 22:40 607http://www.kpdus.com/jad.html ... -
java优化编程-字符串驻留
2010-01-20 15:26 721字符串比较时,采用.intern()方法将字符串添加到驻留池中 ...
相关推荐
以下是对这个大型站点网站静态化实现方案的详细解读。 1. **静态化原理**: 静态化是将动态网页转化为HTML静态页面的过程,这样用户在访问时不再需要通过服务器执行脚本,而是直接读取已经生成的HTML文件,大大...
以下是对动态页面静态化方案的详细解释: 1. **Java与JSP**: Java是一种广泛使用的后端编程语言,JSP(JavaServer Pages)是Java中用于创建动态网页的技术。在传统的JSP应用中,服务器接收到请求后,会解析JSP...
"完全静态化方案V1.1"是针对该版本的一个优化策略,旨在提高网站性能,降低服务器负载,提升用户体验,尤其是面对高访问量时。静态化是一种将动态网页转化为静态HTML的技术,它可以显著提升页面加载速度,减少数据库...
【上品折扣网站静态化方案】是针对电商网站性能优化的一种技术手段,旨在提高网页加载速度,提升用户体验,减轻服务器压力。以下是对该方案的详细解释: 1. **基本架构**: - 静态化流程包括从数据库和配置文件...
**正文** JSP(JavaServer Pages)静态化是一种常见的优化技术,主要目的是提高网站的访问速度和搜索引擎友好性。...通过合理选用和配置静态化方案,可以显著改善用户体验,减轻服务器压力,同时有利于SEO优化。
ASP.NET页面静态化和伪静态化是Web开发中提高网站性能和SEO优化的重要技术。页面静态化是指将原本动态生成的HTML页面转化为静态HTML文件,这样用户请求时无需执行服务器端的代码,直接从硬盘读取文件,提高了访问...
总的来说,“通用首页静态化工具”是针对动态首页优化的一种解决方案,它可以帮助提高网站性能和SEO效果,但需要根据实际需求和环境进行合理配置和使用。在使用该工具前,应确保服务器环境支持所需的技术,并了解其...
【描述】"静态化首页 子页 一网打尽"表示这个项目不仅限于抓取和静态化网站的首页,还包含了处理子页面的能力。这意味着它可能包含了遍历网站链接,递归抓取所有相关页面的逻辑。静态化网站的过程通常是将动态生成的...
综上所述,页面静态化处理对于提升网站性能和用户体验具有重要意义,而静态化CMS则为此提供了便利的解决方案。开发者在设计和实施时,应充分考虑各种因素,选择适合的静态化策略和技术,以实现最佳效果。
标题 "首页静态化(含全站)for discuz7.0.rar" 提示我们这是一个针对 Discuz! 7.0 版本的插件,旨在实现论坛首页及全站的静态化功能。Discuz! 是一款非常流行的开源社区论坛软件,它提供了丰富的功能和高度的可定制...
本文将深入解析网站架构中的三项关键技术:页面静态化、图片服务器分离以及负载均衡,并探讨它们如何协同工作以提升网站性能。 #### 1. 页面静态化 页面静态化是一种提高网站访问速度的有效手段。通过将动态生成的...
### 动态网站静态化的实现方法 随着互联网技术的发展与用户需求的变化,网站设计与开发领域不断探索新的优化方案以提升用户体验与系统性能。其中,动态网站静态化是一种被广泛采用的技术手段,尤其是在Java EE环境...
在IT行业中,静态化是一种常见的优化网站性能的技术,特别是对于基于内容管理系统(CMS)如织梦(DedeCMS)的网站。"TAG静态化-5.7-亲测可用转拼音"这一标题揭示了我们讨论的主题是关于织梦5.7版本的TAG标签静态化,...
HTML静态化是一种有效的优化策略,它可以显著提升网站的响应速度,减轻服务器压力。本教程将介绍如何使用GO语言进行简单的HTML静态化实现,并提供初级版源代码供学习参考。 首先,我们需要理解HTML静态化的基本原理...
如果需要更全面的静态化解决方案,可能需要寻找其他扩展或定制开发。 在使用过程中,建议定期检查插件与ZBlog系统的兼容性,以确保在新版本更新后仍能正常运行。同时,关注插件的更新和开发者发布的补丁,以便及时...
优点:提高网页的打开速度 原理:将动态数据添加到静态页面,存储下来,如果动态数据无更新添加删除...触发功能不再首页触发, 这样任何情况下首页调取的内容都是静态的,提高浏览速度 附件为单独程序,直接运行就可
因此,对于基于ASP的文章管理系统,全站静态化成为一种有效的解决方案。 Qi静态插件的核心功能在于自动化这个过程,它可以将老y文章管理系统中的所有文章、分类、标签等页面一次性或按需生成为静态HTML文件。这些...
在Asp.net开发中,页面静态化是一种提升网站性能、优化搜索引擎排名的重要技术。...本文将详细介绍第三种Asp.net页面静态化的...然而,实际应用中需要根据网站规模、内容特性和服务器资源来权衡选择最适合的静态化方案。
总结,网站生成静态页面是一个有效的优化手段,通过选用合适的工具和方法,结合FreeMarker模板引擎,能够实现高效且定制化的静态化过程。无论是个人博客还是大型企业网站,都可以从中受益,提升网站性能,增强用户...