Java internet下载管理器的打印问题
我想使用servlet在java web应用程序中打印文档,并清除报告信息以避免下载简历(SecurityContext.cleanReportInfo())。 当您的系统中没有IDM时,一切都正常,但当IDM运行时,它会发送2个请求,而不是1个请求,通过重定向到/403,一切都会出错,如下面的代码所示 PrintReportServletJava internet下载管理器的打印问题,java,spring,servlets,jasper-reports,Java,Spring,Servlets,Jasper Reports,我想使用servlet在java web应用程序中打印文档,并清除报告信息以避免下载简历(SecurityContext.cleanReportInfo())。 当您的系统中没有IDM时,一切都正常,但当IDM运行时,它会发送2个请求,而不是1个请求,通过重定向到/403,一切都会出错,如下面的代码所示 PrintReportServlet protected void service(HttpServletRequest request, HttpServletResponse respons
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ReportDto reportInfo = SecurityContext.getReportInfo();
if (reportInfo != null) {
ServletOutputStream outputStream = response.getOutputStream();
try {
generateHeaders(response, reportInfo);
generateContents(outputStream, reportInfo);
} catch (Exception e) {
LOGGER.log(Level.WARNING, "Error occurred during print report, nested error message: {0}", e.getMessage());
} finally {
outputStream.flush();
outputStream.close();
SecurityContext.cleanReportInfo();
}
} else {
response.sendRedirect(request.getContextPath() + "/403");
}
}
SecurityContext.java
public static void cleanReportInfo() {
SecurityContext.getCurrentSession().setAttribute("Report_Info", null);
}
errorreportController.js
$scope.printErrorList = function () {
errorReportService.printErrorList(function () {
window.open(contextPath + "/PrintReport");
});
};
ErrorReportController.java
@RequestMapping(value = "/printError", method = RequestMethod.GET)
@ResponseBody
public String printError() {
ReportDto reportDto = errorReportService.getReportInfo();
SecurityContext.setReportInfo(reportDto);
return success();
}
ErrorReportServiceImpl
public ReportDto getReportInfo() {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("jalaliDate", DateUtil.convertToJalali(new Date()).toStringBySlash());
parameters.put("alahImagePath", ReportUtil.getImagesPath() + File.separator + "alah.png");
parameters.put("sepahImagePath", ReportUtil.getImagesPath() + File.separator + "sepah.png");
parameters.put("reporter", SecurityContext.getCurrentUserName());
parameters.put("classify", "Normal");
parameters.put("userId",SecurityContext.getCurrentUserId());
ReportDto reportDto = new ReportDto(
ReportNames.ErrorReport, DataItems.Report_Type_PDF,
"error",
parameters);
return reportDto;
}
public ReportDto getReportInfo(){
映射参数=新的HashMap();
parameters.put(“jalaliDate”,DateUtil.convertToJalali(new Date()).toStringBySlash());
parameters.put(“alahImagePath”,ReportUtil.getImagesPath()+File.separator+“alah.png”);
parameters.put(“sepahImagePath”,ReportUtil.getImagesPath()+File.separator+“sepah.png”);
parameters.put(“reporter”,SecurityContext.getCurrentUserName());
参数。put(“分类”、“正常”);
parameters.put(“userId”,SecurityContext.getCurrentUserId());
ReportDto ReportDto=新的ReportDto(
ReportNames.ErrorReport,DataItems.Report\u Type\u PDF,
“错误”,
参数);
返回报告到;
}