Jerry Chen
posts(0)
comments(2)
trackbacks(0)
BlogJava
联系
聚合
管理
留言簿
给我留言
查看公开留言
查看私人留言
文章分类
(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页面,可以利用下面的代码段:
1
import
java.io.
*
;
2
import
java.net.
*
;
3
import
java.util.
*
;
4
5
public
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新闻
知识库
C++博客
博问