JAVA認(rèn)證:java生成靜態(tài)html的一段代碼

字號(hào):

在某些應(yīng)用中,將本該由動(dòng)態(tài)頁(yè)面每次獲取客戶端請(qǐng)求時(shí)去調(diào)用數(shù)據(jù)的過程轉(zhuǎn)換為在添加數(shù)據(jù)時(shí)即生成為靜態(tài)頁(yè)面,對(duì)服務(wù)器的壓力,數(shù)據(jù)庫(kù)檢索的壓力,以及搜索引擎收錄,包括防止SQL注入都是由極大的好處的。常見的做法有很多種,包括web服務(wù)器啟用rewrite,io操作生成文件等等,我正好有一段以前做j2ee開發(fā)時(shí)保留的一段io操作的方式生成html.
    原理都很簡(jiǎn)單,主要是對(duì)模板的解析.so,我們先準(zhǔn)備一個(gè)html模板
    mb.html,做個(gè)文件其中的###title###之類的標(biāo)簽用于程序進(jìn)行查詢替換.
    
    
    ###title###
    
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
###title###
###author###
###content###
###html###

    
    

    下面是具體的代碼:JspToHtml.java
    import javax.servlet.http.HttpServletRequest;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Date;
    import java.net.URL;
    import java.net.URLConnection;
    import java.io.*;
    /**
    * Filename: JspToHtml.java
    * Ttitle: jsp轉(zhuǎn)換成html
    * De.ion: 把動(dòng)態(tài)網(wǎng)頁(yè)轉(zhuǎn)換成靜態(tài)網(wǎng)頁(yè)
    * Copyright:Copyright (c) 2002-2008 BocSoft,Inc.All Rights Reserved.
    * Company: BocSoft
    * Author:阿汐
    * Date: 2006-6-19
    * Time: 16:41:09
    * Version: 2.0.0
    */
    public class JspToHtml {
    private static String title ="標(biāo)題測(cè)試";
    private static String context ="標(biāo)題測(cè)試";
    private static String editer ="標(biāo)題測(cè)試";
    /**
    * 根據(jù)本地模板生成靜態(tài)頁(yè)面
    * @param JspFilejsp路經(jīng)
    * @param HtmlFile html路經(jīng)
    * @return
    */
    public static boolean JspToHtmlFile(String filePath, String HtmlFile) {
    String str = "";
    long beginDate = (new Date()).getTime();
    try {
    String tempStr = "";
     FileInputStream is = new FileInputStream(filePath);//讀取模塊文件
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    while ((tempStr = br.readLine()) != null)
    str = str + tempStr ;
    is.close();
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    try {
    str = str.replaceAll("###title###",
    title);
    str = str.replaceAll("###content###",
    context);
    str = str.replaceAll("###author###",
    editer);//替換掉模塊中相應(yīng)的地方
    File f = new File(HtmlFile);
    BufferedWriter o = new BufferedWriter(new FileWriter(f));
    o.write(str);
    o.close();
    System.out.println("共用時(shí):" + ((new Date()).getTime() - beginDate) + "ms");
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    return true;
    }
    /**
    * 根據(jù)url生成靜態(tài)頁(yè)面
    *
    * @param u動(dòng)態(tài)文件路經(jīng) 如:http://www.examda.com/x.jsp
    * @param path 文件存放路經(jīng)如:x:\\abc\bbb.html
    * @return
    */
    public static boolean JspToHtmlByURL(String u, String path) {
    //從utl中讀取html存為str
    String str = "";
    try {
    URL url = new URL(u);
    URLConnection uc = url.openConnection();
    InputStream is = uc.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    while (br.ready()) {
    str += br.readLine() + "\n";
    }
    is.close();
    //寫入文件
    File f = new File(path);
    BufferedWriter o = new BufferedWriter(new FileWriter(f));
    o.write(str);
    o.close();
    str = "";
    return true;
    } catch (Exception e) {
    e.printStackTrace();
    return false;
    }
    }
    /**
    * 根據(jù)url生成靜態(tài)頁(yè)面
    *
    * @param url 動(dòng)態(tài)文件路經(jīng) 如:http://www.examda.com/x.jsp
    * @return d
    */
    public static StringBuffer getHtmlTextByURL(String url) {
    //從utl中讀取html存為str
    StringBuffer sb = new StringBuffer();
    try {
    URL u = new URL(url);
    URLConnection uc = u.openConnection();
    InputStream is = uc.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    while (br.ready()) {
    sb.append(br.readLine() + "\n");
    }
    is.close();
    return sb;
    } catch (Exception e) {
    e.printStackTrace();
    return sb;
    }
    }
    /**
    * 測(cè)試main 函數(shù)
    *
    * @param arg
    */
    public static void main(String[] arg) {
    long begin = System.currentTimeMillis();
    //循環(huán)生成20個(gè)html文件
    for (int k = 0; k < 20; k++) {
    String url = "E:\\workspace\\oa\\golatel\\utils\\Temp\\mb.htm";//模板文件地址
    String savepath = "d:/" + k + ".html";//生成文件地址
    JspToHtmlFile(url, savepath);
    }
    System.out.println("用時(shí):" + (System.currentTimeMillis() - begin) + "ms");
    }
    }