我正在使用struts2 Web应用程序。面对我想在用户点击链接时在用户浏览器中显示文件(可能是excel,pdf文件或html)的情况。
响应必须是浏览器中打开/保存对话框的形式。
为此我到目前为止所做的是
1)在struts.xml文件中创建一个动作映射。
2)动作类方法将具有类似
的内容ServletOutputStream outputStream = null;
outputStream = response.getOutputStream();
byte[] output = (byte[])content;
response.setContentType(getContentType(format));
response.setContentLength(output.length);
outputStream.write(output, 0, output.length);
outputStream.flush();
outputStream.close();
此代码部分将设置内容类型,内容长度和atlast将写入内容。
我的问题是我需要在jsp页面中编写以显示此内容。
任何人都请帮忙。
答案 0 :(得分:2)
您可以通过浏览器下载文件的操作或显示JSP页面。你不能两者都做。可以这么说,它们是在同一个频道发送的。
有关如何实施下载文件的典型示例,请参阅StreamResult
。
但在这种情况下,您可能只想从操作中返回ActionSupport.NONE
或null
,因为您正在设置标题并自行编写输出,请参阅http://struts.apache.org/2.x/docs/result-configuration.html
如果你打电话
response.setHeader("Content-Disposition","attachment; filename=\"rfc2616-quoted-string\"");`
将向用户显示下载对话框,但如果您致电
response.setHeader("Content-Disposition","inline");`
如果可能,内容将显示在浏览器中。
答案 1 :(得分:1)
答案 2 :(得分:0)
没有,您还需要将响应标头context-disposition
设置为“附件”
答案 3 :(得分:0)
将此添加到您的servlet代码
response.setHeader("Content-Disposition","attachment;filename=myfilename.pdf");