jsp实现文件下载时窗口的关闭

项目中有一个文件下载功能,在页面上点击“下载”按钮,会到struts的action中,在action中进行查询工作,查到要下载文件的路径及文件名,然后跳转到jsp页面。

jsp内容:
<%@ page import="java.net.URLEncoder" %>
<%

String filename = URLEncoder.encode(request.getAttribute("filename").toString(),"UTF-8");
String filepath = request.getAttribute("fileDir").toString();
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename=\""+filename+"\"");
java.io.FileInputStream fileInputStream=new java.io.FileInputStream(filepath);
java.io.OutputStream os=response.getOutputStream();
int i=0;
byte[] b = new byte[1024];
while((i=fileInputStream.read(b))>0){
os.write(b, 0, i);
}
fileInputStream.close();
os.close();
out.clear();
out=pageContext.pushBody();
%>

现在这样写下载功能没有问题,但是问题是这个空白页面就一直存在不会关闭,我试图在该jsp中加上

window.close();

但是加上也没用,我的问题就是怎么样在下载完成后让该窗口关闭呢?

这个地方是很奇怪的。
你只要使用就行了,别打开一个窗口再跳到文件.action。

这里

window.close();

改成这样

[code="html"]

window.open('','_self',''); window.close();

[/code]
就可以了。。一定要写道页面的最后,要保证你的jsp代码执行完成再执行这个,要不你的文件下载不了。

这段代码IE和Google浏览器都没有没有问题,但是FF下不行。原来

Navigator 2.0: closes any window.
Navigator 3.0: closes only windows opened by JavaScript.
Navigator 4.0: must use signed scripts to unconditionally close a window

就是无法关闭非脚本打开的窗口!