Hello friends,
the servlet shows how to generate reports using jasperReport.
//Servlet GetReport
package com.javaneses.report.server.report;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
/**
* @author Vagner Araujo
* */
public class GetReport extends HttpServlet{
private static final long serialVersionUID = -5295343701909694274L;
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
final String reportFileName = request.getParameter
("reportFileName");
final String reportName = request.getParameter("reportName")
+".jasper";
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename=\""
+ reportFileName + "\"");
Map<Object, Object> map = new HashMap<Object, Object>();
//add report logo
//logo path
final String logoPath = "com/javaneses/report/server/report/
logo.jpg";
URL url = ClassLoader.getSystemResource(logoPath);
//report parameter
map.put("logo", url);
try {
//file.jasper path
final String reportPath = "com/javaneses/report/server/
report/"+reportName;
url = ClassLoader.getSystemResource(reportPath);
File file = new File(url.toURI());
InputStream inputStream = new FileInputStream(file);
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream,
map, /*Your dataSource*/));
byte[] report = JasperExportManager.exportReportToPdf(jasperPrint);
response.setContentLength(report.length);
ServletOutputStream out = response.getOutputStream();
out.write(report);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}//end doPost
}//end class
Parameters
reportFileName => name to be suggested when the report is saved.
reportName => name of the jasper file compiled.
Vagner Araujo
vag...@jdukes.com