response.getOutputStream()好像是没有关闭

lengdian 2010-04-02 12:36:49
我在写一个下载Excel文件的程序时候,是通过HTTPServletResponse进行的。没有通过inputstream

前台jsp页面上有下载按钮,有分页链接,下载按钮链接到下面的这action的export方法,

下面是部分代码
public String export() throws Exception{
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/vnd.ms-excel;charset=GBK");
response.setHeader("Content-Disposition", "attachment;filename=" + new String("用户管理.xls".getBytes(), "iso-8859-1"));

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
wb.setSheetName(0, "用户管理");

POI的一下操作。。。。。。。。。


OutputStream out = response.getOutputStream();
wb.write(out);
out.close();
}


struts.xml文件中的写法为:

<action name="exprotAccount" class="accountAction" method="export“></action>

首先声明一下,上面这个程序下载是没有问题的,

点击下载按钮弹出下载框,同样页面没有发生跳转,也就是在当前的页面上弹出的下载框


但是只要你点过下载按钮后之后,再去点分页链接的话,分页链接就会失效,而是出现下载框。

请问这个问题该如和解决呢? 是不是这response.getOutputStream()出了问题呢?
...全文
1334 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
NOKIA5320XM 2010-04-08
  • 打赏
  • 举报
回复
来晚了,接分
lengdian 2010-04-08
  • 打赏
  • 举报
回复
1楼说对了,就是url连接发生了变化,
我通过response下载之后,再去点击“分页链接”,因为分页链接里调用js函数,
在js函数里面,我是通过
var action = document.forms[0].action;
去获得action的名字的

在没有点击“下载按钮”之前,去点击“分页链接”的话
var action = document.forms[0].action;
这种方式得到的就是from 中的action

但是如果要是点击了“下载按钮”后,再去点击“分页链接”的话
var action = document.forms[0].action;
这种方式得到的就不是from 中的action
而是你“下载按钮”调用的action

所以就出现了我上面问题所说的那种情况
最好的解决办法就是,“分页链接”调用的js中不通过
var action = document.forms[0].action;
这种方式去获得action的名字,而是直接写死action的名字如下

var action = "accountSelech.action";


最后更要谢谢朋友们的帮忙!谢谢你们。
  • 打赏
  • 举报
回复
关注你。。。
lengdian 2010-04-08
  • 打赏
  • 举报
回复
我试过了,还是不行啊
injuer 2010-04-06
  • 打赏
  • 举报
回复
response.getOutputStream().close();
lengdian 2010-04-06
  • 打赏
  • 举报
回复


也可以这么理解,就是点击下载Excel按钮之后,再点击分页图片(响应事件)链接,它也会相应下载Excel事件
hoojo 2010-04-02
  • 打赏
  • 举报
回复

点击下载按钮弹出下载框,同样页面没有发生跳转,也就是在当前的页面上弹出的下载框


但是只要你点过下载按钮后之后,再去点分页链接的话,分页链接就会失效,而是出现下载框。

乙肝是分页问题,检查下分页的连接、标签
zidasine 2010-04-02
  • 打赏
  • 举报
回复
估计分页链接的url 发生变化
孤独剑客 2010-04-02
  • 打赏
  • 举报
回复
没有怎么看懂,
顶上去

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧