重命名由Javaservlet流式传输的PDF

重命名由Javaservlet流式传输的PDF,java,servlets,download,Java,Servlets,Download,使用XSLT、XSL-FO和Apache FOP的正确组合,我能够将PDF发送到某个浏览器窗口。 事实上,我发送的文件内容如下: response.setContentType("application/pdf"); response.setContentLength( out.size()); response.getOutputStream().write( out.toByteArray()); response.ge

使用XSLT、XSL-FO和Apache FOP的正确组合,我能够将PDF发送到某个浏览器窗口。
事实上,我发送的文件内容如下:

response.setContentType("application/pdf"); response.setContentLength( out.size()); response.getOutputStream().write( out.toByteArray()); response.getOutputStream().flush(); response.setContentType(“application/pdf”); response.setContentLength(out.size()); response.getOutputStream().write(out.toByteArray()); response.getOutputStream().flush(); 正如预期的那样,浏览器在名为“PDF”的选项卡中显示PDF内容,如果我将文件保存在本地,则该名称也默认为PDF.PDF
如何强制输入文件名?

我尝试了以下方法,但没有成功:

response.setHeader("Content-Disposition","inline; filename=" + filename + ".pdf" ); response.setHeader(“内容处置”、“内联;文件名=“+filename+”.pdf”); 为了清晰起见,我想在浏览器中显示内容(而不是直接下载)

我找到了解决方案

基本上,这是一个改变web.xml中URL模式的问题
浏览器将使用任何页面名称
我以前有

<servlet-mapping>
        <servlet-name>PDF</servlet-name>
        <url-pattern>/pdf</url-pattern>
    </servlet-mapping>

PDF
/pdf
我把它换成了

<servlet-mapping>
        <servlet-name>PDF</servlet-name>
        <url-pattern>/pdf/*</url-pattern>
    </servlet-mapping>

PDF
/pdf/*

使用
http://wherever/pdf/filename.pdf?param1=va1...
将文件名更改为“filename.pdf”

内联
更改为
附件
。应该可以了。它确实设置了文件名,但也强制了我不想要的另存为弹出窗口。