分享

静态页面生成程序段

 Joshua 2005-12-30

静态页面生成程序段

假设想对以下test.jsp?a=123&b=456 JSP页面生成静态html页面,可以利用下面的代码段:

 1import java.io.*;
 2import java.net.*;
 3import java.util.*;
 4
 5public class TestGenerateHtml {
 6
 7    public static void main(String[] args) {
 8        
 9        String jspPage = "http://www./test.jsp?a=123&b=456";//jsp文件地址
10        String htmlPage = "C:\\html\\test~a=123-b=456.html";//html文件名
11        
12        BufferedReader in = getIn(jspPage);
13        BufferedWriter out = getOut(htmlPage, true);
14        generateHtml(in, out);//生成静态页面
15        close(in, out);
16    }

17    
18    public final static void generateHtml(BufferedReader in, BufferedWriter out) {
19
20        if (out == null)
21            return;//不生成静态页面
22        try {
23            int c;
24            while ((c = in.read()) != -1{
25                out.write((char)c);
26            }

27        }
 catch (IOException e) {
28            e.printStackTrace();
29        }

30
31    }

32    
33    public final static BufferedReader getIn(String jspPage) {
34
35        BufferedReader in = null;
36
37        try {
38            URL url = new URL(jspPage);
39            URLConnection urlConn = url.openConnection();//建立http连接
40            in = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"gb2312"));//设置Encoding,必须设置,否则显示中文会有问题
41        }
 catch (IOException e) {
42            e.printStackTrace();
43        }

44
45        return in;
46    }

47
48    public final static BufferedWriter getOut(String htmlPage, boolean flag) {
49
50        BufferedWriter out = null;
51
52        try {
53            File htmlFile = new File(htmlPage);
54            if (flag) {
55                htmlFile.createNewFile();
56            }
 else {//如果flag为false则不覆盖文件
57                if (htmlFile.exists()) {//如果文件已经存在则返回null
58                    return null;
59                }
 else {//建立新文件
60                    htmlFile.createNewFile();
61                }

62            }

63            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile),"gb2312"));//设置Encoding
64        }
 catch (IOException e) {
65            e.printStackTrace();
66        }

67
68        return out;
69
70    }
//flag为真则覆盖原文件
71    
72    public final static void close(BufferedReader in, BufferedWriter out) {
73
74        try {
75            in.close();
76            if (out != null)
77                out.close();
78        }
 catch (IOException e) {
79            e.printStackTrace();
80        }

81
82    }

83    
84}

85
以上代码就实现了具体转换功能,使用时须注意编码问题,你可以建立一套自己的命名规则替产生的静态页面命名,便于管理。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多