1 /*
2 * ============================================================================
3 * GNU Lesser General Public License
4 * ============================================================================
5 *
6 * JasperReports - Free Java report-generating library.
7 * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13 *
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22 *
23 * JasperSoft Corporation
24 * 303 Second Street, Suite 450 North
25 * San Francisco, CA 94107
26 * http://www.jaspersoft.com
27 */
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 /**
54 * @author Teodor Danciu (teodord@users.sourceforge.net)
55 * @version $Id: JasperPrintServlet.java 1236 2006-04-22 07:51:44Z teodord $
56 */
57 public class JasperPrintServlet extends HttpServlet
58 {
59
60
61 /**
62 *
63 */
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 }