jsp生成静态页面—1
为了减轻服务器压力,将原来的文章管理系统由JSP文件的从数据库中取数据显示改为由jsp生成静态html文件后直接访问html文件。首先应创建一个模板文件,文件名和文件后缀可以随意,但我一般常用的还是*.template,因此,这里就以template.template为例(将模板文件放入/WEB-INF/templates/文件夹下):下面是一个简单的示例
1.buildhtml.jsp
Jsp代码
1.<%@pagecontentType="text/html;charset=gb2312"import="java.util.*,java.io.*"%>
2.<%
3.try{
4.//设置字符编码
5.request.setCharacterEncoding("gb2312");
6.response.setCharacterEncoding("gb2312");
7.
8.Stringtitle="ThisisTitle";
9.Stringcontent="ThisisContentArea";
10.Stringediter="LaoMao";
11.StringfilePath="";
12.//获得模板文件的路径
13.filePath=request.getRealPath("/")+"test/template.htm";
14.//out.print(filePath+"<br>");
15.StringtemplateContent="";
16.//读取模块文件
17.FileInputStreamfileinputstream=newFileInputStream(filePath);
18.intlenght=fileinputstream.available();
19.bytebytes[]=newbyte[lenght];
20.fileinputstream.read(bytes);
21.fileinputstream.close();
22.templateContent=newString(bytes);
23.//out.print(templateContent);
24.templateContent=templateContent.replaceAll("###title###",title);
25.templateContent=templateContent.replaceAll("###content###",content);
26.templateContent=templateContent.replaceAll("###author###",editer);//替换掉模块中相应的地方
27.//out.print(templateContent);
28.//根据时间得文件名
29.Calendarcalendar=Calendar.getInstance();
30.Stringfileame=String.valueOf(calendar.getTimeInMillis())+".html";
31.//生成的html文件保存路径
32.fileame=request.getRealPath("/")+fileame;
33.//建立文件输出流
34.FileOutputStreamfileoutputstream=newFileOutputStream(fileame);
35.bytetag_bytes[]=templateContent.getBytes();
36.fileoutputstream.write(tag_bytes);
37.fileoutputstream.close();
38.
39.}catch(Exceptione){
40.out.print(e.toString());
41.}
42.
43.
44.%>
<%@pagecontentType="text/html;charset=gb2312"import="java.util.*,java.io.*"%>
<%
try{
//设置字符编码
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
Stringtitle="ThisisTitle";
Stringcontent="ThisisContentArea";
Stringediter="LaoMao";
StringfilePath="";
//获得模板文件的路径
filePath=request.getRealPath("/")+"test/template.htm";
//out.print(filePath+"<br>");
StringtemplateContent="";
//读取模块文件
FileInputStreamfileinputstream=newFileInputStream(filePath);
intlenght=fileinputstream.available();
bytebytes[]=newbyte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
templateContent=newString(bytes);
//out.print(templateContent);
templateContent=templateContent.replaceAll("###title###",title);
templateContent=templateContent.replaceAll("###content###",content);
templateContent=templateContent.replaceAll("###author###",editer);//替换掉模块中相应的地方
//out.print(templateContent);
//根据时间得文件名
Calendarcalendar=Calendar.getInstance();
Stringfileame=String.valueOf(calendar.getTimeInMillis())+".html";
//生成的html文件保存路径
fileame=request.getRealPath("/")+fileame;
//建立文件输出流
FileOutputStreamfileoutputstream=newFileOutputStream(fileame);
bytetag_bytes[]=templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();
}catch(Exceptione){
out.print(e.toString());
}
%>
2.template.template
Html代码
1.<html>
2.<head>
3.<title>###title###</title>
4.<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
5.<LINKhref="../css.css"rel=stylesheettype=text/css>
6.</head>
7.
8.
9.<body>
10.<tablewidth="500"border="0"align="center"cellpadding="0"cellspacing="2">
11.<tr>
12.<tdalign="center">###title###</td>
13.</tr>
14.<tr>
15.<tdalign="center">author:###author### </td>
16.</tr>
17.<tr>
18.<td>###content###
19.</td>
20.
21.</tr>
22.
23.</table>
24.</body>
25.</html>
<html>
<head>
<title>###title###</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<LINKhref="../css.css"rel=stylesheettype=text/css>
</head>
<body>
<tablewidth="500"border="0"align="center"cellpadding="0"cellspacing="2">
<tr>
<tdalign="center">###title###</td>
</tr>
<tr>
<tdalign="center">author:###author### </td>
</tr>
<tr>
<td>###content###
</td>
</tr>
</table>
</body>
</html>
为了将应用进行国际化,可以将页面的编码设为UTF-8