顯示具有 java 標籤的文章。 顯示所有文章
顯示具有 java 標籤的文章。 顯示所有文章

2012年12月7日 星期五

Java 網路程式設計範例

Java 網路程式設計範例

The materials in this web page are collected from Java Network Programming and Distributed Computing written by David Reilly and Michael Reilly and the Internet. They are solely used for educational purposes. Hopefully, I am not violating any copyright issue here. If so, please do email me.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

目錄

  1. java.net.InetAddress
  2. Data Streams
    1. java.io.InputStream
    2. java.io.OutputStream
    3. Filter Streams
    4. Readers and Writers
    5. Object Persistence and Serialization
  3. User Datagram Protocol
  4. Transmission Control Protocol
  5. 執行緒:Multi-Threading
  6. Some application protocols
    1. SMTP Client
    2. POP3 Client
    3. HTTP/1.0 Server
    4. Simple HTTP Client
  7. Java Multicasting


2012年10月26日 星期五

Remote Method Invocation 入門

Remote Method Invocation 入門

Many examples in this document are adapted from Java: How To Program (3rd Ed.), written by Deitel and Deitel, and Thinking in Java (2nd Edition), written by Bruce Eckel. All examples are solely used for educational purposes. Hopefully, I am not violating any copyright issue here. If so, please do email me.
Please install JDK 1.3.1_02 or later with Java Plugin to view this page. Also, this page is best viewed with browsers (for examples, Mozilla 0.99 or later, IE 6.x or later) with CSS2 support. This document is provided as is. You are welcomed to use it for non-commercial purpose.

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

目錄

  1. 前言
  2. Hello World -- RMI
  3. RMI and DB
  4. 查詢 services 清單
  5. RmiJdbc
  6. RMI 的其他議題


Java Bluetooth 程式開發入門

Java Bluetooth 程式開發入門

This document is provided as is. Use it at your own risks. You are, however, welcomed to use it for educational, non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟

請勿轉貼
看其他教材

目錄

  1. 藍芽簡介
  2. 開發環境簡介
  3. 程式開發
    1. LocalDevice 的查詢
    2. RemoteDevice 的查詢
    3. 利用 RFCOMM 來交換訊息
    4. 利用 L2CAP 來交換訊息
    5. 利用 OBEX 來傳送檔案

藍芽簡介

Under Construction

開發環境簡介

這一節的說明主要是針對 Linux 的環境,或者更嚴格的說是我還沒有發現 Blue Cove 以前的測試環境。現在 Windows XP SP2 之後已經支援藍芽的驅動程式, 再加上 Blue Cove 以及藍芽設備,你就可以開始開發了。不過,我還是把 以下的說明留下來當參考用。

窮人的 Java Bluetooth 開發環境之建置

窮人的 Java Bluetooth 開發環境之建置


Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

  1. Log:
    1. 文件草稿始於 08/27/2004.
    2. Updated on 08/12/2005.
  2. 動機: 前一段時間對於手機藍芽程式的開發產生興趣, 可是又沒有很多經費,又希望開發的藍芽程式能以 Java 為主,但是又不想因為 只是想試試看而大費周章重新切割自己的硬碟,所以開始到處尋尋覓覓。 經過蠻曲折的過程,決定將開發環境設定為最精簡的 Knoppix(可以利用 光碟開機成 Linux 而不須對現有的磁碟進行分割,並且只需要一個 FAT/FAT32 的分割區就可以把需要安裝的程式放進去), Bluez (內建在 Linux Kernel 的藍芽驅動程式), 以及 Rococosoft's Impronto Developer Kit for Linux(經過註冊可以免費下載,這個開發工具 提供一個軟體層使得符合 JABWT 的 Java APIs 能與底層的 Bluez 驅動 程式溝通)。如此一來,除了藍芽裝置以外,幾乎不需要花太多的錢 就可以擁有一個 Java 的藍芽開發環境。

2012年10月22日 星期一

Javascript 與 Java 合用

JavaScript 存取 Java Applet 的函數







在本例中,我們使用 JavaScript 的事件處理程序 onClick 去 呼叫 Java Applet,並將輸入欄位中的值由 Java Applet 顯示出來。 說明︰
  • Form 的內容
    <form name="form1">
    <input type="text" name="text1">
    <input type="button" value="變換文字"
           onClick="document.ControlJava.SetMessage(document.form1.text1.value);">
    </form>
    <applet name="ControlJava" code="ControlJava.class" width="450" height="120">
    </applet>
    
  • Applet 的內容
  • Java applets 也有一些困擾。例如,這個網頁的 applet 在 05/28/2007 之前 是利用JDK 1.2 版所 compile 的,在當時可以正確無誤的呈現中文。可以在 JDK 1.5 給 browser 的外掛程式之下卻無法正確的顯示中文,我必須重新以 JDK 1.5 compile 這個 applet 之後才能正確的顯示。希望以後,這類的困擾可以減少。


2012年10月13日 星期六

寫一個支援檔案上傳的 java Servlet 或者 JSP

最近決定寫一個檔案上傳的網頁讓研究生和專題學生把他們報告的投影片或者論文能夠上傳,以便以後在複習相關資料的時候,比較容易。利用 google 大神查到了 jGuru: How do I upload a file to my servlet or JSP?,然後決定採用 Apache Jakarta Commons 的 FileUpload 的套件來進行。
閱讀完了相關資料,並測試以後,我把過程列出來:

Java Servlet 入門

Java Servlet 入門

Many examples in this document are adapted from Java: How To Program (3rd Ed.), written by Deitel and Deitel, and Thinking in Java (2nd Edition), written by Bruce Eckel. All examples are solely used for educational purposes. Hopefully, I am not violating any copyright issue here. If so, please do email me.
Please install JDK 1.3.1_02 or later with Java Plugin to view this page. Also, this page is best viewed with browsers (for examples, Mozilla 0.99 or later, IE 6.x or later) with CSS2 support. This document is provided as is. You are welcomed to use it for non-commercial purpose.
在以下的範例中,我們假設你已經在你自己的電腦上面安裝好了 Apache Tomcat 而且 port 為 8080。
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

Java 與資料處理入門

資料處理入門

Many examples in this document are adapted from Java: How To Program (3rd Ed.), written by Deitel and Deitel, and Thinking in Java (2nd Edition), written by Bruce Eckel. All examples are solely used for educational purposes. Hopefully, I am not violating any copyright issue here. If so, please do email me.
Please install JDK 1.3.1_02 or later with Java Plugin to view this page. Also, this page is best viewed with browsers (for examples, Mozilla 0.99 or later, IE 6.x or later) with CSS2 support. This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

目錄

  1. 使用 Properties 來初始化你的程式
  2. 資料庫
  3. JDBC 的種類
  4. 資料庫存取的基本步驟
  5. 資料庫新增、刪除、查詢、修改
  6. JDBC 的種類
  7. 如何從 Unix (或 Linux)連資料庫?
  8. 從 applet 連資料庫的問題
  9. 讀取 Excel 的資料

2012年10月1日 星期一

安裝 Tomcat 5.5.x

安裝 Tomcat 5.5.x

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟
請勿轉貼
看其他教材

支援一般連線

Tomcat 是一個讓開發者能夠執行 JSP/servlet 的伺服器(比較專業的說法是 container),其安裝步驟如下:
  1. 安裝 JDK 1.5.x 版或者更新的版本。
    • 記得要設定環境變數 JAVA_HOME。假設 JDK 安裝在 c:\jdk,我們需要執行 set JAVA_HOME=c:\jdk或者在控制台內設定。
  2. 安裝 Tomcat(我們以 5.5.x 版為例;並假設 Tomcat 安裝於 d:\tomcat)。下列 的設定不適用於 Tomcat 6.x 或者 Ttomcat 7.x 版。

2012年9月28日 星期五

安裝 Tomcat 7.0.x

安裝 Tomcat 7.0.x

This document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟
請勿轉貼
看其他教材

我個人最愛的 Tomcat 5.5.x 終於被宣布自 09/2012 起停止支援,甚至到了 12/2012 就無法下載了。在無奈之下,只好開始轉戰 Tomcat 7.0.x 版。 Tomcat 7.0.x 版的安裝對於 JSP 的開發並沒有太大的改變,改變最多的大概 就是 servlet 的程式了;為了避免大幅修改 Java Servlet 入門, 我會在本文中說明開發 servlet 程式時,web.xml 的必要修改。

支援一般連線

Tomcat 是一個讓開發者能夠執行 JSP/servlet 的伺服器(比較專業的說法是 container),其安裝步驟如下:

2012年9月26日 星期三

JOFC2 - 混合圖表

JOFC2 - 混合圖表

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼

我們假設你已經依據之前的文章完成的 OFC2 的安裝工作,也了解之前 OFC2 和 JSP 的合用方式。由於在本文中,我們將介紹如何混搭 BarChart 以及 LineChart, 因此請讀者先熟讀 OFC2 - 第三個範例 以及 OFC2 - LineChart 和 PieChart 中第六個範例。 在進一步說明範例之前,我們要先說明的是:我們只針對跟之前不同的地方進行 說明,相同的部分就不再贅述! 簡單來說,如果需要在一個 Chart 物件中,加入(例如)BarChart 以及 LineChart, 你需要分別產生 BarChart 以及 LineChart,並對他們進行設定;一旦設定完成, 我們就可以將 BarChart 以及 LineChart 的物件加到 Chart 物件內。 如果讀者依據我們的程式執行,應該可以看到類似如下的畫面:
而完整的程式碼列示如下:
<%@page contentType="text/plain" pageEncoding="UTF-8"
        import="jofc2.*,
                jofc2.model.*,
                jofc2.model.elements.*,
                jofc2.model.axis.*,
                jofc2.model.elements.BarChart.*,
                jofc2.model.elements.LineChart.*"%>
<%
  Chart cht = new Chart("存貨量線型圖");
  XAxis labels = new XAxis();
  labels.addLabels("北區", "中區", "南區", "離島");
  cht.setXAxis(labels);
  YAxis range = new YAxis();
  range.setRange(0, 60, 10);
  cht.setYAxis(range);
  BarChart bar = new BarChart(BarChart.Style.THREED);
  LineChart lin = new LineChart();
  bar.setColour("#669900");
  lin.setColour("#6666FF");
  bar.setText("存貨量");
  lin.setText("價格");

  for(int i=0; i<4; i++) {
    bar.addValues((int) (Math.random() * 60) + 1);
    lin.addValues((int) (Math.random() * 10) + 1);
  }

  cht.addElements(bar, lin);
  out.println(cht.toString());

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

JOFC2 - LineChart 和 PieChart

JOFC2 - LineChart 和 PieChart

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


我們假設你已經依據之前的文章完成的 OFC2 的安裝工作,也了解之前 OFC2 和 JSP 的合用方式。在本文中,我們簡單的介紹 LineChart 和 PieChart 的產生方式。 由於這些圖表的產生方式跟之前 BarChart 非常類似,我們大多只列示其程式碼, 並加上執行後的範例畫面。 在進一步說明範例之前,我們要先說明的是:我們只針對跟之前不同的地方進行 說明,相同的部分就不再贅述!
  1. LineChart:jofc2.model.elements.LineChart 跟 BarChart 一樣,也是 jofc2.model.elements.Element 的子類別,因此使用的方式與 BarChart 非常 類似。依據 JOFC2 LineChart 的文件,我們之前介紹 LineChart 的 Style 共有 LineChart.Style.DOT、LineChart.Style.HOLLOW、 以及 LineChart.Style.NORMAL 三種;其中,只有 NORMAL 有效果,其它的,就算可以產生 json 檔,卻無法顯示。 後來在我有空的時候,我仔細檢查了 JOFC2 LineChart 的原始碼之後,我發現 原來文件和原始碼是不一致的,請以下列的方式來開發,我也強烈懷疑, 之前測不出來的效果,可能也是這個原因所造成的)。 在下列程式碼中,我們特別針對 LineChart 物件的產生方式說明一下;根據 JOFC2 的原始碼,我們說明在設定上彈性最高的一種建構元,該建構元總共有 六個參數;
    1. 第一個參數用來指定線型圖上每一個資料點的形狀:支援的形狀總共有 BOW, DOT, HALLOW_DOT, ANCHOR, STAR, 和 SOLID_DOT 六種。在範例中,我們 使用了 STAR 和 HALLOW_DOT。
    2. 第二個參數用來指定線型圖上每一個資料點的顏色:設定的方式是利用 #RGB 的方式;在範例中,我們分別指定紫色和紅色。
    3. 第三個參數用來指定線型圖上每一個資料點的大小;在範例中,我們分別指定的 大小為 8 和 5。
    4. 第四個參數用來指定線型圖上每一個資料點與兩端線的距離;在範例中, 我們分別指定的距離是 0 (也就是不留間隙) 和 10。
    5. 第五個參數用來設定轉動(rotate)每一個資料形狀的角度;在範例中, 我們讓 STAR(星狀圖)轉動 90 (從畫面呈現的效果,90 應該不是代表 90 度); 而 DOT(圓餅)不轉動。
    6. 第四個參數用來設定每一個資料點與兩端線的距離是否為真。目前測不出 任何效果。
    如果讀者依據我們的程式執行,應該可以看到類似如下的畫面;我們強烈建議 讀者盡量測試各種的效果。

    而完整的程式碼列示如下:
    <%@page contentType="text/plain" pageEncoding="UTF-8"
            import="jofc2.*,
                    jofc2.model.*,
                    jofc2.model.elements.*,
                    jofc2.model.axis.*,
                    jofc2.model.elements.LineChart.*"%>
    <%
      Chart cht = new Chart("存貨量線型圖");
      XAxis labels = new XAxis();
      labels.addLabels("北區", "中區", "南區", "離島");
      cht.setXAxis(labels);
      YAxis range = new YAxis();
      range.setRange(0, 60, 10);
      cht.setYAxis(range);
    
      // 初始化 LineChart,並分別設定線型圖的各種樣子
      // LineChart.Style 的第一個參數指的是每一個點的形狀;總共有 BOW, DOT, HALLOW_DOT,
      //                 ANCHOR, STAR, 和 SOLID_DOT
      // 第二個參數指的是點的顏色
      // 第三個參數指的是點的大小
      // 第四個參數指的是 halo (點以及線之間的距離)
      // 第五個參數指的是旋轉(rotate)點的角度
      // 第六個參數指的是是否要讓 halo 的值生效;目前測不出效果
      LineChart lin1 = new LineChart(new LineChart.Style(LineChart.Style.Type.STAR, 
                                     "#CC00CC", 8, 0, 90, false));
      LineChart lin2 = new LineChart(new LineChart.Style(LineChart.Style.Type.HALLOW_DOT, 
                                     "#CC0000", 5, 10, 0, true));
    
      // 設定線的的顏色
      lin1.setColour("#669900");
      lin2.setColour("#6666FF");
    
      // 設定線的的標題
      lin1.setText("存貨量");
      lin2.setText("價格");
    
      for(int i=0; i<4 data-blogger-escaped-10="" data-blogger-escaped-1="" data-blogger-escaped-60="" data-blogger-escaped-ath.random="" data-blogger-escaped-cht.addelements="" data-blogger-escaped-cht.tostring="" data-blogger-escaped-gt="" data-blogger-escaped-i="" data-blogger-escaped-int="" data-blogger-escaped-lin1.addvalues="" data-blogger-escaped-lin1="" data-blogger-escaped-lin2.addvalues="" data-blogger-escaped-lin2="" data-blogger-escaped-out.println="" data-blogger-escaped-pre="">
    
  2. PieChart: jofc2.model.elements.PieChart 跟 BarChart 一樣,是 jofc2.model.elements.Element 的子類別,但是它跟之前介紹過的 BarChart 和 LineChart 有幾個比較不同的地方:第一個 PieChart 是一個圓餅圖, 在一般的情形下,大概只有一系列的資料,而不會有多群的 Bars 或者 Lines; 第二個差異在於 PieChart 沒有明顯的 X 和 Y 軸,因此一些 X 和 Y 軸的 設定沒有必要。 PieChart 跟 BarChart 和 LineChart 一樣,可以直接把想表現的數值利用 addValues() 方法加進去,缺點是圓餅圖中的每一片(slice)的標籤就是 該片的數值,不太方便。因此,可以使用如下的方式:
      pie.addSlice((int) (Math.random() * 10) + 1, "北區");
    
    將數值以及其相對應的標籤一起家進去。如果讀者依據本程式執行,應該 可以看到如下的畫面:
    完整的程式碼如下:
    <%@page contentType="text/plain" pageEncoding="UTF-8"
            import="jofc2.*,
                    jofc2.model.*,
                    jofc2.model.elements.*,
                    jofc2.model.axis.*,
                    jofc2.model.elements.PieChart.*"%>
    <%
      Chart cht = new Chart("存貨量圓型圖");
    
      PieChart pie = new PieChart();
      pie.addSlice((int) (Math.random() * 10) + 1, "北區");
      pie.addSlice((int) (Math.random() * 10) + 1, "中區");
      pie.addSlice((int) (Math.random() * 10) + 1, "南區");
      pie.addSlice((int) (Math.random() * 10) + 1, "離島");
      
      // 請嘗試移除上列四個 pie.addSlice(), 並使用下列數值以觀察不同結果
    /*
      for(int i=0; i<4 data-blogger-escaped-10="" data-blogger-escaped-1="" data-blogger-escaped-ath.random="" data-blogger-escaped-cht.addelements="" data-blogger-escaped-cht.tostring="" data-blogger-escaped-gt="" data-blogger-escaped-i="" data-blogger-escaped-int="" data-blogger-escaped-out.println="" data-blogger-escaped-pie.addvalues="" data-blogger-escaped-pie.setcolours="" data-blogger-escaped-pie.setradius="" data-blogger-escaped-pie="" data-blogger-escaped-pre="">
    







Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu


JOFC2 - 第五個範例

JOFC2 - 第五個範例

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


我們假設你已經依據之前的文章完成的 OFC2 的安裝工作,也了解之前 OFC2 和 JSP 的合用方式。如果你熟悉 JSP 或者 Java servlet,但是不清楚 JSP/servlet 的生命週期,請仔細閱讀 JSP 的生命週期。由於我們在這個範例中不再 使用亂數產生器來產生亂數,而是利用資料庫中現有的資料來呈現,而且我們使用的 資料庫管理系統是 MySQL,我們假設讀者已經依據 MySQL Server 簡介 中介紹的方式,完成了 MySQL 的安裝, 並且已經新增了所需要的使用者(jlu)、資料庫(eric),以及其表格(Product)。 如果讀者依據本文的介紹完成程式,顯示的畫面如下:
在進一步說明範例之前,我們要先說明的是:我們只針對跟之前不同的地方進行 說明,相同的部分就不再贅述!
  1. 由於要與資料庫連接,我們需要下列敘述:
      import java.sql.*;
    
  2. MySQL Server 簡介 中介紹的程式碼類似,跟資料庫連接,我們需要完成載入 JDBC 驅動程式, 利用該驅動程式與資料庫產生連線,經由連線產生執行 SQL 語法的 Statement 物件, 然後利用 Statement 物件來執行 SQL 語法,最後處理 SQL 的結果。其相關的 程式碼如下:
        // 載入 MySQL JDBC 驅動程式
        Class.forName("com.mysql.jdbc.Driver");
    
        // 產生程式與資料庫之間的連線
        conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/eric", "jlu", PWD);
    
        // 產生用來執行 SQL 語法的 Statement 物件
        stmt = conn.createStatement();
    
        // 執行 Query
        ResultSet rs = stmt.executeQuery(qSQL);
    
        // 將查詢結果一筆一筆的取出來,並加入圖中
        while(rs.next()) {
          bar1.addValues(rs.getInt(1));
          bar2.addValues(rs.getInt(3));
    
          // 加 XAxis 的標籤
          labels.addLabels(rs.getString(2));
        }
    
        // ....
      } catch (Exception e) {
        System.out.println("Exception Occurs: " + e);
      } finally {
        try {
          stmt.close();
        } catch(Exception e) {
          System.out.println("Close error.");
        }
      }
    
  3. 為了完整性,我們將完整的 JSP 程式碼列示如下:
    <%@page contentType="text/plain" pageEncoding="UTF-8"
            import="jofc2.*,
                    java.sql.*,
                    jofc2.model.*,
                    jofc2.model.elements.*,
                    jofc2.model.axis.*,
                    jofc2.model.elements.BarChart.*"%>
    
    <%!
        private Connection conn = null;
    
        public void jspInit() {
          try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/eric", UID, PWD);
          }
          catch (Exception e) {
            System.out.println("Fail to connect to database.");
          }
        }
    
        public void jspDestroy() {
          try {
            conn.close();
          } catch (Exception e) {
            System.out.println("Fail to close connection.");
          }
        }
    %>
    
    <%
      // query 字串
      String qSQL = "select qty, name, price from Product";
    
      Chart cht = new Chart("存貨量長條圖");
      XAxis labels = new XAxis();
      YAxis range = new YAxis();
      range.setRange(0, 210, 10);
      cht.setYAxis(range);
      BarChart bar1 = new BarChart(BarChart.Style.NORMAL);
      BarChart bar2 = new BarChart(BarChart.Style.NORMAL);
      bar1.setColour("#669900");
      bar2.setColour("#6666FF");
      bar1.setText("存貨量");
      bar2.setText("價格");
    
      Statement stmt = null;
      try {
        stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(qSQL);
    
        while(rs.next()) {
          bar1.addValues(rs.getInt(1));
          bar2.addValues(rs.getInt(3));
    
          // 加 XAxis 的標籤
          labels.addLabels(rs.getString(2));
        }
    
        cht.addElements(bar1, bar2);
        cht.setXAxis(labels);
    
        out.println(cht.toString());
      } catch (Exception e) {
        System.out.println("Exception Occurs: " + e);
      } finally {
        try {
          stmt.close();
        } catch(Exception e) {
          System.out.println("Close error.");
        }
      }
    %>
    


Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu



JOFC2 - 第三個範例

JOFC2 - 第三個範例

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


我們假設你已經依據之前的文章完成的 OFC2 的安裝工作,也了解之前 OFC2 和 JSP 的合用方式。在本文中,我們希望能夠更進一步的調整條型圖的內容,這次 調整的內容是將兩個以上的 Bar 放到條型圖中;完成後,條型圖如下所示:
在進一步說明範例之前,我們要先說明的是:我們只針對跟之前不同的地方進行 說明,相同的部分就不再贅述!
  1. 由於我們需要在 Chart 物件上加上兩個以上的 Bars;或者更明確的說, 要加上兩個以上的 BarChart。因此,為了能產生兩個 BarChart 物件,我們 宣告了以下敘述:
      BarChart bar1 = new BarChart(BarChart.Style.NORMAL),
               bar2 = new BarChart(BarChart.Style.NORMAL);
    
  2. bar1 和 bar2 都會以預設的顏色(類紫色)來呈現,可是這樣的呈現效果 不好;一般來說,不同的 Bar 會有不同的顏色。設定 Bar 顏色的方法為:
      bar1.setColour("#993300");
      bar2.setColour("#669933");
    
    setColour() 的參數是一個字串,其格式為井字號(#)之後,加上 RGB 的 十六進位數字。讀者可以利用繪圖工具或者 Table Tutor - Color Chart 來選擇 顏色。
  3. 顏色設定完成之後,我們可以利用類似之前的迴圈將亂數值經由 addValues() 將資料加到 BarChart 內。最後,我們就可以利用下列方式將 bar1 和 bar2 加上 Chart 物件:
      cht.addElements(bar1, bar2);
    
  4. 為了完整性,我們將完整的 JSP 程式碼列示如下:
    <%@page contentType="text/plain" pageEncoding="UTF-8"
            import="jofc2.*,
                    jofc2.model.*,
                    jofc2.model.elements.*,
                    jofc2.model.elements.BarChart.*"%>
    <%
      Chart cht = new Chart("亂數資料");
    
      // 產生兩串資料,分別由 bar1 和 bar2 代表
      BarChart bar1 = new BarChart(BarChart.Style.NORMAL),
               bar2 = new BarChart(BarChart.Style.NORMAL);
      bar1.setColour("#993300");
      bar2.setColour("#669933");
      for(int i=0; i<4; i++) {
        bar1.addValues((int) (Math.random() * 10) + 1);
        bar2.addValues((int) (Math.random() * 7) + 1);
      }
      cht.addElements(bar1, bar2);
    
      out.println(cht.toString());
    %>
    



Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu



OFC2 - 第四個範例

OFC2 - 第四個範例

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


我們假設你已經依據之前的文章完成的 OFC2 的安裝工作,也了解之前 OFC2 和 JSP 的合用方式。在本文中,我們希望能夠更進一步的調整條型圖的內容,這次 調整的內容包含修改圖表標題的顏色、大小,新增 X 軸的標籤,設定 Y 軸的 最小值、最大值、間距,設定 Y 軸的標籤(從之前的說明,目前只支援英文), 以及分別設定兩個 Bar 的值代表 2008 和 2009 的銷售量。程式修改後所呈現的 畫面如下:
在進一步說明範例之前,我們要先說明的是:我們只針對跟之前不同的地方進行 說明,相同的部分就不再贅述!
  1. 首先,我們修改圖表標題的字體大小、顏色,以及 alignment。為了設定 標題,我們必須先宣告一個沒有標題的 Chart 物件,然後利用 setTitle() 的 方法將標題文字以及格式(style;包含字體大小、顏色,以及 alignment)設定好。 setTitle() 的參數是一個 jofc2.model.Text 的物件,而產生 style 字串的方式 是藉由 createStyle(字體大小, 顏色, alignment) 來完成,所以我們的程式碼 如下所示:
      // 調整 title 的字體大小、顏色,以及 alignment
      cht.setTitle(new Text("亂數資料", Text.createStyle(20, "#9933FF", Text.TEXT_ALIGN_CENTER)));
    
  2. 我們必須使用 jofc2.model.axis.XAxis 來設定 X 軸的標籤:在產生完 XAxis 物件之後,我們利用其 addLabels() 方法將標籤加進去,最後我們 利用 Chart 物件的 setXAxis() 的方法將 XAxis 設定為 Chart 的 X 軸物件。 程式碼如下所示:
      // 調整 X 軸的標籤
      XAxis labels = new XAxis();
      labels.addLabels("北區", "中區", "南區", "離島");
      cht.setXAxis(labels); 
    
  3. 如果要調整 Y 軸的呈現方式,我們使用 jofc2.model.axis.YAxis 物件。 YAxis 物件提供 setRange(最小值, 最大值, 間距) 方法來設定 Y 軸的數值; 另外,我們也可以使用 Chart 物件的 setYLengend() 的方法來改變 Y 軸的 標籤。setYLengend() 的參數是一個 Text 物件,設定方式跟之前相同。 原始碼如下所示:
      // 調整 Y 軸的標籤(目前只能英文)以及間距
      YAxis range = new YAxis();
      range.setRange(0, 60, 5);
      cht.setYAxis(range);
      cht.setYLegend(new Text("Quantity", Text.createStyle(12, "#736AFF", Text.TEXT_ALIGN_CENTER)));
    
  4. 最後,我們需要為 bar1 和 bar2 分別設定標籤,其設定方式如下:
      // 為 bar1 和 bar2 加上標籤
      bar1.setText("2008");
      bar2.setText("2009");
    
  5. 為了完整性,我們將完整的 JSP 程式碼列示如下:
    <%@page contentType="text/plain" pageEncoding="UTF-8"
            import="jofc2.*,
                    jofc2.model.*,
                    jofc2.model.elements.*,
                    jofc2.model.axis.*,
                    jofc2.model.elements.BarChart.*"%>
    <%
      Chart cht = new Chart();
    
      // 調整 title 的字體大小、顏色,以及 alignment
      cht.setTitle(new Text("亂數資料", Text.createStyle(20, "#9933FF", Text.TEXT_ALIGN_CENTER)));
    
      // 調整 X 軸的標籤
      XAxis labels = new XAxis();
      labels.addLabels("北區", "中區", "南區", "離島");
      cht.setXAxis(labels);  
    
      // 調整 Y 軸的標籤(目前只能英文)以及間距
      YAxis range = new YAxis();
      range.setRange(0, 60, 5);
      cht.setYAxis(range);
      cht.setYLegend(new Text("Quantity", Text.createStyle(12, "#736AFF", Text.TEXT_ALIGN_CENTER)));
      
      // 產生兩串資料,分別由 bar1 和 bar2 代表
      BarChart bar1 = new BarChart(BarChart.Style.NORMAL),
               bar2 = new BarChart(BarChart.Style.NORMAL);
      bar1.setColour("#993300");
      bar2.setColour("#669933");
    
      // 為 bar1 和 bar2 加上標籤
      bar1.setText("2008");
      bar2.setText("2009");
    
      for(int i=0; i<4 data-blogger-escaped-10="" data-blogger-escaped-1="" data-blogger-escaped-60="" data-blogger-escaped-ath.random="" data-blogger-escaped-bar1.addvalues="" data-blogger-escaped-bar1="" data-blogger-escaped-bar2.addvalues="" data-blogger-escaped-bar2="" data-blogger-escaped-cht.addelements="" data-blogger-escaped-cht.tostring="" data-blogger-escaped-gt="" data-blogger-escaped-i="" data-blogger-escaped-int="" data-blogger-escaped-out.println="" data-blogger-escaped-pre="">
    




Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu



JOFC2 - 第二個範例

JOFC2 - 第二個範例

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


我們假設你已經依據之前的文章完成的 OFC2 的安裝工作。在本文中,我們 開始說明如何將 OFC2 和 JSP 作結合。我們在本範例中,將以亂數來產生 四個整數,並將這四個整數值以 BarChart(條型圖)呈現出來。我們在這一系列 的教學文件中,都以條型圖為範例,至於其他的圖表,我們建議分別利用舊版的 Open Flash Chart 教學文件以及 JOFC2 的 JavaDoc 來學習。
  1. 首先我們來看 JSP 的程式碼:在所有 JOFC2 所產生的圖表都是由一個 jofc2.model.Chart 的物件所形成,而在形成 Chart 物件的時候,我們可以順便 為這個圖表產生"標題"。產生 Chart 物件的方式:
    import jofc2.model.Chart;
    
    Chart cht = new Chart("亂數資料");
    
    一旦 Chart 物件 cht 產生之後,我們就可以在這個物件上加上需要的圖表內 常見的物件;例如,條型圖(BarChart)(或者其他圖,如 LineChart、PieChart 等),圖例(legend),以及 X、Y 軸等。由於我們希望能產生條型圖,所以 我們需要產生一個 jofc2.model.elements.BarChart 物件(其實大多數圖表 的物件都是屬於 jofc2.model.elements.Element 的子類別,例如 BarChart、 LineChart、PieChart 等),其產生的方式如下:
    import jofc2.model.elements.*;
    
    BarChart bc = new BarChart(BarChart.Style.NORMAL);
    
    BarChart 的風格有三種,除了程式碼中的 BarChart.Style.NORMAL, 還有 BarChart.Style.GLASS 以及 BarChart.Style.THREED 兩種。我們鼓勵讀者在看完本文的範例之後,可以試試看更改 BarChart 的風格。 有了 BarChart 物件 bc 之後,我們可以開始為 bc 加上其所要表現的數字。 將數字加入 bc 是利用其 addValues() 的方法,其程式碼如下:
      for(int i=0; i<4 data-blogger-escaped-10="" data-blogger-escaped-1="" data-blogger-escaped-ath.random="" data-blogger-escaped-bc.addvalues="" data-blogger-escaped-i="" data-blogger-escaped-int="" data-blogger-escaped-pre="">
    
    完成了 BarChart 的設定之後,我們需要把它加到 cht 內,其方式如下:
      cht.addElements(bc);
    
    最後,我們就可以把 cht 轉換成字串,並將它回傳給客戶端,其方式如下:
      out.println(cht.toString());
    
    這個範例的完整繩式碼如下:
    <%@page contentType="text/plain" pageEncoding="UTF-8"
            import="jofc2.*,
                    jofc2.model.*,
                    jofc2.model.elements.*,
                    jofc2.model.elements.BarChart.*"%>
    <%
      Chart cht = new Chart("亂數資料");
    
      // 產生 BarChart 並將資料新增到 BarChart
      BarChart bc = new BarChart(BarChart.Style.NORMAL);
      for(int i=0; i<4; i++)
        bc.addValues((int) (Math.random() * 10) + 1);
    
      cht.addElements(bc);
      out.println(cht.toString());
    %>
    
    請注意: 跟之前的資料檔一樣,請在儲存這個檔案的時候,務必要把它 儲存成 UTF-8 的編碼方式,如此一來 OFC2 才能正確的顯示中文;另外,也請記得 將 @page 的 pageEncoding 的值定義成 UTF-8。
  2. 請將上述程式檔置放於 tomcat\webapps\test 內,並先執行它 以確保該程式能正確的回傳符合 json 格式的資料,而且也可以確定該程式可以 正確無誤的執行。假設我們將該程式碼儲存為 ofc2.jsp,執行後的畫面如下:
  3. 如果程式可以正確無誤的執行,我們就可以為它開發一個相對應的 HTML 檔。 這個檔案的內容跟之前的範例非常類似,差別只在我們為 data-file 設定的值 為程式的名稱,也就是 ofc2.jsp。
    <html>
    <head>
    <script type="text/javascript" src="js/swfobject.js"></script>
    <script type="text/javascript">
    swfobject.embedSWF("open-flash-chart.swf", "my_chart", "500", "250", "9.0.0",
                       "expressInstall.swf", {"data-file":"ofc2.jsp"});
    </script>
    </head>
    <body>
     
    <p>第二個範例:結合 OFC2 和 JSP</p>
    <div id="my_chart"></div>
    </body>
    </html>
    
  4. 最後,我們可以載入 ofc2.html,其畫面如下:



由於條型圖的內容是由亂數產生器所產生的,因此每一次"重新載入"之後, 條型圖的內容應該會改變;這個情形在 Firefox 是完全沒問題的,但是在 IE 8 時,卻往往看到 IE 8 只會繼續使用 cache 的內容,而不會每次都重新 執行 ofc2.jsp 並使用其最新的值。日前,有位網友(Jackey)提供了一個 解決方式,那就是利用亂數字串給 JSP 檔,如此一來,IE 認定無法重複使用 cache 的內容而必須重新執行。以本範例而言,只需將 {"data-file":"ofc2.jsp"} 改成 {"data-file":"ofc2.jsp?random=(new Date()).valueOf()"} 但是使用時,請切記,你的 JSP 檔(在本例中就是 ofc2.jsp)內不會讀取 名為 random 的參數;如果有,請記得將名稱改成一個不用的參數名稱即可。

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu



OFC2 - 第一個範例

OFC2 - 第一個範例

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


我們假設你已經依據之前的文章完成的 OFC2 的安裝工作,也已經把 ofc0.html 以及 data.json 放在適當的目錄下。 在本文中,我們開始說明第一個範例的內容:
  1. 由於在資訊系統中,資料的內容常常會因為資料庫的內容改變而不同,因此 系統開發時撰寫一份固定的資料檔(也就是範例中的 data.json)是沒什麼道理的。 一般來說,data.json 的內容會由程式產生,在我們的教學文件中,這些資料是由 JSPs/servlets 來產生。除非讀者有意願開發一套類似 JOFC2 的套件,大多數開發 人員是不需要知道 data.json 的內容的。
  2. 就像之前說明的,OFC2 是利用 open-flash-chart.swf 來讀取資料並將結果 呈現在網頁中的,所以需要呈現 OFC2 圖表的網頁必須要有一個機制將該 swf 檔 下載到瀏覽器;這個部分還蠻簡單的,因為 OFC2 的作者利用了一個 Javascript 檔(就是下列原始碼中的 swfobject.js)讓這個過程變的非常簡單。載入並使用 swfobject.js 的方式如下原始碼的綠色部分:在這段程式碼中,總共有兩段 <script>,第一段幾乎不必改變,可能需要改變以及說明的在第二段; 這兩段 <script> 習慣上會置放於 <head> 標籤之間。在第二段 <script> 中,我們呼叫了 swfobject.embedSWF() 方法(定義於 swfobject.js 內),該方法共有五個參數,第一個參數用來載入 open-flash-chart.swf (這個部分大多不會變,除非你將該檔置放於其他位置),第二個參數在指出該 圖表出現的地方;以我們這個範例來說,圖表會出現在一個 id 為 my_chart 的 標籤內,也就是如原始碼紅色的部分所示。
    <html>
    <head>
    
    <script type="text/javascript" src="js/swfobject.js"></script>
    <script type="text/javascript">
    swfobject.embedSWF("open-flash-chart.swf", "my_chart", "500", "250", "9.0.0");
    </script>
    
    </head>
    <body>
     
    <p>第一個範例:使用 SWFObject.js</p>
    
    <div id="my_chart"></div>
    
    </body>
    </html>
    
    第三和第四個參數分別代表該圖表的 X 軸和 Y 軸的長度,以本範例來說,該圖表的 大小為 500x250 的方形;最後一個參數代表 Flash 的版本數,從這裡看得出來, open-flash-chart.swf 是以 Flash 9 版所寫出來的。
  3. 練習題: 請將 my_chart 改成 first_chart,另將大小改成 800x400,並試著將圖表置放於網頁的中央。

在上述範例中,我們必須在瀏覽器的 URL 欄位中多輸入 ?ofc=data.json, 雖然這個方法比較有彈性(讓使用者傳入不同的資料檔,例如之前的 wdata.json), 但是如果資料檔是固定的,或者資料來源是一個固定的程式執行後的結果,那麼 有沒有直接將檔案或者程式名稱寫在 HTML 檔案內的方式?答案是有的,請看下列程式碼:
<html>
<head>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("open-flash-chart.swf", "my_chart", "500", "250", "9.0.0",
                   "expressInstall.swf", {"data-file":"data.json"}
);
</script>
</head>
<body>
 
<p>第一個範例:使用固定來源名稱</p>
<div id="my_chart"></div>
</body>
</html>
這段原始碼跟之前的範例幾乎相同,不同的地方在於綠色部分:利用 swfobject.embedSWF() 來呼叫 expressInstall.swf,並利用它來讀取資料的來源,該資料來源的名稱必須 是 data-file,而其值可以依據資料來源的不同而不同,利用想使用 wdata.json 的話,請將 data.json 改成 wdata.json;或者如果想呼叫遠端程式 ofc2.jsp 的話,請將 data.json 改成 ofc2.jsp 即可;讀者可以點一下 測試頁 並觀察 URL 欄位的值。
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu



OFC2 的準備工作

OFC2 的準備工作

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼


OFC2 的安裝工作包含兩個部分,一個是 OFC2 本身,另一個是用來產生 JSON 的 Java 套件;當然第二個部分不是必要的,因為 OFC2 本身已經包含了像是 php 之類 的套件,如果你的開發環境不是 Java,你可以到 OFC2 的首頁確認你是否還需要 下載安裝其他套件。另外,由於我們之後的範例是以 JSP 為主,因此我們假設 讀者已經熟析 JSP,而且了解我們預設的 tomcat 設定如 JSP 入門 所示;也就是說,我們的測試目錄是 tomcat/webapps/test
  1. 安裝 OFC2:這個部分有點麻煩,第一個原因是該網頁中含有多個版本,至於哪個版本比較好也沒有清楚的說明;第二個原因是OFC2 開發的時間是 2009 年,似乎舊了一些。 最近找到了另一個新版本,目前從測試的結果來看,似乎網頁上的範例都 OK,至於 新版本有沒有提供新的功能,我需要找時間再試試看。以下針對我測試過的兩個版本 進行說明:
    1. Version 2 Lug Wyrm Charmer (28th, July 2009):
      1. 請到 OFC2 下載網頁 下載 Version 2 Lug Wyrm Charmer (28th, July 2009),檔案名稱為 open-flash-chart-2-Lug-Wyrm-Charmer.zip。
      2. 請將該壓縮檔進行解壓縮。
      3. 解壓縮之後,它包含有 12 個目錄(如 js, php-ofc-library, php5-ofc-library 等)以及兩個檔案(分別是 README.txt 和 open-flash-chart.swf);請將 open-flash-chart.swf 以及 js 目錄分別複製於 tomcat/webapps/test
    2. OFC2 Community Release:這個版本是在 OFC2 討論區 中看到的。從討論區的字裡行間看出,似乎 OFC2 原作者已經不再進行更新了,因此 OFC2 社群中有人跳出來進行持續更新。
      1. 請到 OFC2 Community Release 下載網頁 下載最新版本,我們正在測試 open-flash-chart-2-community-0.25.zip
      2. 請將該壓縮檔進行解壓縮。
      3. 解壓縮之後,請將 open-flash-chart.swf 以及 js 目錄分別複製於 tomcat/webapps/test
    3. 從第一個範例中,我們可以知道目前介紹的 open-flash-chart.swf 是無法讓 Y 軸 上的標籤出現中文的(例如,將 data.json 中的 "Open Flash Chart" 改成 "次數", open-flash-chart.swf 是不會呈現任何結果的)。如果讀者一定需要在 Y 軸出現中文, 甚至希望在 X 軸上的中文可以轉動某個角度,那麼可以 下載 這個版本;該版本的修改範圍如 說明請注意: 下載檔是一個 zip 檔,解壓縮之後的檔案為 open_flash_chart.swf(是底線),而該檔案的大小大約 7 個 MB,與原先不到 300 多 KB 的檔案比起來,明顯大很多,使用時要注意頻寬的問題。

  2. 安裝 OFC2 的 Java 套件:
    1. 請到 JOFC2 - Java API for Open Flash Chart 2 下載 jofc2-1.0-0.zip。雖然 JOFC2 的首頁介紹了 (開發中的)最新版 JOFC2,但是本文僅介紹原始版的。
    2. 解壓縮該 ZIP 檔之後,請將 jofc2-1.0-0.jar 以及 xstream-1.3.1.jar(在 解壓縮後的 lib 目錄內)複製到 tomcat\common\lib 或者 tomcat\shared\lib 內。
  3. 由於 JOFC2 的測試需要寫程式,所以這部份的測試留到開始介紹 JSP 程式時才 說明,我們先測試 OFC2 的安裝是否正確。請將下列資料檔案,命名為 data.json 並將其放置於 tomcat/webapps/test請注意: 當你編輯 data.json 的時候,由於 OFC2 只能正確的解讀 UTF-8 的資料,所以在資料中包含 有中文的資料時,請以 UTF-8 的編碼方式儲存;以"記事本"為例,在儲存檔案時, 請在"編碼"的地方,選擇 UTF-8。
    {
      "title":{
        "text":  "測試資料",
        "style": "{font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;}"
      },
     
      "y_legend":{
        "text": "Open Flash Chart",
        "style": "{color: #736AFF; font-size: 12px;}"
      },
     
      "elements":[
        {
          "type":      "bar",
          "alpha":     0.5,
          "colour":    "#9933CC",
          "text":      "Page views",
          "font-size": 10,
          "values" :   [9,6,7,9,5,7,6,9,7]
        },
        {
          "type":      "bar",
          "alpha":     0.5,
          "colour":    "#CC9933",
          "text":      "Page views 2",
          "font-size": 10,
          "values" :   [6,7,9,5,7,6,9,7,3]
        }
      ],
     
      "x_axis":{
        "stroke":1,
        "tick_height":10,
        "colour":"#d000d0",
        "grid_colour":"#00ff00",
        "labels": {
            "labels": ["一月","二月","March","April","May","June","July","August","Spetember"]
        }
       },
     
      "y_axis":{
        "stroke":      4,
        "tick_length": 3,
        "colour":      "#d000d0",
        "grid_colour": "#00ff00",
        "offset":      0,
        "max":         20
      }
    }
    
    請利用編輯器將下列 HTML 檔存成 ofc0.html 檔:
    <html>
    <head>
    <script type="text/javascript" src="js/swfobject.js"></script>
    <script type="text/javascript">
    swfobject.embedSWF("open-flash-chart.swf", "my_chart", "500", "250", "9.0.0");
    </script>
    </head>
    <body>
     
    <p>第一個範例:使用 SWFObject.js</p>
     
    <div id="my_chart"></div>
     
    </body>
    </html>
    
    最後,請在瀏覽器的 URL 欄輸入 http://localhost:8080/test/ofc0.html?ofc=data.json,你應該會看到類似之前的圖表;你也可以點一下 測試頁 來看一下結果。
  4. 在測試 OFC2 的過程中,我試圖將圖表中 Y 軸的標籤進行更改;例如我希望 將範例圖表中的 "Open Flash Chart" 換成 "次數",但是"次數"無法顯示出來,似乎 OFC2 無法將中文顯示在 Y 軸的標籤。練習題: 請試著將 data.json 中 y_legend 後的 Open Flash Chart 換成 次數,並將 data.json 轉存成 wdata.json,然後輸入 http://localhost:8080/test/ofc0.html?ofc=wdata.json 試試看!




Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu



Open Flash Chart 2 簡介

Open Flash Chart 2 簡介

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼

開發以瀏覽器為介面的資訊系統是這幾年來系統開發的常態,而且常見的開發方式 都能很輕易的顯示一些 HTML 的文字內容(如條列示、表格式),但是對於顯示 圖表,卻往往發生找不到適當的中文教學文件的困擾,這篇文章就是希望能部分 解決這個問題,也順便可以當作教學文件用。
由於我們系上的程式語言以 Java 為主,因此以 Java 和 Chart 的關鍵字搜尋之後, 我們發現了 JFreeChart 以及 jCharts 這兩套免費的 Java 工具, 可以讓程式開發人員簡單的產生各式各樣的圖表。這兩套工具又以 JFreeChart 可以 找到的文件比較多,我也曾利用找到的教學資料:JFreeChart(JSP)學生學習評量曲線圖範例"使用JFreeChart製作美觀易懂的圖表 開發了一些能夠顯示工具提示(tooltip) 的條型圖。在測試 JFreeChart 的過程中,我發現雖然它可以提供一般 Java Applications 使用,也能在 servlets/JSPs 的開發環境下使用,但是總覺得它的設計以及使用上 實在太多於複雜。有幾次找尋資料的過程中,發現了 Open Flash Chart 2 的套件,於是 決定試試看,並比較它們的優缺點。目前的感覺,我個人覺得 Open Flash Chart 2 似乎比較簡單,只是它僅限於以瀏覽器為介面的資訊系統開發中使用,所以決定先 寫篇 Open Flash Chart 2 的教學文件(也就是本文);或許哪一天心血來潮也會把 之前的 JFreeChart 也寫一寫。
Open Flash Chart 2 是一個利用 Flash 物件來顯示圖表的一個工具,而且更妙的是這個工具不但是免費的, 而且還是 Open Source(開放原始碼)的。在開始介紹 OFC2 之前,請點選這個 範例,如果這樣的圖表能引起你的興趣,請繼續閱讀下去。
基本上,每一個 OFC2 的圖表都是由一個內嵌在網頁內的 Flash 物件所形成,而該 Flash 物件就是由 OFC2 所開發的 open-flash-chart.swf;當瀏覽器載入 一個含有 OFC2 Flash 物件的網頁,該 Flash 物件會由伺服器端下載;當下載完成後, 該 Flash 物件會開始讀取呈現圖表所需的資料檔案;OFC2 要求資料檔案必須符合 JSON 的格式,而該資料檔可以是一個固定的資料檔,或者是由一個程式(如 servlets/ JSPs)回傳給該 Flash 物件;資料讀取完成後,Flash 物件就把圖表顯示出來。
  1. 準備工作:這部分主要在於 OFC2 的安裝。 由於 OFC2 物件可以讀取由程式所形成的 JSON 資料檔,因此我們需要安裝給 servlets/JSPs 的套件,以便於可以輕易、快速的產生 JSON 檔。
  2. 第一個範例:我們在這個範例中利用固定的 資料檔案來呈現圖表。
  3. 第二個範例:我們在這個範例中利用 JSP 程式來產生資料,並由 HTML 檔呈現圖表。
  4. 第三個範例:這個範例主要在於呈現兩個 Bars 在條型圖中,並分別為它們設定各自的顏色。
  5. 第四個範例:這個範例主要在於為條型圖 更進一步的調整,調整的部分包含設定 X 軸的標籤等。
  6. 第五個範例:這個範例主要在於將條型圖 與資料庫結合;範例中使用的是 MySQL。
  7. 第六、七個範例:這兩個範例主要在於說明 如何使用 JSP 分別產生 LineChart 以及圓餅圖。
  8. 第八個範例:這個範例主要在於說明 如何在一個圖表中,建立兩種以上的不同圖表;範例中使用的是之前說過的 BarChart 以及 LineChart。

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

處理 SOAP Header

處理 SOAP Header

This document is provided as is. You are welcomed to use it for non-commercial purpose.

Written by: 國立中興大學資管系呂瑞麟

請勿轉貼


目錄

  1. 處理 SOAP Header
    1. 首先建立一個沒有 SOAP Header 的 web service 以及 client
  2. SOAP Header 的處理流程
  3. 開發 .NET client 來處理 SOAP Header
    1. 開發一個回傳 SOAP Header 的 service 以及使用 SOAP Header 的 .NET client
    2. 開發 .NET client 來處理 AXIS service 傳來的 SOAP Header



處理 SOAP Header

我們在之前的說明中,著重在如何開發 Axis 的服務以及客戶端程式。 可是在實務上,我們需要更多的功能:例如,SOAP 封包內如果包含機密 內容而不希望被惡意人士擷取、或者我們希望能夠控制只允許某些特定人士 才能使用服務等等。為了能夠達成以上目標,我們必須能夠善用 SOAP Header。 參考資料: