Java 设置文件名的内容配置在IE6中被忽略。web.xml中的Url显示为文件名

Java 设置文件名的内容配置在IE6中被忽略。web.xml中的Url显示为文件名,java,internet-explorer,servlets,Java,Internet Explorer,Servlets,这是我正在尝试运行的代码段。它在本地工作正常,但如果我尝试在unix服务器上运行它,下载文件的名称将显示为映射到web.xml中servlet的url,而不是Report.xls。请帮帮我 response.reset(); response.setHeader("Expires", "0"); response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0"); response.setHeader(

这是我正在尝试运行的代码段。它在本地工作正常,但如果我尝试在unix服务器上运行它,下载文件的名称将显示为映射到
web.xml
中servlet的url,而不是
Report.xls
。请帮帮我

response.reset();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment; filename=Report.xls;");

这是一个已知的IE问题。它实际上完全忽略
内容处置
标题中的文件名,并在“另存为”对话框中将URL路径信息的最后一部分用作默认文件名。您应该将下载文件的文件名添加为pathinfo的一部分。例如,servlet映射在
/reportservlet/*
url模式上(注意
/*
)在
web.xml中的尾部
/*

如果您希望在servlet中获取指定的文件名,以便可以更动态地执行一个或另一个操作,那么可以使用

String filename = request.getPathInfo().substring(1);
// Substring gets rid of leading `/`.
另见:

不客气。别忘了把答案标为已接受。另请参见:)以获取记录:我记得IE6确实使用了filename参数;所以可能是其他原因造成的。也许是后面的分号?