隨筆 - 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 扭曲的鉛筆 閱讀(945) 評論(1)  編輯  收藏 所屬分類: J2EE

          FeedBack:
          # re: JFreeChart顯示 2009-12-18 14:57 songkewei
          能不能把你的源代碼發給我讓我學習一下,謝謝,謝謝!
          songkewei110@126.com  回復  更多評論
            
          主站蜘蛛池模板: 新河县| 东莞市| 理塘县| 夏邑县| 东海县| 南岸区| 探索| 勃利县| 衡山县| 德兴市| 庆云县| 将乐县| 浦城县| 章丘市| 寻甸| 越西县| 如东县| 鹿泉市| 扶沟县| 崇礼县| 唐河县| 河曲县| 寿阳县| 宣城市| 密山市| 茶陵县| 甘谷县| 松滋市| 修武县| 榆林市| 固阳县| 江山市| 竹北市| 大兴区| 井陉县| 玉林市| 武冈市| 平安县| 甘谷县| 徐州市| 寿阳县|