<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當我做完使用API Servlet部署能夠接受參數以后 發現一個新的問題又來了,就是在報表中生成的圖片和chart都是以鏈接本地地址存在的,那要是放在服務器上,別的機子訪問時會出現圖片不可用的問題。經過查一系列資料終于把問題解決了。具體原理是什么其實我也不太了解,BIRT的API我還是沒怎么好好讀,先把代碼貼到這里再說吧,具體用的方式前面已經寫過一個詳細的文檔了。
      1 package cn.com.maxtech.fileupload;
      2 
      3 import java.io.IOException;
      4 import java.util.Enumeration;
      5 import java.util.HashMap;
      6 import java.util.Map;
      7 import java.util.logging.Level;
      8 import java.util.logging.Logger;
      9 
     10 import javax.servlet.ServletContext;
     11 import javax.servlet.ServletException;
     12 import javax.servlet.http.HttpServlet;
     13 import javax.servlet.http.HttpServletRequest;
     14 import javax.servlet.http.HttpServletResponse;
     15 
     16 
     17 import org.eclipse.birt.report.engine.api.EngineConstants;
     18 
     19 import org.eclipse.birt.report.engine.api.HTMLRenderContext;
     20 import org.eclipse.birt.report.engine.api.HTMLRenderOption;
     21 
     22 import org.eclipse.birt.report.engine.api.EngineConfig;
     23 import org.eclipse.birt.report.engine.api.HTMLActionHandler;
     24 import org.eclipse.birt.report.engine.api.HTMLEmitterConfig;
     25 import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;
     26 import org.eclipse.birt.report.engine.api.IReportEngine;
     27 import org.eclipse.birt.report.engine.api.IReportRunnable;
     28 import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
     29   
     30 
     31 public class WebReport extends HttpServlet {
     32 
     33 /**
     34  * 
     35  */
     36 private static final long serialVersionUID = 1L;
     37 /**
     38  * Constructor of the object.
     39  */
     40 private IReportEngine birtReportEngine = null;
     41 protected static Logger logger = Logger.getLogger( "org.eclipse.birt" );
     42 
     43 public WebReport() {
     44  super();
     45 }
     46 
     47 /**
     48  * Destruction of the servlet. 
     49  */
     50 public void destroy() {
     51  super.destroy(); 
     52  BirtEngine.destroyBirtEngine();
     53 }
     54 
     55 
     56 /**
     57  * The doGet method of the servlet. 
     58  *
     59  */
     60 public void doGet(HttpServletRequest req, HttpServletResponse resp)
     61   throws ServletException, IOException {
     62     
     63   Map m = new HashMap();
     64   Enumeration names = req.getParameterNames();
     65   while (names.hasMoreElements()) {
     66       String name =(String)names.nextElement();
     67       String value = req.getParameter(name);
     68       if (name.trim().equals("ReportName"|| name.trim().equals("action"|| value == null || value.trim().equals("")) {
     69           
     70       } else {
     71           m.put(name, value);
     72           System.out.print(name + "--->");
     73           System.out.println(m.get(name));
     74       }
     75       
     76   }
     77   
     78   ServletContext sc = req.getSession().getServletContext();
     79   
     80   this.birtReportEngine = BirtEngine.getBirtEngine(sc);
     81   EngineConfig config = birtReportEngine.getConfig();
     82   HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig( );   
     83   emitterConfig.setActionHandler( new HTMLActionHandler( ) );   
     84   HTMLServerImageHandler imageHandler = new HTMLServerImageHandler( );   
     85   emitterConfig.setImageHandler( imageHandler ); 
     86   
     87   config.getEmitterConfigs( ).put( "html", emitterConfig );
     88   
     89   
     90  resp.setContentType("text/html");
     91  //resp.setContentType( "application/pdf" ); 
     92  //resp.setHeader ("Content-Disposition","inline; filename=test.pdf");  
     93  String reportPath = req.getParameter("reportPath");
     94  String reportName = req.getParameter("ReportName");
     95 
     96  
     97  //setup image directory
     98  HTMLRenderContext renderContext = new HTMLRenderContext();
     99  renderContext.setBaseImageURL(req.getContextPath()+"/images");
    100  renderContext.setImageDirectory(sc.getRealPath("/images"));
    101  
    102  renderContext.setSupportedImageFormats("JPG;PNG;BMP;SVG"); 
    103  
    104  logger.log( Level.FINE, "image directory " + sc.getRealPath("/images"));  
    105  System.out.println("stdout image directory " + sc.getRealPath("/images"));
    106  System.out.println("stdout image directory " + renderContext.getBaseImageURL());
    107  
    108  HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>();
    109  contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
    110  
    111  IReportRunnable design;
    112  try
    113  {
    114   //Open report design
    115   design = birtReportEngine.openReportDesign( sc.getRealPath("/upload/baobiao/" + reportPath)+"/"+reportName );
    116   //create task to run and render report
    117   IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask( design );  
    118   task.setAppContext( contextMap );
    119   
    120   //set output options
    121   HTMLRenderOption options = new HTMLRenderOption();
    122   options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
    123   //options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
    124   options.setOutputStream(resp.getOutputStream());
    125   task.setRenderOption(options);
    126   
    127   //run report
    128   task.setParameterValues(m);
    129   task.run();
    130   task.close();
    131  }catch (Exception e){
    132   
    133   e.printStackTrace();
    134   throw new ServletException( e );
    135  }
    136 }
    137 
    138 /**
    139  * The doPost method of the servlet. 
    140  *
    141  */
    142 public void doPost(HttpServletRequest request, HttpServletResponse response)
    143   throws ServletException, IOException {
    144 
    145  this.doGet(request, response);
    146 }
    147 
    148 /**
    149  * Initialization of the servlet. 
    150  *
    151  * @throws ServletException if an error occure
    152  */
    153 public void init() throws ServletException {
    154     
    155     BirtEngine.initBirtConfig();
    156  
    157 }
    158 
    159 }
    160 


    posted on 2008-06-18 23:51 leweslove 閱讀(1137) 評論(0)  編輯  收藏 所屬分類: Other

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    Copyright@2008-2009 By Evan
    主站蜘蛛池模板: 国产成人精品男人免费| 国产啪亚洲国产精品无码| 国产精品亚洲AV三区| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 国产亚洲欧洲Aⅴ综合一区| 中文字幕在线观看免费视频| 亚洲精品无码专区在线| 亚洲熟女少妇一区二区| 免费AA片少妇人AA片直播| 日韩毛片免费一二三| 亚洲码在线中文在线观看| 免费人成网站在线播放| 19禁啪啪无遮挡免费网站| 粉色视频免费入口| 亚洲精品国产成人| 亚洲美女高清一区二区三区| 巨波霸乳在线永久免费视频| 思思久久99热免费精品6| 亚洲免费中文字幕| 亚洲人成影院在线无码按摩店| 青娱分类视频精品免费2| 成在线人免费无码高潮喷水| 亚洲一区二区三区写真| 久久亚洲一区二区| 免费jjzz在线播放国产| 100部毛片免费全部播放完整| 免费福利在线观看| 亚洲国产日韩精品| 久久亚洲一区二区| 中文字幕日韩亚洲| 暖暖免费高清日本一区二区三区| 小日子的在线观看免费| 免费无码专区毛片高潮喷水| 亚洲中文无码永久免费| 亚洲首页在线观看| 亚洲第一极品精品无码久久| 亚洲精品一级无码中文字幕| 国产精品免费_区二区三区观看 | 久久精品国产亚洲一区二区三区| 免费99精品国产自在现线| 99免费在线观看视频|