有一种生成静态页面的方法是这样的:它通过访问这个jsp,然后在编译的时候捕获到servlet生成的代码,然后输出来,就是最后得到的页面,代码如下:java.io.InputStream in;
URL url = new java.net.URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
//connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0");
connection.connect();
in = connection.getInputStream();
java.io.BufferedReader breader = new BufferedReader(
new InputStreamReader(in, charset));
String currentLine;
while ((currentLine = breader.readLine()) != null) {
htmlCode += currentLine;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 得到生成html的时间差
Date after = new Date();
end = after.getTime();
ttime = end - star;
// System.out.println("执行时间:" + ttime / 1000 + "秒");
}
return htmlCode;
现在有个问题是这样的:
in = connection.getInputStream();就是捕获的内容,直接用main方法运行这个类时可以正常执行。
但现在我做的网站要求这样做:在网站后台上加一个按钮,点击按钮,进入到action层,然后在action层调用这个类来生成静态页面,这时候就乱了in = connection.getInputStream();获取不到内容了。
我猜想原因是因为:程序进入action的时候,也产生了connection流,这个流跟生成静态页面中建立的connection在一起,因此in = connection.getInputStream();获取不到了
请问有没有一个方法能把以前的connection流都清空了。?
URL url = new java.net.URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
//connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0");
connection.connect();
in = connection.getInputStream();
java.io.BufferedReader breader = new BufferedReader(
new InputStreamReader(in, charset));
String currentLine;
while ((currentLine = breader.readLine()) != null) {
htmlCode += currentLine;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 得到生成html的时间差
Date after = new Date();
end = after.getTime();
ttime = end - star;
// System.out.println("执行时间:" + ttime / 1000 + "秒");
}
return htmlCode;
现在有个问题是这样的:
in = connection.getInputStream();就是捕获的内容,直接用main方法运行这个类时可以正常执行。
但现在我做的网站要求这样做:在网站后台上加一个按钮,点击按钮,进入到action层,然后在action层调用这个类来生成静态页面,这时候就乱了in = connection.getInputStream();获取不到内容了。
我猜想原因是因为:程序进入action的时候,也产生了connection流,这个流跟生成静态页面中建立的connection在一起,因此in = connection.getInputStream();获取不到了
请问有没有一个方法能把以前的connection流都清空了。?
解决方案 »
- 关于站内搜索如何实现的问题
- 关于HttpClient
- tomcat配置问题 菜鸟
- 熟悉这个warning的进来:could not parse struts.locale setting
- 如何根据ip得到具体的国家和地区
- 谈谈jsp高级开发都要学什么!(最重要的是散分!)
- 如何用js写摇奖
- 在线求教:如何在FORM的action属性值中引用Javascript脚本中的变量?
- 谁能帮我出一套关于JSP高级程序员的面试题,并附答案!高分相送,不止这100分
- 哪位大侠给推荐几本jsp,ejb,大型网站建设的好书
- 我好奇在网上随便找了一个java.util.zip代码进行文件解压,可就是解压不了,请高手说明下,是不是解压文件除了代码外还需要安装什么执行文件???
- 时间戳 与 标准时间如何互换?
你有个http://aa.com/aa.html 的静态页面
然后通过http:/aa.com/show.jsp?httpUrl=http://aa.com/aa.html显示这个静态页面是吗? URL url = new java.net.URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
//connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0");
connection.connect();
in = connection.getInputStream();
你这个in是通过httpUrl参数来的
跟你进这个action的流没关系
主要还是看一下你的httpUrl这个参数对不对吧
我做的是一个网站,网站首页是用jsp写的。。因为jsp是动态的,所以每次访问都会再动态生成,速度可能会慢点!
现在我通过这个方法访问这个jsp可以生成一个静态页面,这个静态页面跟直接访问我的这个jsp效果是一样的,
现在我用定时器每小时生成一次,这种情况下你访问首页时只是在访问这个静态页面,并不是最新,最大延时是1个小时(这个页面每小自动更新)!
现在客户需求给一个功能,让你能马上生成这个静态页面,因为有时候可能会有紧急信息要发布