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

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          相關(guān)鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          今天利用JFreeChart結(jié)合DWR ReverseAjax實現(xiàn)服務(wù)器數(shù)據(jù)“推”到客戶端;在客戶端用JFreeChart默認(rèn)的org.jfree.chart.servlet.DisplayChart
          顯示圖片,會出現(xiàn)不同的客戶端不能顯示圖片;查看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 有關(guān);其中isChartInUserList是為同一session,因服務(wù)器推是同時推向多客戶端,這個isChartInUserList為false是沒法改變;isOneTimeChart是在創(chuàng)建chart的時候,如果session為null則會記錄該chart為one-time use,顯示一次后會被刪除;因此想從isChartPublic入手了;但是JFreeChart API并沒發(fā)現(xiàn)提供如何產(chǎn)生public+filename的chart;因此重寫DisplayChart默認(rèn)為public,這樣所有的客戶端都可以顯示。





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

          FeedBack:
          # re: JFreeChart顯示 2009-12-18 14:57 songkewei
          能不能把你的源代碼發(fā)給我讓我學(xué)習(xí)一下,謝謝,謝謝!
          songkewei110@126.com  回復(fù)  更多評論
            
          主站蜘蛛池模板: 北安市| 彝良县| 南澳县| 突泉县| 新绛县| 昌黎县| 新密市| 保德县| 鱼台县| 徐水县| 宁津县| 平罗县| 鄂托克前旗| 宁远县| 泸溪县| 阿合奇县| 泾川县| 克山县| 平湖市| 漠河县| 兴和县| 景泰县| 华蓥市| 庐江县| 秀山| 南部县| 宝丰县| 静乐县| 盐边县| 杨浦区| 西和县| 荣成市| 子洲县| 江阴市| 张掖市| 游戏| 昌乐县| 南雄市| 南溪县| 乌恰县| 军事|