美好的一天,我正在开发一个Servlet,它必须返回一个PDF文件和消息日志,以便对该文件进行处理。
到目前为止,我正在传递一个布尔值,我评估并返回日志或文件,具体取决于用户选择,如下所示:
//If user Checked the Download PDF
if (isDownload) {
byte[] oContent = lel;
response.setContentType("application/pdf");
response.addHeader("Content-disposition", "attachment;filename=test.pdf");
out = response.getOutputStream();
out.write(oContent);
} //If user Unchecked Download PDF and only wants to see logs
else {
System.out.println("idCompany: "+company);
System.out.println("code: "+code);
System.out.println("date: "+dateValid);
System.out.println("account: "+acct);
System.out.println("documentType: "+type);
String result = readFile("/home/gianksp/Desktop/Documentos/Logs/log.txt");
System.setOut(System.out);
// Get the printwriter object from response to write the required json object to the output stream
PrintWriter outl = response.getWriter();
// Assuming your json object is **jsonObject**, perform the following, it will return your json object
outl.print(result);
outl.flush();
}
有没有一种有效的方法可以同时退回两个项目?
非常感谢
答案 0 :(得分:1)
HTTP协议不允许您为每个HTTP请求发送多个HTTP响应。考虑到这一限制,您可以考虑以下备选方案:
onclick
事件处理程序,或者,如果您在第一个响应中返回HTML页面,则可以在window.load
或{{1}上触发另一个请求}; 请注意,第一个变体既笨拙又不方便用户,只要我担心应该不惜一切代价避免。用户控制他所获得的内容的页面是一个更好的选择。
答案 1 :(得分:0)
您可以将它们包装在DTO对象中,也可以将它们放在会话中以便从JSP引用。