Jsp生成静态页面

为了减轻服务器压力,将原来的文章管理系统由JSP文件的从数据库中取数据显示改为由jsp生成静态html文件后直接访问html文件。首先应创建一个模板文件,文件名和文件后缀可以随意,但我一般常用的还是 *.template ,因此,这里就以 template.template 为例( 将模板文件放入 /WEB-INF/templates/ 文件夹下 ):下面是一个简单的示例

 

1.buildhtml.jsp

Jsp代码 复制代码
  1. <%@ page contentType="text/html; charset=gb2312" import="java.util.*,java.io.*"%>   
  2. <%   
  3. try{   
  4.      //设置字符编码    
  5.      request.setCharacterEncoding( "gb2312" );    
  6.      response.setCharacterEncoding( "gb2312" );    
  7.   
  8.      String title="This is Title";   
  9.      String content="This is Content Area";   
  10.      String editer="LaoMao";   
  11.      String filePath = "";   
  12.      // 获得模板文件的路径   
  13.      filePath = request.getRealPath("/")+"test/template.htm";   
  14.      //out.print(filePath+"<br>");   
  15.      String templateContent="";   
  16.      //读取模块文件   
  17.    FileInputStream fileinputstream = new FileInputStream(filePath);   
  18.      int lenght = fileinputstream.available();   
  19.      byte bytes[] = new byte[lenght];   
  20.      fileinputstream.read(bytes);   
  21.      fileinputstream.close();   
  22.      templateContent = new String(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.    Calendar calendar = Calendar.getInstance();   
  30.      String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";   
  31.      //生成的html文件保存路径   
  32.    fileame = request.getRealPath("/")+fileame;   
  33.      //建立文件输出流   
  34.      FileOutputStream fileoutputstream = new FileOutputStream(fileame);   
  35.    byte tag_bytes[] = templateContent.getBytes();   
  36.      fileoutputstream.write(tag_bytes);   
  37.      fileoutputstream.close();   
  38.   
  39. }catch(Exception e){   
  40.      out.print(e.toString());   
  41. }   
  42.   
  43.   
  44. %>  

 

2. template.template

Html代码 复制代码
  1. <html>  
  2. <head>  
  3. <title>###title###</title>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  5. <LINK href="../css.css" rel=stylesheet type=text/css>  
  6. </head>  
  7.   
  8.   
  9. <body>  
  10. <table width="500" border="0" align="center" cellpadding="0" cellspacing="2">  
  11.   <tr>    
  12.     <td align="center">###title###</td>  
  13.   </tr>  
  14.   <tr>    
  15.     <td align="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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../css.css" rel=stylesheet type=text/css>
</head>


<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="2">
  <tr> 
    <td align="center">###title###</td>
  </tr>
  <tr> 
    <td align="center">author:###author###&nbsp;&nbsp;</td>
  </tr>
  <tr>
    <td>###content###
 </td>
 
  </tr>

</table>
</body>
</html>

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

 

 

 

1.buildhtml.jsp

<%@ page contentType="text/html; charset=gb2312" import="java.util.*,java.io.*"%>
<%
try{
 String title="This is Title";
 String content="This is Content Area";
 String editer="LaoMao";
 String filePath = "";
 filePath = request.getRealPath("/")+"test/template.htm";
 //out.print(filePath+"<br>");
 String templateContent="";
 FileInputStream fileinputstream = new FileInputStream(filePath);//读取模块文件
 int lenght = fileinputstream.available();
 byte bytes[] = new byte[lenght];
 fileinputstream.read(bytes);
 fileinputstream.close();
 templateContent = new String(bytes);
 //out.print(templateContent);
 templateContent=templateContent.replaceAll("###title###",title);
 templateContent=templateContent.replaceAll("###content###",content);
 templateContent=templateContent.replaceAll("###author###",editer);//替换掉模块中相应的地方
 //out.print(templateContent);
 // 根据时间得文件名
 Calendar calendar = Calendar.getInstance();
 String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
 fileame = request.getRealPath("/")+fileame;//生成的html文件保存路径
 FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文件输出流
 byte tag_bytes[] = templateContent.getBytes();
 fileoutputstream.write(tag_bytes);
 fileoutputstream.close();
}
catch(Exception e){
 out.print(e.toString());
}

%>

2. template.htm

<html>
<head>
<title>###title###</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../css.css" rel=stylesheet type=text/css>
</head>

<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="2">
  <tr>
    <td align="center">###title###</td>
  </tr>
  <tr>
    <td align="center">author:###author###&nbsp;&nbsp;</td>
  </tr>
  <tr>
    <td>###content###
 </td>
 
  </tr>

</table>
</body>
</html>

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fbysss/archive/2006/03/07/618041.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值