posts - 3, comments - 1, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2007年10月31日

           

          JFreeChart是一個開源的JAVA項目,它主要用來開發各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。在這些不同式樣的圖表上可以滿足目前商業系統的要求。JFreeChart是一種基于JAVA語言的圖表開發技術。JFreeChart可用于ServletJSPAppletJava Appication環境中,通過JDBC可動態顯示任何數據庫數據,結合Itext可以輸出至PDF文件。

          JFreeChart主要是由三個類構成:

          Aorg.jfree.chart.servlet.ChartDeleter繼承自HttpSessionBindingListener,用于實現當Session 關閉時,刪除臨時目中的圖象文件。

          Borg.jfree.chart.servlet.DisplayChart繼承自Httpservlet 用于處理顯示圖象。

          Corg.jfree.chart.servlet.ServletUtilities有一系列方法,例如,saveChartAs*;saveChartAs*是把圖表按照不同的形式存儲為圖象;sendTempFile方法被重載了很多次,用于把文件流發送response

          下面以柱狀圖和餅圖為例,介紹圖形創建方法。

          1 柱狀圖

          org.jfree.chart.ChartFactory這個工廠類有createBarChartcreateStackedBarChartcreateBarChart3DcreateStackedBarChart3D,這幾個工廠方法創建不同類型的柱狀圖,比較重要的是 PlotOrientation.VERTICAL 讓平行柱垂直顯示,而 PlotOrientation.HORIZONTAL 則讓平行柱水平顯示。對柱狀圖影響較大的幾個類包括:org.jfree.chart.axis.CategoryAxisorg.jfree.chart.axis.ValueAxisorg.jfree.chart.renderer.BarRendererorg.jfree.chart.renderer. BarRenderer3D

          具體實現步驟:

          1)創建用于圖形生成所要的數據集對象。

          CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data)

          其中:rowKeys表示X軸數據,columnKeys表示Y軸數據,data表示填充柱狀圖所要的實際數據(來自于數據庫)。

          2)創建圖形對象。

          JFreeChart chart = ChartFactory.createBarChart3D("標題", nullnulldatasetPlotOrientation.VERTICAL,truefalsefalse)

          createBarChart3D方法是ChartFactory工廠類里的一個方法,用于3D柱狀圖的生成,該類繼承自JFreeChart。其中的八個參數分別代表:圖形的標題、X軸標題、Y軸標題、dataset就是CategoryDataset類的實例對象、顯示標題、啟用熱鍵、啟用超鍵接。

          3)設置圖形顯示的屬性。

          a ) ValueAxis類,設置柱到圖上下邊的距離。實現方法是:

          ValueAxis rangeAxis = plot.getRangeAxis();

          設置最高的一個柱與圖片頂端的距離:

          rangeAxis.setUpperMargin(0.15)

          設置最低的一個柱與圖片底端的距離:

          rangeAxis.setLowerMargin(0.15)

          borg.jfree.chart.renderer.BarRenderer3D類,設置圖形上顯示的數值。實現方法如下:

          BarRenderer3D renderer = new BarRenderer3D();

          renderer.setBaseOutlinePaint(Color.BLACK);

          設置 Wall 的顏色:

          renderer.setWallPaint(Color.gray);

          設置每個柱的顏色:

          renderer.setSeriesPaint(0, new Color(0, 0, 255));

          renderer.setSeriesPaint(1, new Color(0, 100, 255));

          renderer.setSeriesPaint(2, Color.GREEN);

          設置每個柱的 Outline 顏色
          renderer.setSeriesOutlinePaint(0, Color.BLACK);

          renderer.setSeriesOutlinePaint(1, Color.BLACK);

          renderer.setSeriesOutlinePaint(2, Color.BLACK);

          設置每個地區所包含的平行柱之間的距離
          renderer.setItemMargin(0.1);

          顯示每個柱的數值,并修改該數值的字體屬性

          renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

          renderer.setItemLabelFont(new Font("黑體",Font.PLAIN,12));

          renderer.setItemLabelsVisible(true);

          為圖形加入超連接

          renderer.setItemURLGenerator(new StandardCategoryURLGenerator());

          renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());

          2 餅圖

          org.jfree.chart.plot包,包含創建餅形圖的所有方法和屬性。

          筆者根據業務需求創建了setURLGenerator(PieURLGenerator generator)方法,在圖片上建立連接,就是圖片不同部分連接不同的資源。

          setSectionLabelType(int type)方法:

          指定 section 標簽的類型,共有 7 種類型。如果不指定,默認是 NAME_LABELS,其中類型分別是:

          PiePlot.NO_LABELS

          PiePlot.NAME_LABELS

          PiePlot.VALUE_LABELS

          PiePlot.PERCENT_LABELS PiePlot.NAME_AND_VALUE_LABELSPiePlot. NAME_AND_PERCENT_LABELSPiePlot.VALUE_AND_PERCENT_LABELS

          setDefaultOutlinePaint(java.awt.Paint paint)方法,指定 section 輪廓線的顏色,如果不指定,默認值為NULL

          setDefaultOutlineStroke(java.awt.Stroke stroke)方法,指定 section 輪廓線的厚度。

          setRadius(double percent) setExplodePercent(int section, double percent)方法,抽離 section,就是把某一section從餅形圖剝離出來,需要兩個方法一起使用。

          setStartAngle(double angle)方法,設置第一個section開始位置,默認從12點鐘方向開始。

          setPaint(int section, java.awt.Paint paint)方法指定section的顏色。

          setDirection(int direction)方法指定section順序,默認是順時針方向。順時針:PiePlot.CLOCKWISE;逆時針:PiePlot.ANTICLOCKWISE

          具體實現步驟:

          1)創建用于圖形生成所要的數據集對象。

          首先實例化類DefaultPieDataset dataset = new DefaultPieDataset()。然后利用DefaultPieDataset類提供的setValuevalue1,value2)方法,把從數據庫里提取的數據存入DefaultPieDataset對象。其中value1是數據名稱、value2是數據值。

          2)創建圖形對象。

          首先實例化JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true, true, false)createPieChart3D方法是用于餅圖生成的主要方法。其中title代表圖形的標題、dataset就是DefaultPieDataset對象的實例。

          3)設置圖形顯示的屬性。

          String filename = ServletUtilities.saveChartAsPNG(jFreeChart, 700, 450, info, session);

          ChartUtilities.writeImageMap(pw, filename, info);

          pw.flush()

          saveChartAsPNG方法在ServletUtilities工廠類定義完成。主要用于把圖形對象JFreeChart以圖片的形式保存。其中的jFreeChart就是JFreeChart對象的實例。該方法返回一個文件名。

          writeImageMappw, filename, info)方法用于把保存的圖片文件以字節流的形式寫入用戶界面。

          其中pwjava.io包的PrintWriter類的實例對象,該對象創建一個圖形輸出流。Filename是輸出圖片的文件名。該文件名來自ServletUtilities.saveChartAsPNG方法創建。

          參數info用于圖形信息的顯示。

          ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection())創建。

          最后輸出完成圖形,調用pw.flush()方法關閉IO流。

          ------------------------------------------------------------------------------------------

          使用JFreeChart生成各種樣式的圖表

          限于篇幅的問題我們在這里只實現兩種常用的圖表,其他類型圖表讀者可以觸類旁通。我們先給出柱狀圖的實現,餅圖的實現再來跟柱狀圖進行比較。

          1 柱狀圖


          package lius.chart.demo;

          import java.io.*;

          import org.jfree.data.*;
          import org.jfree.chart.*;
          import org.jfree.chart.plot.*;
          /**
          * 該類用于演示最簡單的柱狀圖生成
          * @author Winter Lau
          */
          public class BarChartDemo {

          public static void main(String[] args) throws IOException{

          CategoryDataset dataset = getDataSet2();
          JFreeChart chart = ChartFactory.createBarChart3D(
          "水果產量圖", // 圖表標題
          "水果", // 目錄軸的顯示標簽
          "產量", // 數值軸的顯示標簽
          dataset, // 數據集
          PlotOrientation.VERTICAL, // 圖表方向:水平、垂直
          true, // 是否顯示圖例(對于簡單的柱狀圖必須是false)
          false, // 是否生成工具
          false // 是否生成URL鏈接
          );

          FileOutputStream fos_jpg = null;
          try {
          fos_jpg = new FileOutputStream("D:""fruit.jpg");
          ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
          } finally {
          try {
          fos_jpg.close();
          } catch (Exception e) {}
          }
          }
          /**
          * 獲取一個演示用的簡單數據集對象
          * @return
          */
          private static CategoryDataset getDataSet() {
          DefaultCategoryDataset dataset = new DefaultCategoryDataset();
          dataset.addValue(100, null, "蘋果");
          dataset.addValue(200, null, "梨子");
          dataset.addValue(300, null, "葡萄");
          dataset.addValue(400, null, "香蕉");
          dataset.addValue(500, null, "荔枝");
          return dataset;
          }
          /**
          * 獲取一個演示用的組合數據集對象
          * @return
          */
          private static CategoryDataset getDataSet2() {
          DefaultCategoryDataset dataset = new DefaultCategoryDataset();
          dataset.addValue(100, "北京", "蘋果");
          dataset.addValue(100, "上海", "蘋果");
          dataset.addValue(100, "廣州", "蘋果");
          dataset.addValue(200, "北京", "梨子");
          dataset.addValue(200, "上海", "梨子");
          dataset.addValue(200, "廣州", "梨子");
          dataset.addValue(300, "北京", "葡萄");
          dataset.addValue(300, "上海", "葡萄");
          dataset.addValue(300, "廣州", "葡萄");
          dataset.addValue(400, "北京", "香蕉");
          dataset.addValue(400, "上海", "香蕉");
          dataset.addValue(400, "廣州", "香蕉");
          dataset.addValue(500, "北京", "荔枝");
          dataset.addValue(500, "上海", "荔枝");
          dataset.addValue(500, "廣州", "荔枝");
          return dataset;
          }
          }

          程序運行結束后生成的圖片文件效果如下圖所示:


          圖4

          如果是使用簡單的數據即使用getDataSet方法獲取數據集時產生的圖片文件如下:


          圖5

          2 餅圖

          對于餅圖而言,數據集的獲取用的不是同一個數據集類,另外餅圖不支持同一個類別的項目中還有子項目這樣的數據。我們只給出創建餅圖的代碼,至于寫圖表到一個文件則與柱狀圖一致,無需重復。


          package lius.chart.demo;

          import java.io.*;

          import org.jfree.data.*;
          import org.jfree.chart.*;
          /**
          * 用于演示餅圖的生成
          * @author Winter Lau
          */
          public class PieChartDemo {

          public static void main(String[] args) throws IOException{
          DefaultPieDataset data = getDataSet();
          JFreeChart chart = ChartFactory.createPie3DChart("水果產量圖", // 圖表標題
          data,
          true, // 是否顯示圖例
          false,
          false
          );
          //寫圖表對象到文件,參照柱狀圖生成源碼
          }
          /**
          * 獲取一個演示用的簡單數據集對象
          * @return
          */
          private static DefaultPieDataset getDataSet() {
          DefaultPieDataset dataset = new DefaultPieDataset();
          dataset.setValue("蘋果",100);
          dataset.setValue("梨子",200);
          dataset.setValue("葡萄",300);
          dataset.setValue("香蕉",400);
          dataset.setValue("荔枝",500);
          return dataset;
          }
          }

          生成的餅圖文件效果如下:


          圖6





          回頁首


          將生成的圖表移到瀏覽器上

          為了將生成的圖表直接傳給客戶端瀏覽器,只需要將前面兩個例子中的文件流換成是通過HttpServletResponse對象獲取到的輸出流,詳細代碼清單如下:


          package lius.chart.demo;

          import java.io.IOException;
          import javax.servlet.*;
          import javax.servlet.http.HttpServlet;

          import org.jfree.data.*;
          import org.jfree.chart.*;
          /**
          * 演示通過servlet直接輸出圖表
          * @author Winter Lau
          */
          public class ChartDemoServlet extends HttpServlet {

          public void service(ServletRequest req, ServletResponse res)
          throws ServletException, IOException
          {
          res.setContentType("image/jpeg");
          DefaultPieDataset data = getDataSet();
          JFreeChart chart = ChartFactory.createPie3DChart("水果產量圖",
          data,
          true,
          false,
          false
          );

          ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
          100,chart,400,300,null);
          }
          /**
          * 獲取一個演示用的簡單數據集對象
          * @return
          */
          private static DefaultPieDataset getDataSet() {
          DefaultPieDataset dataset = new DefaultPieDataset();
          dataset.setValue("蘋果",100);
          dataset.setValue("梨子",200);
          dataset.setValue("葡萄",300);
          dataset.setValue("香蕉",400);
          dataset.setValue("荔枝",500);
          return dataset;
          }
          }




          高級主題

          很多情況我們不僅僅要求可以在瀏覽器上顯示一個圖表,我們更需要客戶可以直接在圖表上做一下交互的操作,例如獲取信息提示,點擊圖表某個部分進行更詳細信 息的展示等等。例如前面生成的簡單柱狀圖,用戶需要在看到柱狀圖后點擊某種水果例如是蘋果即可看到各個地區蘋果產量的情況。為此就要求該圖形具有交互操作 的功能。在HTML中為了讓一個圖像具有可交互的功能就必須給該圖像定義一個Map對象。下表節選一段具有該功能的HTML代碼


          <MAP NAME="chartMap">
          <AREA SHAPE="RECT" COORDS="81,15,126,254" href="?series=0&category=100" title="100 = 7,048"
          onclick="javascript:clickChart('100');return false;">
          <AREA SHAPE="RECT" COORDS="143,27,188,255" href="?series=0&category=200" title="200 = 6,721"
          onclick="javascript: clickChart ('200');return false;">
          <AREA SHAPE="RECT" COORDS="205,54,250,255" href="?series=0&category=300" title="300 = 5,929"
          onclick="javascript: clickChart ('300');return false;">
          <AREA SHAPE="RECT" COORDS="267,85,312,255" href="?series=0&category=400" title="400 = 5,005"
          onclick="javascript: clickChart ('400');return false;">
          <AREA SHAPE="RECT" COORDS="329,17,374,255" href="?series=0&category=Diet" title="Diet = 7,017" onclick="javascript:
          clickChart ('Diet');return false;">
          </MAP>

          由此就產生了一個問題:如果 根據一個圖像來生成對應的MAP對象。我們回頭看看剛才的代碼,在創建一個圖表對象時候有兩個參數,我們舉柱狀圖的例子來講這兩個參數就是 ChartFactory. createBarChart3D方法中的最后兩個參數,這兩個參數的類型都是布爾值。這兩個參數意思分別是:是否創建工具提示(tooltip)以及是 否生成URL。這兩個參數分別對應著MAP中一個AREA的title屬性以及href屬性。

          可是我想知道的是怎么來產生這個MAP啊!哈哈,不要著急,JFreeChart已經幫我們做好生成MAP對象的功 能。為了生成MAP對象就要引入另外一個對象:ChartRenderingInfo。因為JFreeChart沒有直接的方法利用一個圖表對象直接生成 MAP數據,它需要一個中間對象來過渡,這個對象就是ChartRenderingInfo。下圖是生成MAP數據的流程圖:


          圖7

          如 上圖所示,ChartUtilities類是整個流程的核心,它周圍的對象都是一些例如數據對象或者是文件等。這個流程簡單描述如下:首先創建一個 ChartRenderingInfo對象并在調用ChartUtilities的writeChartAsJPEG時作為最后一個參數傳遞進去。調用該 方法結束后將產生一個圖像文件以及一個填充好MAP數據的ChartRenderingInfo對象,有了這個對象我們還是沒有辦法獲取具體的MAP數 據,我們還必須借助于ChartUtilities的writeImageMap方法來將ChartRenderingInfo對象讀取出來,獲取MAP 數據的代碼片斷如下:


          PrintWriter w = null;
          FileOutputStream fos_jpg = null;
          FileOutputStream fos_cri = null;
          try{
          //根據不同類型的圖表使用不同類,以下是針對餅圖的操作
          PiePlot plot = (PiePlot) chart.getPlot();
          plot.setURLGenerator(new StandardPieURLGenerator(url));
          //設置工具提示
          plot.setToolTipGenerator(new StandardPieToolTipGenerator());
          fos_jpg = new FileOutputStream(“d:""fruit.jpg”);
          ChartUtilities.writeChartAsJPEG(
          fos_jpg,
          100,
          chart,
          400,
          300,
          info);
          fos_cri = new FileOutputStream(__d:""fruit.map__);
          w = new PrintWriter(fos_cri);
          ChartUtilities.writeImageMap(w, __mapname__, info);
          w.flush();
          }finally{
          try{
          w.close();
          }catch(Exception e){}
          try{
          fos_cri.close();
          }catch(Exception e){}
          try{
          fos_jpg.close();
          }catch(Exception e){}
          }

          打開文件D:" fruit.map,文件的內容就是要寫到頁面上的MAP數據。把生成的圖像文件以及MAP數據文件寫到頁面上即可完成熱點圖表的功能。至于怎么結合兩者 之間的關系例如圖像的useMap屬性值必須與MAP對象的名稱結合起來,必須根據實際的應用情況進行相應的處理。筆者建議把二者通過標簽庫封裝起來,圖 像文件的名稱以及MAP對象的名稱由標簽庫統一進行控制,這樣可以保證二者的一致性。



          原文出處:http://dev.csdn.net/author/lyj_china/a5cda7cefe074c6b84f0ec944041921f.html

          posted @ 2007-10-31 17:09 小眼睛大智慧 閱讀(214) | 評論 (0)編輯 收藏

          一、page 對象
              page對象代表JSP本身,更準確地說它代表JSP被轉譯后的Servlet,它可以調用Servlet類所定義的方法。
                  
          二、config 對象
              config 對象里存放著一些Servlet 初始的數據結構。
              config 對象實現于javax.servlet.ServletConfig 接口,它共有下列四種方法:
                  public String getInitParameter(name)
                  public java.util.Enumeration getInitParameterNames( )
                  public ServletContext getServletContext( )
                  public Sring getServletName( )

          三、request 對象
              request 對象包含所有請求的信息,如:請求的來源、標頭、cookies和請求相關的參數值等等。
              request 對象實現javax.servlet.http.HttpServletRequest接口的,所提供的方法可以將它分為四大類:
              1.儲存和取得屬性方法;
                  void setAttribute(String name, Object value)       設定name屬性的值為value
                  Enumeration getAttributeNamesInScope(int scope)    取得所有scope 范圍的屬性
                  Object getAttribute(String name)                   取得name 屬性的值
                  void removeAttribute(String name)                  移除name 屬性的值
              2.取得請求參數的方法
                  String getParameter(String name)                   取得name 的參數值
                  Enumeration getParameterNames( )                   取得所有的參數名稱
                  String [] getParameterValues(String name)          取得所有name 的參數值
                  Map getParameterMap( )                             取得一個要求參數的Map
              3.能夠取得請求HTTP 標頭的方法
                  String getHeader(String name)                      取得name 的標頭
                  Enumeration getHeaderNames()                       取得所有的標頭名稱
                  Enumeration getHeaders(String name)                取得所有name 的標頭
                  int getIntHeader(String name)                      取得整數類型name 的標頭
                  long getDateHeader(String name)                    取得日期類型name 的標頭
                  Cookie [] getCookies( )                            取得與請求有關的cookies
              4.其他的方法
                  String getContextPath( )                           取得Context 路徑(即站臺名稱)
                  String getMethod( )                                取得HTTP 的方法(GET、POST)
                  String getProtocol( )                              取得使用的協議 (HTTP/1.1、HTTP/1.0 )
                  String getQueryString( )                           取得請求的參數字符串,不過,HTTP的方法必須為GET
                  String getRequestedSessionId( )                    取得用戶端的Session ID
                  String getRequestURI( )                            取得請求的URL,但是不包括請求的參數字符串
                  String getRemoteAddr( )                            取得用戶的IP 地址
                  String getRemoteHost( )                            取得用戶的主機名稱
                  int getRemotePort( )                               取得用戶的主機端口
                  String getRemoteUser( )                            取得用戶的名稱
                  void etCharacterEncoding(String    encoding)       設定編碼格式,用來解決窗體傳遞中文的問題

          四、response 對象
              response 對象主要將JSP 處理數據后的結果傳回到客戶端。
              response 對象是實現javax.servlet.http.HttpServletResponse 接口。response對象所提供的方法。
              1.設定表頭的方法
                  void addCookie(Cookie cookie)                      新增cookie
                  void addDateHeader(String name, long date)         新增long類型的值到name標頭
                  void addHeader(String name, String value)          新增String類型的值到name標頭
                  void addIntHeader(String name, int value)          新增int類型的值到name標頭
                  void setDateHeader(String name, long date)         指定long類型的值到name標頭
                  void setHeader(String name, String value)          指定String類型的值到name標頭
                  void setIntHeader(String name, int value)          指定int類型的值到name標頭
              2.設定響應狀態碼的方法
                  void sendError(int sc)                             傳送狀態碼(status code)
                  void sendError(int sc, String msg)                 傳送狀態碼和錯誤信息
                  void setStatus(int sc)                             設定狀態碼
              3.用來URL 重寫(rewriting)的方法    
                  String encodeRedirectURL(String    url)            對使用sendRedirect( )方法的URL予以編碼

          五、out 對象
              out 對象能把結果輸出到網頁上。
              out主要是用來控制管理輸出的緩沖區(buffer)和輸出流(output stream)。
                  void clear( )                                      清除輸出緩沖區的內容
                  void clearBuffer( )                                清除輸出緩沖區的內容
                  void close( )                                      關閉輸出流,清除所有的內容
                  int getBufferSize( )                               取得目前緩沖區的大小(KB)
                  int getRemaining( )                                取得目前使用后還剩下的緩沖區大小(KB)
                  boolean isAutoFlush( )                             回傳true表示緩沖區滿時會自動清除;false表示不會自動清除并且產生異常處理
                  
          六、session 對象
              session對象表示目前個別用戶的會話(session)狀況。
              session對象實現javax.servlet.http.HttpSession接口,HttpSession接口所提供的方法
                  long getCreationTime()                             取得session產生的時間,單位是毫秒
                  String getId()                                     取得session 的ID
                  long getLastAccessedTime()                         取得用戶最后通過這個session送出請求的時間
                  long getMaxInactiveInterval()                      取得最大session不活動的時間,若超過這時間,session 將會失效
                  void invalidate()                                  取消session 對象,并將對象存放的內容完全拋棄
                  boolean isNew()                                    判斷session 是否為"新"的
                  void setMaxInactiveInterval(int    interval)       設定最大session不活動的時間,若超過這時間,session 將會失效

          七、application對象
              application對象最常被使用在存取環境的信息。
              因為環境的信息通常都儲存在ServletContext中,所以常利用application對象來存取ServletContext中的信息。
              application 對象實現javax.servlet.ServletContext 接口,ServletContext接口容器所提供的方法
                  int getMajorVersion( )                             取得Container主要的Servlet API版本
                  int getMinorVersion( )                             取得Container次要的Servlet API 版本
                  String getServerInfo( )                            取得Container的名稱和版本
                  String getMimeType(String file)                    取得指定文件的MIME 類型
                  ServletContext getContext(String uripath)          取得指定Local URL的Application context
                  String getRealPath(String path)                    取得本地端path的絕對路徑
                  void log(String message)                           將信息寫入log文件中
                  void log(String message, Throwable throwable)      將stack trace 所產生的異常信息寫入log文件中

          八、pageContext對象
              pageContext對象能夠存取其他隱含對象。
              1.pageContext對象存取其他隱含對象屬性的方法,此時需要指定范圍的參數。
                  Object getAttribute(String name, int scope)
                  Enumeration getAttributeNamesInScope(int scope)
                  void removeAttribute(String name, int scope)
                  void setAttribute(String name, Object value, int scope)
              范圍參數有四個,分別代表四種范圍:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
              2.PageContext對象取得其他隱含對象的方法
                  Exception getException( )                          回傳目前網頁的異常,不過此網頁要為error page,
                  JspWriter getOut( )                                回傳目前網頁的輸出流,例如:out 
                  Object getPage( )                                  回傳目前網頁的Servlet 實體(instance),例如:page
                  ServletRequest getRequest( )                       回傳目前網頁的請求,例如:request
                  ServletResponse getResponse( )                     回傳目前網頁的響應,例如:response
                  ServletConfig getServletConfig( )                  回傳目前此網頁的ServletConfig 對象,例如:config
                  ServletContext getServletContext( )                回傳目前此網頁的執行環境(context),例如:application
                  HttpSession getSession( )                          回傳和目前網頁有聯系的會話(session),例如:session
              3.PageContext對象提供取得屬性的方法
                  Object getAttribute(String name, int scope)        回傳name 屬性,范圍為scope的屬性對象,回傳類型為Object
                  Enumeration getAttributeNamesInScope(int scope)    回傳所有屬性范圍為scope 的屬性名稱,回傳類型為Enumeration
                  int getAttributesScope(String name)                回傳屬性名稱為name 的屬性范圍
                  void removeAttribute(String name)                  移除屬性名稱為name 的屬性對象
                  void removeAttribute(String name, int scope)       移除屬性名稱為name,范圍為scope 的屬性對象
                  void setAttribute(String name, Object value, int scope)        指定屬性對象的名稱為name、值為value、范圍為scope
                  Object findAttribute(String name)                  尋找在所有范圍中屬性名稱為name 的屬性對象

          九、exception對象
              若要使用exception 對象時,必須在page 指令中設定。<%@ page isErrorPage="true" %>才能使用。
              exception提供的三個方法:
                  getMessage( )
                  getLocalizedMessage( )、
                  printStackTrace(new java.io.PrintWriter(out)) 

          原文出處:http://www.javaresearch.org/article/68164.htm

          posted @ 2007-10-31 17:07 小眼睛大智慧 閱讀(160) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 瑞安市| 贵定县| 田东县| 元氏县| 商洛市| 綦江县| 乐安县| 会东县| 东明县| 山阳县| 平罗县| 阿拉善左旗| 平泉县| 太谷县| 阜南县| 通山县| 福清市| 东乌珠穆沁旗| 河源市| 西平县| 来宾市| 华安县| 南昌县| 怀仁县| 黄梅县| 建平县| 邻水| 邓州市| 涿鹿县| 昂仁县| 龙海市| 康马县| 托克托县| 定西市| 临安市| 安龙县| 乡宁县| 寿光市| 叙永县| 尼木县| 临漳县|