在這裡加入關於 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 }

SandBox (last edited 2007-05-03 18:08:12 by PingYeh)