在這裡加入關於 SandBox 的內容.
Vino Vino 被 kevinblue 說得很不錯,不過 MixCoffee&Tea 也不差。
this is just a sandbox.
You can try any wiki markup in this page.
COSCUP <<- <- 2007 / 8 -> ->> |
||||||
---|---|---|---|---|---|---|
Mon | Tue | Wed | Thu | Fri | Sat | Sun |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
1 def foo(arg):
2 return arg + 3
1 package com.softleader.utils;
2 import …;
3 public class JasperReportServlet extends HttpServlet {
4
5 private final static String jrxml = "jrxml";
6 private final static String jrstyle = "jrstyle";
7
8 public static Logger log =Logger.getLogger(JasperReportServlet.class.getName());
9
10 protected void processRequest(HttpServletRequest request,
11 HttpServletResponse response) throws ServletException, IOException {
12
13 // 取得 Report Template Definition
14 // /WEB-INF/jrxml/someDef.jrxml
15 String JRXML = StringUtils.trimToEmpty(request.getParameter(jrxml));
16 if ( JRXML.equals("")) {
17 response.setContentType("text/html;charset=UTF-8");
18 PrintWriter out = response.getWriter();
19
20 out.println("1. check jrxml put in /WEB-INF/jrxml/someDef.jrxml <br>");
21 out.println("2. use /JRServlet?jrxml=someDef&jrstyle=pdf&jrsysid=231");
22 out.close();
23 return;
24 }
25
26 // 取得 Request 之中所有參數
27 Enumeration paramNames = request.getParameterNames();
28 Map params =new HashMap();
29 while ( paramNames.hasMoreElements() ) {
30 String paramName = paramNames.nextElement();
31 params.put( paramName,
32 StringUtils.trimToEmpty(request.getParameter(paramName) );
33 }
34 log.debug(params);
35
36
37 // 取得 JRXML file Path
38 String jrXMLPath
39 = this.getServletContext().getRealPath("/")+
40 "WEB-INF\\jrxml\\"+JRXML+".jrxml";
41 log.debug(jrXMLPath);
42 try {
43 JasperReport jasperReport =
44 JasperCompileManager.compileReport(jrXMLPath);
45 JasperPrint jasperPrint=
46 JasperFillManager.fillReport(jasperReport,new HashMap(), new
47 JREmptyDataSource());
48
49 // 輸出的格式, 目前僅允許 PDF ( jrstyle=pdf ) 及 EXCEL ( jrstyle=xls )
50 String JRSTYLE =
51 StringUtils.trimToEmpty(request.getParameter(jrstyle)).toLowerCase();
52 if ( JRSTYLE.equals("xls")) {
53 exportExcelReport(response, params, jasperPrint);
54 } else {
55 exportPDFReport(response, params, jasperPrint);
56 }
57
58 } catch ( Exception ex ) {
59 log.error(ex);
60 }
61
62 }
63
64 private void exportPDFReport(HttpServletResponse response,
65 Map params,JasperPrint jasperPrint) throws Exception {
66
67 JRPdfExporter exporter = new JRPdfExporter();
68 ByteArrayOutputStream pdfOutStream = new ByteArrayOutputStream();
69 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
70 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, pdfOutStream);
71 //exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFilePath);
72 exporter.exportReport();
73 byte bytes[] = pdfOutStream.toByteArray();
74 pdfOutStream.close();
75 response.reset();
76
77 response.setContentType("application/pdf");
78 //response.setHeader("Content-Disposition","attachment");
79 OutputStream ouputStream = response.getOutputStream();
80 ouputStream.write(bytes, 0, bytes.length);
81 ouputStream.flush();
82 ouputStream.close();
83
84 }
85
86 private void exportExcelReport(HttpServletResponse response,
87 Map params,JasperPrint jasperPrint) throws Exception {
88 JRXlsExporter exporter = new JRXlsExporter();
89 ByteArrayOutputStream xlsOutStream = new ByteArrayOutputStream();
90 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
91 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsOutStream);
92 //exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFilePath);
93 exporter.exportReport();
94 byte bytes[] = xlsOutStream.toByteArray();
95 xlsOutStream.close();
96 response.reset();
97
98 response.setContentType("application/vnd.ms-excel");
99 //response.setHeader("Content-Disposition","attachment");
100 OutputStream ouputStream = response.getOutputStream();
101 ouputStream.write(bytes, 0, bytes.length);
102 ouputStream.flush();
103 ouputStream.close();
104
105 }
106
107
108 protected void doGet(HttpServletRequest request,
109 HttpServletResponse response) throws ServletException, IOException {
110 processRequest(request, response);
111 }
112
113 protected void doPost(HttpServletRequest request,
114 HttpServletResponse response) throws ServletException, IOException {
115 processRequest(request, response);
116 }
117
118 public String getServletInfo() {
119 return "JasperReportServlet";
120 }
121
122 }