Jerry Chen

posts(0) comments(2) trackbacks(0)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

文章分类(2)

  • IT认证(1)
  • WEB DESIGN(1)

文章档案(2)

  • 2005年12月 (2)

Java

  • Javaranch
  • Java新视线
  • 中国Java开发网

搜索

  •  

最新评论

  • 1. re: 静态页面生成程序段
  • 对需要session的页面可以在struts单独抽出来作成小的页面,对此不静态化,但对其余的不需要session的就可以静态化了。
  • --Jerry Chen
  • 2. re: 静态页面生成程序段
  • 需要session的话,怎办?
  • --gaston

View Post

静态页面生成程序段

假设想对以下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.xxxxxx.com/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
以上代码就实现了具体转换功能,使用时须注意编码问题,你可以建立一套自己的命名规则替产生的静态页面命名,便于管理。

posted on 2005-12-27 09:57 Jerry Chen 阅读(541) 评论(2)  编辑  收藏 所属分类: WEB DESIGN

View Comments

# re: 静态页面生成程序段  回复  更多评论   
需要session的话,怎办?
2005-12-29 15:32 | gaston
# re: 静态页面生成程序段  回复  更多评论   
对需要session的页面可以在struts单独抽出来作成小的页面,对此不静态化,但对其余的不需要session的就可以静态化了。
2005-12-29 15:38 | Jerry Chen
新用户注册  刷新评论列表  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问   管理
 
 
Powered by:
BlogJava
Copyright © Jerry Chen