当前位置: 代码迷 >> JavaScript >> jsp生成静态页面―一
  详细解决方案

jsp生成静态页面―一

热度:93   发布时间:2012-11-23 00:03:43.0
jsp生成静态页面―1
  为了减轻服务器压力,将原来的文章管理系统由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. %> 

<%@ page contentType="text/html; charset=gb2312" import="java.util.*,java.io.*"%>
<%
try{
     //设置字符编码
     request.setCharacterEncoding( "gb2312" );
     response.setCharacterEncoding( "gb2312" );

     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";
     //生成的html文件保存路径
   fileame = request.getRealPath("/")+fileame;
     //建立文件输出流
     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.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
  相关解决方案