使用freemarker实现页面静态化
来源:互联网 发布:网络电视需要多少网速 编辑:程序博客网 时间:2024/05/19 20:44
最近做一个电商网站,首页分类数据太多需要实现静态化,于是google了一下找了一大堆的资料.做了一个例子:
由于这个项目使用了freemarker,所以就用freemarker来实现页面静态化.
以下是我生成静态页最核心的方法,使用freemarker。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* 生成静态页面主方法
* @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的应该都知道,这里用的spring mvc 通过request.getSession().getServletContext()获取.
Map<String,Object> data : 模版的数据来源。freemarker通过一个Map给ftl模版送数据.
String templatePath : ftl所在的路径。我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。
String targetHtmlPath : 最后生成静态页的路径:我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。
生成的html文件路径是在: 根目录下的html文件夹下.
ftl模版文件是在根目录下的ftl文件夹下.
我们需要freemarker生成一个index_kinds.html文件。
controller中的方法:
1
2
3
4
5
6
7
8
9
10
public String createKinds(HttpServletRequest request){
//得到分类数据
List<Kinds> kindss = kindsService.getDataByHql("from Kinds where rank=2");
Map<String,Object> data = new HashMap<String,Object>();
data.put("kindss",kindss);
//调用静态页面方法
createHTML(request.getSession().getServletContext(), data, "/ftl/index_kinds.ftl", "index_kinds.html");
System.out.println("生成静态页面成功!");
return "index_kinds";
}
以下是:ftl模版源码:
1
2
3
4
5
6
7
8
9
10
<div>
<strong>一级分类:</strong>
<#list kindss as kinds>
<a href="#">${kinds.name}</a>
</#list>
</div>
<#else>
<div>没有数据</div>
</#if>
0 0
- 使用freemarker实现页面静态化
- 使用freeMarker技术实现页面静态化
- 用Freemarker实现页面静态化
- Freemarker实现页面静态化cms
- springMVC freemarker实现页面静态化
- freemarker实现页面的静态化
- freemarker页面静态化
- FreeMarker页面静态化
- freemarker静态化页面
- freemarker静态化页面
- Freemarker 页面静态化
- 页面静态化 Freemarker
- Freemarker页面静态化
- Freemarker 页面静态化
- 使用freemarker生成静态页面
- 使用freemarker生成静态页面
- 使用Freemarker实现网页静态化
- 使用Freemarker实现网页静态化
- HDU 2212 DFS
- java package
- 读书情况
- 遍历Struct
- 分析iOS Crash文件:符号化iOS Crash文件的3种方法
- 使用freemarker实现页面静态化
- MBR与GPT的区别
- hdu Children's queue
- Asp.Net 生成静态页并实现分页效果
- 岁月的剪影【三月涅槃重生】
- linux下arm交叉编译工具链的安装
- 06 ubuntu 12.04lts中无法修改dock图标大小
- Android实践--模拟器的加度的快感
- 线程安全的概念,实现线程安全的几种方法