【发布时间】:2010-10-11 12:27:31
【问题描述】:
我遇到了一个问题,即 IE 无法像 Firefox 那样打开 Excel 文档的“另存为/打开”对话框。
所以我创建了一个使用 '*.xls' 作为 url 模式的 servlet 过滤器。我现在面临的问题(因为这是我创建的第一个过滤器)是如何获取用户想要的文件名,以便正确填充对话框。当前,当用户选择给定页面上的链接时,将调用过滤器。
这是我想出的:
以上是我所拥有的doFilter()。
String fileName = "fileName.xls";
HttpServletRequest httpRequest = (HttpServletRequest) pRequest;
String requestURI = httpRequest.getRequestURI();
if(StringUtils.isNotBlank(requestURI))
{
String uri[] = StringUtils.split(requestURI, '/');
fileName = uri[uri.length - 1];
}
HttpServletResponse httpResponse = (HttpServletResponse) pResponse;
httpResponse.setContentType("application/vnd.ms-excel");
httpResponse.setHeader("Content-disposition", "attachment; filename=\"" + fileName +"\"");
web.xml:
<filter>
<filter-name>ExcelFilter</filter-name>
<filter-class>vsg.rp.common.ExcelFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ExcelFilter</filter-name>
<url-pattern>*.xls</url-pattern>
</filter-mapping>
这一切都在我的开发机器上运行:Windows XP、JBoss、Eclipse、Oracle。但是当它在测试服务器(Linux、Apache/JBoss、Oracle)上运行时,它就不起作用了。似乎甚至没有调用过滤器,也没有抛出错误等。知道为什么会发生这种情况吗?
【问题讨论】:
标签: java internet-explorer jsp servlet-filters