jsp生成静态页面—1

zwq 2011-02-25

为了减轻服务器压力,将原来的文章管理系统由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###&nbsp;&nbsp;</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###&nbsp;&nbsp;</td>

</tr>

<tr>

<td>###content###

</td>

</tr>

</table>

</body>

</html>

为了将应用进行国际化,可以将页面的编码设为UTF-8

相关推荐