以前做了很多的jsp页面,在后台的时候几乎都是.jsp的,后来才知道大型的网站发布到前台的时候,并不都是直接从数据库调的数据,显示为.jsp的页面,而是为了缓解服务器压力,在发布到前台的时候用文件转换成了一种shtml,想问问这个到底要用到什么?怎么弄才可以?解答详细点嘛。小弟多谢多谢了。。嘿嘿

解决方案 »

  1.   

    为了减轻服务器压力,将原来的文章管理系统由JSP文件的从数据库中取数据显示改为由jsp生成静态html文件后直接访问html文件。下面是一个简单的示例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>
      

  2.   

    哎,只要能生成静态页面就okey了。我存的时候文件名是nfile读取的时候这样。
    用xxx.jsp?id=a访问
    sql = "SELECT * FROM web_news WHERE newsid=" +request.getParameter("a");
    if(rs.next()){
    url = "files/";
    url += rs.getString("nfile");
    }
    %>
    <table width="760" border="0" align="center" cellpadding="0" cellspacing="0">
    <td id=iHeight>
    <Iframe src="<%=url%>" width='100%' height='100%' scrolling=no marginwidth=0 marginheight=0 align=middle name=main frameborder=0> </iframe>
    </td>
    </table>
    这就出来了。
    如果你不喜欢这样嵌入的,就
    response.sendRedirect("../files/"+rs.getString("nfile"));