如题,我目的是把JSP页面转换成静态的HTML,url.openConnection()中的url是我项目中的JSP文件的路径,由于项目的页面有验证session是否失效,所以当url.openConnection()打开的页面时候session是空的,所以页面回直接跳转到session失效的页面,得不到url的那个页面,我查了网上的很多方法,都不可行 ,所以特来发贴求救
代码如下:
public void getHtmlReport(String[] urlList,String protocol,String host,String sessionId ){
try
{
if(urlList.length < 1)
{
log.debug("Use: java TestSocket 所要转换的页面的URL [转换后要保存的文件名]");
//System.out.println("Use: java TestSocket 所要转换的页面的URL [转换后要保存的文件名]");
return;
}
String urlString = urlList[0];
URL url = new URL(urlString);
HttpURLConnection ts = (HttpURLConnection)url.openConnection();
ts.setRequestProperty("Cookie", sessionId);//我从request中获得的sessionID
ts.setRequestMethod("GET");
ts.setRequestProperty("Connection", "Keep-Alive");
ts.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
ts.setDoOutput(true);
ts.setDoInput(true);
ts.setAllowUserInteraction(false); ts.connect();
InputStream socketInput = ts.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(socketInput));
String fileName = url.getContent().toString() + ".html";
if (urlList.length > 1)
{
fileName = urlList[1];
}
log.debug("to:"+fileName);
PrintWriter file = new PrintWriter(new FileWriter(fileName), true);
while (true)
{
try
{
String s = in.readLine();
if (s == null)
{
break;
}
file.print(s);
}
catch (Exception e)
{
System.out.println(e);
break;
}
}
file.close();
log.debug("转换完成");
//System.out.println("转换完成");
}
catch(Exception e)
{
log.debug(e);
//System.out.println(e);
}
}
}
代码如下:
public void getHtmlReport(String[] urlList,String protocol,String host,String sessionId ){
try
{
if(urlList.length < 1)
{
log.debug("Use: java TestSocket 所要转换的页面的URL [转换后要保存的文件名]");
//System.out.println("Use: java TestSocket 所要转换的页面的URL [转换后要保存的文件名]");
return;
}
String urlString = urlList[0];
URL url = new URL(urlString);
HttpURLConnection ts = (HttpURLConnection)url.openConnection();
ts.setRequestProperty("Cookie", sessionId);//我从request中获得的sessionID
ts.setRequestMethod("GET");
ts.setRequestProperty("Connection", "Keep-Alive");
ts.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
ts.setDoOutput(true);
ts.setDoInput(true);
ts.setAllowUserInteraction(false); ts.connect();
InputStream socketInput = ts.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(socketInput));
String fileName = url.getContent().toString() + ".html";
if (urlList.length > 1)
{
fileName = urlList[1];
}
log.debug("to:"+fileName);
PrintWriter file = new PrintWriter(new FileWriter(fileName), true);
while (true)
{
try
{
String s = in.readLine();
if (s == null)
{
break;
}
file.print(s);
}
catch (Exception e)
{
System.out.println(e);
break;
}
}
file.close();
log.debug("转换完成");
//System.out.println("转换完成");
}
catch(Exception e)
{
log.debug(e);
//System.out.println(e);
}
}
}
楼主【yinlei109】截止到2008-07-24 12:15:49的历史汇总数据(不包括此帖):
发帖的总数量:2 发帖的总分数:200 每贴平均分数:100
回帖的总数量:31 得分贴总数量:12 回帖的得分率:38%
结贴的总数量:2 结贴的总分数:200
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
提高系统的性能。由于考虑通用行,不能使用模板生成。
或者有没有好的把 JSP页面转换成静态HTML的方法,不能用模板。框架是struts,url是XXXX。do的方式。
其余的就不懂了
看看里面的cookie 怎么设置的.
再说如果只是简单的sessionId来判断session你也应该这么写啊,
ts.setRequestProperty("Cookie", "sessionId="sessionId);
再看看吧.应该可以的
看看里面的cookie 怎么设置的.
再说如果只是简单的sessionId来判断session你也应该这么写啊,
ts.setRequestProperty("Cookie", "sessionId="+sessionId);
再看看吧.应该可以的
少打个+号..
ts.setRequestProperty("Cookie", "JSESSIONID=" + sessionId);
这个Map的key是对应页面的URL,value可以是静态HTML的URL.2.在Filter的init方法里面,对cache对象进行初始化配置,将你要静态化的jsp的URL以及对应的value值添加进去.3.在doFilter方法里面,编写核心内容.
A.先从request里面取出url
B.Object obj = map.get(url);
if(obj!=null){
//对obj做URL重定向.让客户端访问静态HTML
reuturn;
}
C.doFilterChan(request,response);
用ts.setRequestProperty("Cookie", "sessionId="+sessionId);
不可以。就是还存在点疑问?不知道谁有HttpURLConnection相关的资料。。
楼主看看这个:http://www.360doc.com/showWeb/0/0/97064.aspx