网站内容管理平台java利用模板技术生成静态html

在某些应用中,将本该由动态页面每次获取客户端请求时去调用数据的过程转换为在添加数据时即生成为静态页面,对服务器的压力,数据库检索的压力,以及搜索引擎收录,包括防止SQL注入都是由极大的好处的。常见的做法有很多种,包括web服务器启用rewrite,io操作生成文件等等,我正好有一段以前做j2ee开发时保留的一段io操作的方式生成html.

    原理都很简单,主要是对模板的解析.so,我们先准备一个html模板
    mb.html,做个文件其中的###title###之类的标签用于程序进行查询替换.


<html>    
<head>    
<title>###title###</title>    
<meta http-equiv="Content-Type" content="text/html; charset=gbk">    
</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###  </td>    
    </tr>    
    <tr>    
        <td>###content###</td>    
    </tr>    
<tr>    
<td>###html###</td>    
</tr>    
  
</table>    
</body>    
</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 <br> 
* Ttitle: jsp转换成html<br> 
* De.ion: 把动态网页转换成静态网页<br> 
* Author:            <a href="mailto:343269876@qq.com">shaobo</a> <br> 
* Date: 2006-6-19 <br> 
* Time: 16:41:09 <br> 
* Version: 2.0.0 <br> 
*/ 
public class JspToHtml { 

  private static String title ="标题测试"; 
  private static String context ="标题测试"; 
  private static String editer ="标题测试"; 
    
        /** 
            * 根据本地模板生成静态页面 
         * @param JspFile    jsp路经 
         * @param HtmlFile html路经 
         * @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);//替换掉模块中相应的地方 
             
                        File f = new File(HtmlFile); 
                        BufferedWriter o = new BufferedWriter(new FileWriter(f)); 
                        o.write(str); 
                        o.close(); 
                        System.out.println("共用时:" + ((new Date()).getTime() - beginDate) + "ms"); 
                } catch (IOException e) { 
                        e.printStackTrace(); 
                        return false; 
                } 
                return true; 
        } 

        /** 
         * 根据url生成静态页面 
         * 
         * @param u        动态文件路经 如:http://www.163.com/x.jsp 
         * @param path 文件存放路经如: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; 
                } 
        } 

        /** 
         * 根据url生成静态页面 
         * 
         * @param url 动态文件路经 如:http://www.163.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; 
                } 
        } 

        /** 
         * 测试main 函数 
         * 
         * @param arg 
         */ 
        public static void main(String[] arg) { 
                long begin = System.currentTimeMillis(); 
    //循环生成20个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("用时:" + (System.currentTimeMillis() - begin) + "ms"); 
        } 
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值