1 28 package servlets; 29 30 import java.io.File ; 31 import java.io.IOException ; 32 import java.io.ObjectOutputStream ; 33 import java.io.PrintWriter ; 34 import java.util.HashMap ; 35 import java.util.Map ; 36 37 import javax.servlet.ServletContext ; 38 import javax.servlet.ServletException ; 39 import javax.servlet.ServletOutputStream ; 40 import javax.servlet.http.HttpServlet ; 41 import javax.servlet.http.HttpServletRequest ; 42 import javax.servlet.http.HttpServletResponse ; 43 44 import net.sf.jasperreports.engine.JRException; 45 import net.sf.jasperreports.engine.JRRuntimeException; 46 import net.sf.jasperreports.engine.JasperFillManager; 47 import net.sf.jasperreports.engine.JasperPrint; 48 import net.sf.jasperreports.engine.JasperReport; 49 import net.sf.jasperreports.engine.util.JRLoader; 50 import datasource.WebappDataSource; 51 52 53 57 public class JasperPrintServlet extends HttpServlet 58 { 59 60 61 64 public void service( 65 HttpServletRequest request, 66 HttpServletResponse response 67 ) throws IOException , ServletException 68 { 69 ServletContext context = this.getServletConfig().getServletContext(); 70 71 File reportFile = new File (context.getRealPath("/reports/WebappReport.jasper")); 72 if (!reportFile.exists()) 73 throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first."); 74 75 Map parameters = new HashMap (); 76 parameters.put("ReportTitle", "Address Report"); 77 parameters.put("BaseDir", reportFile.getParentFile()); 78 79 JasperPrint jasperPrint = null; 80 81 try 82 { 83 JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); 84 85 jasperPrint = 86 JasperFillManager.fillReport( 87 jasperReport, 88 parameters, 89 new WebappDataSource() 90 ); 91 } 92 catch (JRException e) 93 { 94 response.setContentType("text/html"); 95 PrintWriter out = response.getWriter(); 96 out.println("<html>"); 97 out.println("<head>"); 98 out.println("<title>JasperReports - Web Application Sample</title>"); 99 out.println("<link rel=\"stylesheet\" type=\"text/css\" HREF=\"../stylesheet.css\" title=\"Style\">"); 100 out.println("</head>"); 101 102 out.println("<body bgcolor=\"white\">"); 103 104 out.println("<span class=\"bnew\">JasperReports encountered this error :</span>"); 105 out.println("<pre>"); 106 107 e.printStackTrace(out); 108 109 out.println("</pre>"); 110 111 out.println("</body>"); 112 out.println("</html>"); 113 114 return; 115 } 116 117 if (jasperPrint != null) 118 { 119 response.setContentType("application/octet-stream"); 120 ServletOutputStream ouputStream = response.getOutputStream(); 121 122 ObjectOutputStream oos = new ObjectOutputStream (ouputStream); 123 oos.writeObject(jasperPrint); 124 oos.flush(); 125 oos.close(); 126 127 ouputStream.flush(); 128 ouputStream.close(); 129 } 130 else 131 { 132 response.setContentType("text/html"); 133 PrintWriter out = response.getWriter(); 134 out.println("<html>"); 135 out.println("<head>"); 136 out.println("<title>JasperReports - Web Application Sample</title>"); 137 out.println("<link rel=\"stylesheet\" type=\"text/css\" HREF=\"../stylesheet.css\" title=\"Style\">"); 138 out.println("</head>"); 139 140 out.println("<body bgcolor=\"white\">"); 141 142 out.println("<span class=\"bold\">Empty response.</span>"); 143 144 out.println("</body>"); 145 out.println("</html>"); 146 } 147 } 148 149 150 } 151 | Popular Tags |