转载自 http://bbs.csdn.net/topics/310079340
做程序也做了将近4年时间了,从来没有发过什么技术性的文章,今天发一个只在大家一起共同学习进步,如有错误地方请指正。
最近自己做了一个做网络广告的网站叫全方位商机平台的项目,由于网站首页上板块划分很多,不同板块的数据库查询方式不同,首页内容量巨大,如果按照一般的动态jsp页面的话那么数据库查询将是巨大的开销,会导致首页访问速度的下降。于是考虑将这个首页全部静态化。参考地址:http://www.31pt.com/。首页的速度是非常快的。
整个网站才用struts2 + spring + hibernate + freemarker + urlrewrite完成。首页纯静态化,频道及其他页面通过urlrewrite伪静态。现在废话少说。我先给出首页jsp body源代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<body>
<div id=
"wrap"
>
<!--头部开始-->
<jsp:include page=
"/html/top.html"
flush=
"true"
></jsp:include>
<!--头部结束-->
<!--导航开始-->
<jsp:include page=
"/html/channel.html"
flush=
"true"
></jsp:include>
<!--导航结束-->
<jsp:include page=
"/html/center.html"
flush=
"true"
></jsp:include>
<!--友情连接开始-->
<jsp:include page=
"/html/index_link.html"
flush=
"true"
></jsp:include>
<!--友情结束-->
<!--底部开始-->
<jsp:include page=
"/html/bottom.html"
flush=
"true"
></jsp:include>
<!--底部结束-->
</div>
</body>
|
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();
}
}
|
1
2
3
4
5
6
7
8
|
/**
* 生成友情链接的静态页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"
);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
/**
* 生成友情链接静态页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"
;
}
}
|
1
2
3
4
5
6
7
8
9
10
|
<#
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
>
|