gpt4 book ai didi

java - 如何使用 servlet 响应打开新选项卡?

转载 作者:行者123 更新时间:2023-11-29 06:32:12 26 4
gpt4 key购买 nike

我想在 Web 应用程序中运行 index.jsp 文件时打开一个新选项卡。我已经使用 Show.java(一个 servlet)来执行该操作。目前的情况是当我点击index.jsp中的Print按钮时,我想在新标签页中打开的内容页面显示在当前标签页中。我想使用 servlet 响应而不是使用 javascriptjquery 来做到这一点。

这是我在index.jsp文件中写的,

<form action="Show">            
<input type="submit" value="Print"/>
</form>

<%@page import="net.sf.jasperreports.engine.export.JRPdfExporter" %>

<%
JRPdfExporter export = (JRPdfExporter)request.getAttribute("exportIndentObject");
if (export != null){
JRPdfExporter export1 = (JRPdfExporter) session.getAttribute("exportIndentObject");
export1.exportReport();
}%>

这是我用来保存内容的 Show.java

String param ="Terance";     
Map<String, Object> map = new HashMap<String, Object>();
map.put("param", param);
JRPdfExporter jRPdfExporter = new JRPdfExporter(); jRPdfExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, this.print();");

String jsaperFile="C:\\Users\\user\\Desktop\\Terance\\Jasper\\JasperReport\\src\\java\\jasper\\Report.jrxml";
System.out.println(jsaperFile);
try
{
String report=JasperCompileManager.compileReportToFile(jsaperFile);

File file=new File(report);
if(!file.exists()){
throw new JRException("Cannot find the given file .");
}

JasperPrint jasperPrint=JasperFillManager.fillReport(report, map);
byte[] exportReportToPdf = JasperExportManager.exportReportToPdf(jasperPrint);

ServletOutputStream sout = response.getOutputStream();
response.setContentType("application/pdf;");

jRPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jRPdfExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, sout);
jRPdfExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print();");

request.setAttribute("exportIndentObject", jRPdfExporter);

response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\"myReport.pdf\"");


sout.write(exportReportToPdf);
sout.flush();
sout.close();

} catch (JRException ex)
{
ex.printStackTrace();
}

当我使用 response.redirect(); 时,我什至无法在浏览器中获取 index.jsp 文件。

最佳答案

仅适用于全部或无:

<form ... target="_blank">

所以也许将打印按钮放在原始表单之外,并有自己的表单标签。

关于java - 如何使用 servlet 响应打开新选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com