隨筆 - 37  文章 - 14  trackbacks - 0
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          相關鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          今天利用JFreeChart結合DWR ReverseAjax實現服務器數據“推”到客戶端;在客戶端用JFreeChart默認的org.jfree.chart.servlet.DisplayChart
          顯示圖片,會出現不同的客戶端不能顯示圖片;查看DisplayChart源碼
           public void service(HttpServletRequest request, 
                                  HttpServletResponse response)
                      
          throws ServletException, IOException {

                  HttpSession session 
          = request.getSession();
                  String filename 
          = request.getParameter("filename");

                  
          if (filename == null) {
                      
          throw new ServletException("Parameter 'filename' must be supplied");
                  }

                  
          //  Replace ".." with ""
                  
          //  This is to prevent access to the rest of the file system
                  filename = ServletUtilities.searchReplace(filename, "..""");

                  
          //  Check the file exists
                  File file = new File(System.getProperty("java.io.tmpdir"), filename);
                  
          if (!file.exists()) {
                      
          throw new ServletException("File '" + file.getAbsolutePath() 
                              
          + "' does not exist");
                  }

                  
          //  Check that the graph being served was created by the current user
                  
          //  or that it begins with "public"
                  boolean isChartInUserList = false;
                  ChartDeleter chartDeleter 
          = (ChartDeleter) session.getAttribute(
                          
          "JFreeChart_Deleter");
                  
          if (chartDeleter != null) {
                      isChartInUserList 
          = chartDeleter.isChartAvailable(filename);
                  }

                  
          boolean isChartPublic = false;
                  
          if (filename.length() >= 6) {
                      
          if (filename.substring(06).equals("public")) {
                          isChartPublic 
          = true;
                      }
                  }

                  
                  
          boolean isOneTimeChart = false;
                  
          if (filename.startsWith(ServletUtilities.getTempOneTimeFilePrefix())) {
                      isOneTimeChart 
          = true;   
                  }

                  
          if (isChartInUserList || isChartPublic || isOneTimeChart) {
                      
          //  Serve it up
                      ServletUtilities.sendTempFile(file, response);
                      
          if (isOneTimeChart) {
                          file.delete();   
                      }
                  }
                  
          else {
                      
          throw new ServletException("Chart image not found");
                  }
                  
          return;
              }
          其中無法顯示的圖片的原因跟 isChartInUserList || isChartPublic || isOneTimeChart 有關;其中isChartInUserList是為同一session,因服務器推是同時推向多客戶端,這個isChartInUserList為false是沒法改變;isOneTimeChart是在創建chart的時候,如果session為null則會記錄該chart為one-time use,顯示一次后會被刪除;因此想從isChartPublic入手了;但是JFreeChart API并沒發現提供如何產生public+filename的chart;因此重寫DisplayChart默認為public,這樣所有的客戶端都可以顯示。





          posted on 2008-09-09 17:26 扭曲的鉛筆 閱讀(948) 評論(1)  編輯  收藏 所屬分類: J2EE

          FeedBack:
          # re: JFreeChart顯示 2009-12-18 14:57 songkewei
          能不能把你的源代碼發給我讓我學習一下,謝謝,謝謝!
          songkewei110@126.com  回復  更多評論
            
          主站蜘蛛池模板: 高要市| 陇川县| 岑巩县| 许昌市| 扎囊县| 邵武市| 镇康县| 娱乐| 岐山县| 紫云| 兰西县| 陇南市| 三都| 光山县| 竹溪县| 永平县| 白水县| 毕节市| 隆安县| 南宁市| 长岛县| 新干县| 临汾市| 永登县| 中方县| 肇州县| 邢台市| 雷波县| 鹰潭市| 横山县| 会昌县| 日喀则市| 许昌县| 永昌县| 剑阁县| 石柱| 南汇区| 合川市| 巴彦淖尔市| 富平县| 元朗区|