Java 使用struts时在jsp中写入ServletOutputStream
我正在使用struts2 web应用程序。我面临的情况是,当用户单击链接时,我希望在用户浏览器中显示一个文件(可能是excel、pdf文件或html) 并且响应必须以浏览器中打开/保存对话框的形式出现 因为到目前为止我所做的是 1) 在struts.xml文件中创建操作映射 2) Action类方法的内容如下Java 使用struts时在jsp中写入ServletOutputStream,java,jsp,servlets,struts2,Java,Jsp,Servlets,Struts2,我正在使用struts2 web应用程序。我面临的情况是,当用户单击链接时,我希望在用户浏览器中显示一个文件(可能是excel、pdf文件或html) 并且响应必须以浏览器中打开/保存对话框的形式出现 因为到目前为止我所做的是 1) 在struts.xml文件中创建操作映射 2) Action类方法的内容如下 ServletOutputStream outputStream = null; outputStream = response.getOutputStream();
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页面中编写什么来显示这些内容
任何人都请帮忙。没什么,您还需要将响应头
上下文处理设置为“附件”将其添加到servlet代码中
response.setHeader("Content-Disposition","attachment;filename=myfilename.pdf");
您可以显示一个JSP页面作为操作的结果,或者让浏览器下载一个文件。你不能两者都做。可以说,它们是通过同一频道发送的
有关如何实现下载文件的典型示例,请参阅
但是在这种情况下,您可能只想从您的操作返回ActionSupport.NONE
或null
,因为您自己正在设置标题并编写输出,请参阅
如果你打电话
response.setHeader("Content-Disposition","attachment; filename=\"rfc2616-quoted-string\"");`
response.setHeader("Content-Disposition","inline");`
用户将看到一个下载对话框,但是如果您调用
response.setHeader("Content-Disposition","attachment; filename=\"rfc2616-quoted-string\"");`
response.setHeader("Content-Disposition","inline");`
如果可能,内容将显示在浏览器中。我建议使用
这是一个
此外,您可以在操作类中设置StreamResult参数,而不是struts.xml文件 好的..我要问的是我需要在jsp页面中写些什么来显示内容..just out.println()。对吗?或显示该内容所需的其他内容..这就是我的要求。您不希望用户有下载文件的选项,只需显示它,对吗?当用户单击此特定链接时,只需显示“保存/打开”对话框..是的,此代码将显示“打开/保存”对话框。你试过了吗?好的..有没有办法在struts.xml的result标记中把contentType,inputName,contentDisposition作为action类的结果?我不知道你的意思?您的意思是希望通过action类中的代码而不是struts.xml文件中的代码来设置这些参数吗?您正在使用注释吗?