數學系資訊組
 物件導向程式設計
    課程講義




教材編撰:數學系講師冷輝世
九十八學年度第二版
「物件導向程式設計」課程講義
            九十八學年度二版



目錄




第1頁
「物件導向程式設計」課程講義
                                              九十八學年度二版

軟體需求

1.   Java SE6 JDK, Java Doc
     http://java.sun.com
2.   JCreator
     http://www.jcreator.com


Java SE6 JDK 與 Java Doc 請選擇最左邊的




JCreator 有三種版本, Pro 版有自動補完功能 (Auto Paded) ,但是屬 Shareware


, LE 版與 Classics 版則是免費使用。




                               第2頁
「物件導向程式設計」課程講義
                                                          九十八學年度二版

設定系統環境變數

1.   新增

     JAVA_HOME= C:Program FilesJavajdk1.6.0_18

2.   修改

     PATH=%PATH%; C:Program FilesJavajdk1.6.0_18bin


我的電腦(按滑鼠右鍵)→進階→環境變數→系統變數




一定要先設定完系統環境變數以後再開啟 JCreator ,否則 JCreator 會抓不到

Java 的相關設定,造成無法編譯與執行的狀況。




                                   第3頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版

Java 教學文件

1.   Java Tutorial
     http://java.sun.com/docs/books/tutorial/
2.   The Swing Tutorial
     http://java.sun.com/docs/books/tutorial/uiswing/
3.   Example Depot
     http://www.exampledepot.com/
4.   Java Tutorial
     http://www.java2s.com/Tutorial/Java/CatalogJava.htm


本課程預計學生已修習過程式設計,已有基本的程式設計概念,例如程式基本


架構、變數、流程控制等。



Java Doc 一定要裝!雖然檔案大了一點,可是可以節省不少查書的時間。建議安


裝在 C:Program FilesJavajdk1.6.0_12Docs 目錄下。




                                      第4頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版

Applet, Application 與 Swing Application

     Applet 、 Application 與 Swing Application 的差異:


1.   Applet 僅能在網頁中執行,需要 HTML 加以呼叫,所以有兩個檔案。


2.   Application 以「命令提示字元」模式執行,只有簡單的文字輸出入。


3.   Swing Application 與視窗程式相同(事件驅動)。


[HTML]HelloApplet.htm




[Applet]HelloApplet.java




[Application]Hello.java




                                 第5頁
「物件導向程式設計」課程講義
                                                九十八學年度二版

[Swing Applicaton]HelloSwing.java




                                    第6頁
「物件導向程式設計」課程講義
                                                                       九十八學年度二版

Java 程式的編譯與執行

     編譯與執行過程除了使用 JCreator 之外,尚需熟練「命令提示字元」模式。




              圖片來源:http://csjava.occ.cccd.edu/java-setup/D.htm



「命令提示字元」模式




「命令提示字元」模式下的操作

1.   javac.exe
     http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html
2.   java.exe
     http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html


                                       第7頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

基本程式架構說明

 說明類件(Class)、物件(Object)、建構元(Constructor)等觀念。




       圖片來源:http://www.cs.princeton.edu/introcs/32class/




                            第8頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

基本資料型態與運算子

 基本資料型態




    資料來源:http://www.artima.com/insidejvm/ed2/jvmP.html



 基本型態運算子與 C/C++ 幾乎都相同(除了字串以外)。




                          第9頁
「物件導向程式設計」課程講義
                                                九十八學年度二版




資料來源:http://www.falkhausen.de/de/table/operator.gif




                      第 10 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Application 模式下的輸出與輸入模式

     Application 模式下的輸出使用 System.out.println() 。


[Application]Hello.java




     Application 模式下的輸入模式有三種:


1.   引數列輸入

2.   鍵盤輸入,使用 BufferedReader 類別物件

3.   鍵盤輸入,使用 Scanner 類別物件


[Application]KeyinDemo1.java




[Application]KeyinDemo2.java




                               第 11 頁
「物件導向程式設計」課程講義
                                              九十八學年度二版




[Application]KeyinDemo3.java




                               第 12 頁
「物件導向程式設計」課程講義
                                                    九十八學年度二版

Swing 模式下的輸出與輸入

    JOptionPane.showMessageDialog() 對話盒輸出,JTextField 元件輸入。


[Swing Application]DialogDemo.java




[Swing Application]SwingIODemo.java




                                     第 13 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 14 頁
「物件導向程式設計」課程講義
                                                 九十八學年度二版

陣列

    Java 陣列的宣告與 C/C++ 不太一樣,注意“[”與“]”的位置;另外,以物件的


方式宣告,包括 Declaration 與 Creation 兩階段,可以分開也可以合併。


[Application]ArrayDemo.java




[Application]ObjArrayDemo1.java




[Application]ObjArrayDemo2.java




                                  第 15 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 16 頁
「物件導向程式設計」課程講義
                                     九十八學年度二版

數字類別與字串類別

     使用數字類別的理由:

1.   可以作為物件的參數。

2.   可以使用數字類別中內建常數。

3.   可以與字串類別做轉換或直接轉換進位制。



分別以 Integer 類別為例,說明數字類別與字串類別。



以 Math 類別為例,說明靜態類別。




                      第 17 頁
「物件導向程式設計」課程講義
                                                             九十八學年度二版

字串類別的宣告、字串與數值的轉換

    字串分為 String, StringBuffer, StringBuilder 三種類別。其中 String 類別為

immutable , StringBuffer 為 mutable, thread-safe , StringBuilder 則為 mutable 用


來取代在 single-thread 情況下的 StringBuffer 。注意這三種類別字串處理的函數


名稱不同。



說明 String, StringBuffered 類別的差異,並舉例。




                                  第 18 頁
「物件導向程式設計」課程講義
                                               九十八學年度二版

如何使用亂數

     亂數有兩種產生的方式:

1.   呼叫 Math.random() 靜態類別函數

2.   宣告 java.util.Random 類別物件


[Application]RandomDemo1.java




[Application]RandomDemo2.java




                                第 19 頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版

MVC 架構

一般的 MVC 架構




     圖片來源:http://java.sun.com/developer/technicalArticles/javase/mvc/


Java MVC




                                 第 20 頁
「物件導向程式設計」課程講義
                                          九十八學年度二版


圖片來源:http://pwosboy.javaeye.com/blog/118768




                  第 21 頁
「物件導向程式設計」課程講義
                                                                  九十八學年度二版

流程控制與事件驅動

    與 C/C++ 相同,有 if, if …else, for , while, do…while, switch…case 等。



    Swing 模式下的事件驅動是所謂的 Event-Driven ,必須熟悉「元件-事件-


介面」的處理程序。 JButton 元件為例,按下按鍵產生 ActionEvent ,必須利用
         以

ActionListener 介面來處理,必須實作 ActionListener 介面中的所有 method (


ActionListener 介面中只有一個 method 即 actionPerformed() )。


Swing Events
http://java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html




                                     第 22 頁
「物件導向程式設計」課程講義
                                                九十八學年度二版

Swing 模式下 JButton 元件的介紹


[Swing Application]Swing3.java




                                 第 23 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 24 頁
「物件導向程式設計」課程講義
                                                         九十八學年度二版

有圖片的 JButton 在 Java Web Start 的宣告方式

原本的 JButton 宣告


JButton b1=new JButton("剪刀",new ImageIcon("./scissor.gif"));



Java Web Start 下的宣告方式


ClassLoader cl=this.getClass().getClassLoader();
Icon scissors1=new ImageIcon(cl.getResource("images/scissors1.gif"));
JButton b1=new JButton("剪刀",scissors1);




                                第 25 頁
「物件導向程式設計」課程講義
                                              九十八學年度二版

Abstract Class 的介紹

    Java 定義有 Abstract Class ,其目的在於利用此 Abstract Class 衍生子類別,


所以不能利用 Abstract Class 建立物件,只能透過其衍生子類別建立物件。

Abstract Class 與一般 Class 宣告類似,有資料成員、成員函數,但多了定義


abstract method , abstract method 是空的,沒有定義函數的內容,而且只能宣告


為 public 或 protected 。


[Application]ExAbstract.java




                               第 26 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 27 頁
「物件導向程式設計」課程講義
                                               九十八學年度二版

Interface 的介紹

     Interface 是 Java 提供的另一項重要功能,與 Abstract Class 非常類似,但有


兩點不同:

1.   所有的資料都要初始化。

2.   所有的 method 都必須宣告為 abstract ,也就是說不能有一般的 method 。


[Application]ExInterface.java




                                第 28 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

事件處理的多種寫法

     每種 EventListener 都是一種 Interface ,裡面只有定義這個 EventListener 所


提供的方法,所以當要處理事件(Event)時,必須實作出 Interface 所定義的方法,


寫法有三種:。

1.   利用 implements 關鍵字將所有抽象方法實作出來。

2.   利用 Adapter 類別。

3.   利用 Inner Class 的匿名類別方法(可以解決多重繼承的問題)。


[Swing Application]ExEvent1.java




                                   第 29 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 30 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

[Swing Application]ExEvent2.java




[Swing Application]ExEvent3.java




                                   第 31 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 32 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

集中事件處理

    另外,當有許多不同事件要處理時,可以考慮集中事件處理。

[Swing Application]ExEvent4.java




                                   第 33 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Swing 模式下 JLabel 元件介紹

    JLabel 用來顯示一段文字或圖形或文字加上圖形。以下舉例說明不同形式的

JLabel 。


[Swing Application]JLabelExample.java




                                    第 34 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 35 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

利用 JLabel 顯示文字作為提示文字


[Swing Application]ExJLabel.java




                                   第 36 頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版

Swing 模式下 JTextField 和 JPasswordField 元件的介紹

    JTextField 輸入單行文字, JPasswordField 輸入具有遮罩的單行文字。


[Swing Application]FormExample.java




                                      第 37 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 38 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Swing 模式下的 JCheckBox 和 JRadioButton 元件的介紹

    JCheckBox 建立核取方塊, JRadioButton 建立收音機按鈕,若要滿足單選


則必須配合 ButtonGroup 使用。


[Swing Application]ExJRadioButton.java




                                    第 39 頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版




[Swing Application]ExJCheckBox.java




                                      第 40 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 41 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

檔案處理

     Java 檔案的處理架構如下,針對文字檔的處理有兩種方式:


1.   利用 FileReader 與 FileWriter 讀取與寫入文字檔

2.   利用 BufferedReader 與 BufferedWriter 讀取與寫入文字檔




[Swing Application]SourceReader.java




                                       第 42 頁
「物件導向程式設計」課程講義
                                                九十八學年度二版




Swing 模式下 JTextArea 和 JFileChooser 元件的介紹

    配 合 Java 檔 案 處 理 , 利用 FileChooser 開 啟檔 案 並 將讀 取 的 內容 放 到

JTextArea 元件中,可供修改後再儲存。


※作業:完成儲存的功能。


[Swing Application]FileRW.java




                                 第 43 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 44 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 45 頁
「物件導向程式設計」課程講義
                                                 九十八學年度二版

整合範例-猜數字遊戲

    利用猜數字遊戲將前面介紹的內容整合,觀察下列原始碼的 MVC 架構。


作業:加入詢問是否再玩一次的功能。




[Swing Application]GuessAB.java




                                  第 46 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 47 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 48 頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版

Java 與 MySQL 的連結

     Java 與 MySQL 連結的步驟如下:


1.   下載 mysql-java-connector-5.1.12.zip ,解壓縮將 mysql-java-

     connector-5.1.12.jar 放至 JRE 下的 libext 目錄下。

     http://dev.mysql.com/downloads/connector/j/

2.   安裝 AppServ 包括 MySQL 與 phpMyAdmin 。

     http://www.appservnetwork.com

3.   修改 C:AppServwwwphpMyAdminconfig.inc.php


     第 31 行為


 $cfg['PmaAbsoluteUri'] = 'http://127.0.0.1/phpMyAdmin/';



4.   資料庫(Database)、資料表(Table)、欄位(Field)、記錄(Record)之間的關係。




                                      第 49 頁
「物件導向程式設計」課程講義
                                         九十八學年度二版

MySQL 資料庫的建立

   使用 phpMyAdmin 建立 math 資料庫,並建立 student 資料表,其中包括

id, name, score 三個欄位。




                        資料庫 math




                         第 50 頁
「物件導向程式設計」課程講義
                                 九十八學年度二版

使用 phpMyAdmin 設定資料庫的權限的問題

  建立一個帳號 www ,密碼為 123 的使用者帳戶,對 math 資料庫擁有

SELECT 權限。




                  第 51 頁
「物件導向程式設計」課程講義
                                                                  九十八學年度二版

SQL(Structured Query Language)介紹

     SQL 命令分為 DDL 與 DML 兩類:


1.   DDL(Data Definition Language) 包 括 CREATE TABLE, CREATE VIEW,


     DROP TABLE, DROP VIEW, GRANT, REVOKE 。


2.   DML DML(Data Manipulation Language) 包 括 SELECT, INSERT, UPDATE,


     DELETE 。

3.   SQL Quick Reference From W3Schools
     http://www.w3schools.com/sql/sql_quickref.asp?output=print




                                     第 52 頁
「物件導向程式設計」課程講義
                                           九十八學年度二版

JDBC 範例

    建立一個基本的 JDBC 範例,目的只是確定之前的安裝連結成功。


[Application]JDBCEx1.java




                            第 53 頁
「物件導向程式設計」課程講義
                                                                     九十八學年度二版

Package 與 Jar

     Package 是指將 class 封裝,則其它程式可使用 import 引入。 Jar 則是將


class 檔壓縮。 Package 時要注意路徑的設定。 Jar 的命令操作可參考下列文件:

1.   Java Archive (JAR) Files
     http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html
2.   Lesson: Packaging Programs in JAR Files
     http://java.sun.com/docs/books/tutorial/deployment/jar/




                                       第 54 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 55 頁
「物件導向程式設計」課程講義
                                                        九十八學年度二版

Swing 模式中的 Model

     Swing 元件中的 Model 可分為三類


1.   儲存元件內將被用來操作的資料,常用來顯示不同的資料顯示方式。例如:

     ListModel, ComboBoxModel, TableModel, Document 。


2.   儲存元件操作模式的資料。例如: ListSelectionModel, TableColumnModel 。

3.   儲存元件本身性質的資料。例如: BoundedRangeModel 。




                                 第 56 頁
「物件導向程式設計」課程講義
                                                    九十八學年度二版

Swing 模式中的 JList 元件介紹

    JList 元件常用建立選取清單。注意 JList 與 JComboBox 不同 JList 是清單,


JComboBox 是下拉式選單。 AbstractListModel 要實作 getElementAt(), getSize()


, DefaultListModel 則是所有方法都有預設值。ListCellRenderer 主要用於建立有

Icon 的 JList ,通常是建立某類別繼承 JLabel 並實作 ListCellRenderer 介面。


[Swing Application]JListEx1.java




                                   第 57 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 58 頁
「物件導向程式設計」課程講義
                                                        九十八學年度二版

Swing 模式下的 JComboBox 元件

    JComboBox 用來建立下拉式選單。 DefaultComboBoxModel 所有方法都有


預 設 值 。 由 於 ComBoxModel 是 繼 承 自 ListModel , 所 以 若 要 實 作

ComboBoxModel ,除了要實作 ComboBoxModel 的兩個方法 getSelectedItem(),


setSelectedItem() 外,還要實做 ListModel 所定義的四個方 法 getElementAt(),


getSize(), addListDataListener(), removeListDataListener() ,共六個方法。所以如果


繼承 AbstractListModel 再實作 ComboBoxModel 則只要實作四個方法。


[Swing Application]JComboEx1.java




                                    第 59 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 60 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

Google Chart Tools

     Google Chart 是一組 Google 提供的 API ,我們可以很容易的利用它產生一


般的統計圖表。


     參考文件:

1.   Google Chart Tools
     http://code.google.com/apis/charttools/




                                       第 61 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

Swing 模式下的 JTabbedPane 元件

    TabbedPane 類似放置文件的檔案夾,每一份文件都有標籤不同的標籤可顯


示不同的頁面。


[Swing Application]JTabbedPaneEx1.java




                                   第 62 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 63 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Swing 模式下 JTable 元件的介紹

    JTable 用來建立表格文字,建立方式可以使用 Array 或是 Vector ,使用


Vector 比較有彈性。區別 AbstractTableModel 與 DefaultTableModel 的不同。


[Swing Application]JTableEx1.java




                                    第 64 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 65 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

[Swing Application]JTableEx2.java




                                    第 66 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 67 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

[Swing Application]JTableEx3.java




                                    第 68 頁
「物件導向程式設計」課程講義
                                                                九十八學年度二版

JTable 範例

    以下是有關 JTable 的精彩範例:

1. JTable Example 1
http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html
2. JTable Example 2
http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples2.html




                                    第 69 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 70 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 71 頁
「物件導向程式設計」課程講義
                                                           九十八學年度二版

Java Web Start 的使用

     執行以下九個步驟:

1.   設定 Web Server ,開啟 C:AppServApache2.2confmime.types,加入:


 # MIME type                     Extensions
 application/x-java-jnlp-file    jnlp



     Apach Restart 。


2.   編譯 Test1.java 檔,產生 Test.class 檔。

     Test1.java→(Compile)→Test1.class(or Test1$.class)


[Swing Application] Test1.java




3.   建立 manifest.txt (第一行的 Test1 前面空一格,第二行空行一定要有)


manifest.txt


                                        第 72 頁
「物件導向程式設計」課程講義
                                                                九十八學年度二版



 Main-Class: Test1




4.   建立 Test.jar (開啟 cmd 視窗,建立 jar 檔)

     jar cvfm Test1.jar manifest.txt *.class

5.   建立簽証檔 myKeystore

     keytool -genkey -keystore myKeystore -alias myself

6.   對 Test.jar 檔加上簽証

     jarsigner -keystore myKeystore Test1.jar myself

7.   建立 Test1.jnlp


Test1.jnlp




8.   建立 Test1.htm 連結 Test1.jnlp


Test1.htm

                                         第 73 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版




9.   利用瀏覽器開啟 URL , http://127.0.0.1/jws/Test1.htm 。




                               第 74 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

JDBC 範例

     JDBC 範例包括建立資料庫與 JWSTest.java 兩部份。請先將 mysql-connector-

java-5.1.12-bin.jar 複製至 C:AppServwwwjws 目錄下。



1.   建立 ncue 資料庫,內含 math 資料表,內含 id, name, score 三欄位,並建立


     有 select 上述資料庫權限的帳號與密碼 www, 123 。




2.   確定 JWSTest.java 程式編譯無誤。




                               第 75 頁
「物件導向程式設計」課程講義
                                                 九十八學年度二版

[Swing Application]JWSTest.java




                                  第 76 頁
「物件導向程式設計」課程講義
                                                                   九十八學年度二版




3.   建立 JWSTest.jar

     jar cvfm JWSTest.jar manifest.txt JWSTest*.class

4.   對 JWSTest.jar 檔加上簽証(如果已有簽証,這裡就不必再建立簽証了!)

     jarsigner -keystore myKeystore JWSTest.jar myself

5.   對 mysql-connector-java-5.1.6-bin.jar 作 jarsinger 簽証。

     jarsigner -keystore myKeystore mysql-connector-java-5.1.6-bin.jar myself

6.   建立 JWSTest.jnlp

                                      第 77 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 78 頁
「物件導向程式設計」課程講義
                                                       九十八學年度二版

JWSTest.jnlp




7.   建立 JWSTest.htm


JWSTest.htm




8.   利用瀏覽器開啟 URL , http://127.0.0.1/jws/JWTest.htm 。



     注意!雖然 jar 檔在檔案總管中直接按兩下即可開啟,但是這只代表在本地


端的執行,與 Java Web Start 遠端佈署的意義是不同的!所以一定要以 URL 的


方式開啟才算成功!



                        ~基礎課程結束~




                               第 79 頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版

自我評量測驗

     針對以下問題,請每位同學自行查詢筆記作答:

1.   Abstract Class 與一般的 Class 有什麼不同?


2.   說明 Interface 的作用?

3.   Java 程式的基本架構包括那些?


4.   環境變數要設定那些?

5.   JCreator 開啟 Java File 與 Java Project 有何不同, Workspace 又是什麼?


6.   Java Swing 程式的基本架構包括那些?


7.   Java 如何與 MySQL 資料庫連結?


8.   Java 程式中執行 SQL 指令的函數有什麼要注意的?


9.   各舉一例說明 SQL 語法的 SELECT 、 INSERT 、 DELETE 、 UPDATE 。

10. 如何在 Java 中取亂數?


11. try…catch 是用在什麼場合?


12. throw 與 try…catch 有什麼不同?


13. 如何實作一個 Interface?


14. 為什麼要利用類別去繼承介面?有什麼作用?


15. String, StringBuffer 與 StringBuilder 這三個類別有什麼不同?


16. Vector 與 Array 有什麼不同?


17. 與例說明 Java 的 MVC 架構(UI-Delegate)。

                              第 80 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版


18. 如果同時有兩個物件會觸發同一種事件,要如何分辨是那一個物件觸發的?


19. 管理 MySQL 資料庫時,會對不同的資料庫設定不同的帳號與管理權限,


   為什麼?

20. FlowLayout, GridLayout, BorderLayout 有什麼不同?


21. Java Web Start 的步驟有那些?




                              第 81 頁
「物件導向程式設計」課程講義
                        九十八學年度二版

CGI 原理




         第 82 頁
「物件導向程式設計」課程講義
                                   九十八學年度二版

CGI 中的 GET 與 POST




                    第 83 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

URL 編碼與解碼 (RFC2396)

  CGI 在傳送資料時是以 URL 格式編碼,會將空白轉換為“ +”, Unsafe 字元


則轉換為“%”後面接著以十六進位 ASCII 來表示。Safe 字元指的七位元的 ASCII


文數字與九個特號符號 (-_.!~*'()) , Unsafe 字元指由其它七位元 ASCII 。




      圖片來源:http://www.albionresearch.com/misc/urlencode.php




                             第 84 頁
「物件導向程式設計」課程講義
                                                    九十八學年度二版

觀察 CGI 過程

    利用 Http Analyzer 或 HTTPDebuggerPro 觀察 CGI 的 GET 與 POST 。




[Application]FindBook1.java(GET)




                                   第 85 頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版


     此程式的結果以 XML 格式回傳。那麼我們要如何存取 XML 格式的資料?

1.   利用 javax.xml Package。

2.   利用 org.w3c.dom Package。

3.   利用 org.xml.sax Package。


     參考網址 Processing XML with Java ,

http://www.cafeconleche.org/books/xmljava/chapters/


[Swing Application]FindBook2.java(POST )




                                     第 86 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版




此程式的結果是 HTML 格式,如何去 Parse 內容?

1.   利用 java.lang.String 類別。

2.   利用 java.util.regex Package。

3.   利用 javax.swing.text.html Package。




                                   第 87 頁
「物件導向程式設計」課程講義
                                                                   九十八學年度二版

NanoXML 函數庫介紹

    NanoXML 是一個免費的小型 Java XML Parser ,針對 XML 的處理提供了


簡單、快速的存取方法。將下列檔案放在 C:Program FilesJavajre1.6.0_18libext


目錄下,如果使用 JCreator ,必須將 nanoxml-2.3.3.jar 加入 JDK Profile 。



下載網址:

http://devkix.com/nanoxml-2.2.3.jar, http://devkix.com/nanoxml-javadoc.tar.gz


[Swing Application]NewFindBook1.java




                                      第 88 頁
「物件導向程式設計」課程講義
                                                                      九十八學年度二版

Regular Expression (Package java.util.regex) 介紹

     在 java.util.regex 這 個 Package 中 主 要 有 兩 個 Class , 包 括 Matcher 與

Pattern ,其中 Pattern 使用的就是 Regular Expresion , Regualr Expression 是字


串的一種特殊處理,是由 Perl 語言最先發明的。



參考文件:

1.   http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html
2.   http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html


參考範例:

1.   http://www.java2s.com/Code/Java/Regular-Expressions/Matcher.htm
2.   http://www.java2s.com/Code/Java/Regular-Expressions/Pattern.htm




                                       第 89 頁
「物件導向程式設計」課程講義
                                                九十八學年度二版

以學校圖書館館藏查詢為例




1.   檢視原始碼,找出關鍵字串




2.   找出 Regular Expression 的規則


[Application]RegEx1.java




                                 第 90 頁
「物件導向程式設計」課程講義
                       九十八學年度二版




即可分解出




        第 91 頁
「物件導向程式設計」課程講義
                                                        九十八學年度二版

以 ISBN 全國新書資訊網為例




          資料來源:http://lib.ncl.edu.tw/isbn/4page-3.htm




1.   檢視原始碼,找出關鍵字串




                            第 92 頁
「物件導向程式設計」課程講義
                                                       九十八學年度二版


2.   利用 HTML Parser 擷取所需的部份,這裡我們使用 Jericho HTML Parser 幫


     助我們處理 HTML 文件 。下載 jericho-html-2.6.zip 並解壓縮至 D: ,將 au


     次目錄複製至 D: 。



下載網址:

http://jericho.htmlparser.net/docs/index.html


D:NewFindBook2.java




                                        第 93 頁
「物件導向程式設計」課程講義
                         九十八學年度二版




執行結果:




        ~進階課程結束~




          第 94 頁

物件導向程式設計課程講義(98 ges hi版)

  • 1.
    數學系資訊組 物件導向程式設計 課程講義 教材編撰:數學系講師冷輝世
  • 2.
  • 3.
    「物件導向程式設計」課程講義 九十八學年度二版 目錄 第1頁
  • 4.
    「物件導向程式設計」課程講義 九十八學年度二版 軟體需求 1. Java SE6 JDK, Java Doc http://java.sun.com 2. JCreator http://www.jcreator.com Java SE6 JDK 與 Java Doc 請選擇最左邊的 JCreator 有三種版本, Pro 版有自動補完功能 (Auto Paded) ,但是屬 Shareware , LE 版與 Classics 版則是免費使用。 第2頁
  • 5.
    「物件導向程式設計」課程講義 九十八學年度二版 設定系統環境變數 1. 新增 JAVA_HOME= C:Program FilesJavajdk1.6.0_18 2. 修改 PATH=%PATH%; C:Program FilesJavajdk1.6.0_18bin 我的電腦(按滑鼠右鍵)→進階→環境變數→系統變數 一定要先設定完系統環境變數以後再開啟 JCreator ,否則 JCreator 會抓不到 Java 的相關設定,造成無法編譯與執行的狀況。 第3頁
  • 6.
    「物件導向程式設計」課程講義 九十八學年度二版 Java 教學文件 1. Java Tutorial http://java.sun.com/docs/books/tutorial/ 2. The Swing Tutorial http://java.sun.com/docs/books/tutorial/uiswing/ 3. Example Depot http://www.exampledepot.com/ 4. Java Tutorial http://www.java2s.com/Tutorial/Java/CatalogJava.htm 本課程預計學生已修習過程式設計,已有基本的程式設計概念,例如程式基本 架構、變數、流程控制等。 Java Doc 一定要裝!雖然檔案大了一點,可是可以節省不少查書的時間。建議安 裝在 C:Program FilesJavajdk1.6.0_12Docs 目錄下。 第4頁
  • 7.
    「物件導向程式設計」課程講義 九十八學年度二版 Applet, Application 與 Swing Application Applet 、 Application 與 Swing Application 的差異: 1. Applet 僅能在網頁中執行,需要 HTML 加以呼叫,所以有兩個檔案。 2. Application 以「命令提示字元」模式執行,只有簡單的文字輸出入。 3. Swing Application 與視窗程式相同(事件驅動)。 [HTML]HelloApplet.htm [Applet]HelloApplet.java [Application]Hello.java 第5頁
  • 8.
    「物件導向程式設計」課程講義 九十八學年度二版 [Swing Applicaton]HelloSwing.java 第6頁
  • 9.
    「物件導向程式設計」課程講義 九十八學年度二版 Java 程式的編譯與執行 編譯與執行過程除了使用 JCreator 之外,尚需熟練「命令提示字元」模式。 圖片來源:http://csjava.occ.cccd.edu/java-setup/D.htm 「命令提示字元」模式 「命令提示字元」模式下的操作 1. javac.exe http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html 2. java.exe http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html 第7頁
  • 10.
    「物件導向程式設計」課程講義 九十八學年度二版 基本程式架構說明 說明類件(Class)、物件(Object)、建構元(Constructor)等觀念。 圖片來源:http://www.cs.princeton.edu/introcs/32class/ 第8頁
  • 11.
    「物件導向程式設計」課程講義 九十八學年度二版 基本資料型態與運算子 基本資料型態 資料來源:http://www.artima.com/insidejvm/ed2/jvmP.html 基本型態運算子與 C/C++ 幾乎都相同(除了字串以外)。 第9頁
  • 12.
    「物件導向程式設計」課程講義 九十八學年度二版 資料來源:http://www.falkhausen.de/de/table/operator.gif 第 10 頁
  • 13.
    「物件導向程式設計」課程講義 九十八學年度二版 Application 模式下的輸出與輸入模式 Application 模式下的輸出使用 System.out.println() 。 [Application]Hello.java Application 模式下的輸入模式有三種: 1. 引數列輸入 2. 鍵盤輸入,使用 BufferedReader 類別物件 3. 鍵盤輸入,使用 Scanner 類別物件 [Application]KeyinDemo1.java [Application]KeyinDemo2.java 第 11 頁
  • 14.
    「物件導向程式設計」課程講義 九十八學年度二版 [Application]KeyinDemo3.java 第 12 頁
  • 15.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的輸出與輸入 JOptionPane.showMessageDialog() 對話盒輸出,JTextField 元件輸入。 [Swing Application]DialogDemo.java [Swing Application]SwingIODemo.java 第 13 頁
  • 16.
    「物件導向程式設計」課程講義 九十八學年度二版 第 14 頁
  • 17.
    「物件導向程式設計」課程講義 九十八學年度二版 陣列 Java 陣列的宣告與 C/C++ 不太一樣,注意“[”與“]”的位置;另外,以物件的 方式宣告,包括 Declaration 與 Creation 兩階段,可以分開也可以合併。 [Application]ArrayDemo.java [Application]ObjArrayDemo1.java [Application]ObjArrayDemo2.java 第 15 頁
  • 18.
    「物件導向程式設計」課程講義 九十八學年度二版 第 16 頁
  • 19.
    「物件導向程式設計」課程講義 九十八學年度二版 數字類別與字串類別 使用數字類別的理由: 1. 可以作為物件的參數。 2. 可以使用數字類別中內建常數。 3. 可以與字串類別做轉換或直接轉換進位制。 分別以 Integer 類別為例,說明數字類別與字串類別。 以 Math 類別為例,說明靜態類別。 第 17 頁
  • 20.
    「物件導向程式設計」課程講義 九十八學年度二版 字串類別的宣告、字串與數值的轉換 字串分為 String, StringBuffer, StringBuilder 三種類別。其中 String 類別為 immutable , StringBuffer 為 mutable, thread-safe , StringBuilder 則為 mutable 用 來取代在 single-thread 情況下的 StringBuffer 。注意這三種類別字串處理的函數 名稱不同。 說明 String, StringBuffered 類別的差異,並舉例。 第 18 頁
  • 21.
    「物件導向程式設計」課程講義 九十八學年度二版 如何使用亂數 亂數有兩種產生的方式: 1. 呼叫 Math.random() 靜態類別函數 2. 宣告 java.util.Random 類別物件 [Application]RandomDemo1.java [Application]RandomDemo2.java 第 19 頁
  • 22.
    「物件導向程式設計」課程講義 九十八學年度二版 MVC 架構 一般的 MVC 架構 圖片來源:http://java.sun.com/developer/technicalArticles/javase/mvc/ Java MVC 第 20 頁
  • 23.
    「物件導向程式設計」課程講義 九十八學年度二版 圖片來源:http://pwosboy.javaeye.com/blog/118768 第 21 頁
  • 24.
    「物件導向程式設計」課程講義 九十八學年度二版 流程控制與事件驅動 與 C/C++ 相同,有 if, if …else, for , while, do…while, switch…case 等。 Swing 模式下的事件驅動是所謂的 Event-Driven ,必須熟悉「元件-事件- 介面」的處理程序。 JButton 元件為例,按下按鍵產生 ActionEvent ,必須利用 以 ActionListener 介面來處理,必須實作 ActionListener 介面中的所有 method ( ActionListener 介面中只有一個 method 即 actionPerformed() )。 Swing Events http://java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html 第 22 頁
  • 25.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JButton 元件的介紹 [Swing Application]Swing3.java 第 23 頁
  • 26.
    「物件導向程式設計」課程講義 九十八學年度二版 第 24 頁
  • 27.
    「物件導向程式設計」課程講義 九十八學年度二版 有圖片的 JButton 在 Java Web Start 的宣告方式 原本的 JButton 宣告 JButton b1=new JButton("剪刀",new ImageIcon("./scissor.gif")); Java Web Start 下的宣告方式 ClassLoader cl=this.getClass().getClassLoader(); Icon scissors1=new ImageIcon(cl.getResource("images/scissors1.gif")); JButton b1=new JButton("剪刀",scissors1); 第 25 頁
  • 28.
    「物件導向程式設計」課程講義 九十八學年度二版 Abstract Class 的介紹 Java 定義有 Abstract Class ,其目的在於利用此 Abstract Class 衍生子類別, 所以不能利用 Abstract Class 建立物件,只能透過其衍生子類別建立物件。 Abstract Class 與一般 Class 宣告類似,有資料成員、成員函數,但多了定義 abstract method , abstract method 是空的,沒有定義函數的內容,而且只能宣告 為 public 或 protected 。 [Application]ExAbstract.java 第 26 頁
  • 29.
    「物件導向程式設計」課程講義 九十八學年度二版 第 27 頁
  • 30.
    「物件導向程式設計」課程講義 九十八學年度二版 Interface 的介紹 Interface 是 Java 提供的另一項重要功能,與 Abstract Class 非常類似,但有 兩點不同: 1. 所有的資料都要初始化。 2. 所有的 method 都必須宣告為 abstract ,也就是說不能有一般的 method 。 [Application]ExInterface.java 第 28 頁
  • 31.
    「物件導向程式設計」課程講義 九十八學年度二版 事件處理的多種寫法 每種 EventListener 都是一種 Interface ,裡面只有定義這個 EventListener 所 提供的方法,所以當要處理事件(Event)時,必須實作出 Interface 所定義的方法, 寫法有三種:。 1. 利用 implements 關鍵字將所有抽象方法實作出來。 2. 利用 Adapter 類別。 3. 利用 Inner Class 的匿名類別方法(可以解決多重繼承的問題)。 [Swing Application]ExEvent1.java 第 29 頁
  • 32.
    「物件導向程式設計」課程講義 九十八學年度二版 第 30 頁
  • 33.
    「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]ExEvent2.java [Swing Application]ExEvent3.java 第 31 頁
  • 34.
    「物件導向程式設計」課程講義 九十八學年度二版 第 32 頁
  • 35.
    「物件導向程式設計」課程講義 九十八學年度二版 集中事件處理 另外,當有許多不同事件要處理時,可以考慮集中事件處理。 [Swing Application]ExEvent4.java 第 33 頁
  • 36.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JLabel 元件介紹 JLabel 用來顯示一段文字或圖形或文字加上圖形。以下舉例說明不同形式的 JLabel 。 [Swing Application]JLabelExample.java 第 34 頁
  • 37.
    「物件導向程式設計」課程講義 九十八學年度二版 第 35 頁
  • 38.
    「物件導向程式設計」課程講義 九十八學年度二版 利用 JLabel 顯示文字作為提示文字 [Swing Application]ExJLabel.java 第 36 頁
  • 39.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JTextField 和 JPasswordField 元件的介紹 JTextField 輸入單行文字, JPasswordField 輸入具有遮罩的單行文字。 [Swing Application]FormExample.java 第 37 頁
  • 40.
    「物件導向程式設計」課程講義 九十八學年度二版 第 38 頁
  • 41.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的 JCheckBox 和 JRadioButton 元件的介紹 JCheckBox 建立核取方塊, JRadioButton 建立收音機按鈕,若要滿足單選 則必須配合 ButtonGroup 使用。 [Swing Application]ExJRadioButton.java 第 39 頁
  • 42.
    「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]ExJCheckBox.java 第 40 頁
  • 43.
    「物件導向程式設計」課程講義 九十八學年度二版 第 41 頁
  • 44.
    「物件導向程式設計」課程講義 九十八學年度二版 檔案處理 Java 檔案的處理架構如下,針對文字檔的處理有兩種方式: 1. 利用 FileReader 與 FileWriter 讀取與寫入文字檔 2. 利用 BufferedReader 與 BufferedWriter 讀取與寫入文字檔 [Swing Application]SourceReader.java 第 42 頁
  • 45.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JTextArea 和 JFileChooser 元件的介紹 配 合 Java 檔 案 處 理 , 利用 FileChooser 開 啟檔 案 並 將讀 取 的 內容 放 到 JTextArea 元件中,可供修改後再儲存。 ※作業:完成儲存的功能。 [Swing Application]FileRW.java 第 43 頁
  • 46.
    「物件導向程式設計」課程講義 九十八學年度二版 第 44 頁
  • 47.
    「物件導向程式設計」課程講義 九十八學年度二版 第 45 頁
  • 48.
    「物件導向程式設計」課程講義 九十八學年度二版 整合範例-猜數字遊戲 利用猜數字遊戲將前面介紹的內容整合,觀察下列原始碼的 MVC 架構。 作業:加入詢問是否再玩一次的功能。 [Swing Application]GuessAB.java 第 46 頁
  • 49.
    「物件導向程式設計」課程講義 九十八學年度二版 第 47 頁
  • 50.
    「物件導向程式設計」課程講義 九十八學年度二版 第 48 頁
  • 51.
    「物件導向程式設計」課程講義 九十八學年度二版 Java 與 MySQL 的連結 Java 與 MySQL 連結的步驟如下: 1. 下載 mysql-java-connector-5.1.12.zip ,解壓縮將 mysql-java- connector-5.1.12.jar 放至 JRE 下的 libext 目錄下。 http://dev.mysql.com/downloads/connector/j/ 2. 安裝 AppServ 包括 MySQL 與 phpMyAdmin 。 http://www.appservnetwork.com 3. 修改 C:AppServwwwphpMyAdminconfig.inc.php 第 31 行為 $cfg['PmaAbsoluteUri'] = 'http://127.0.0.1/phpMyAdmin/'; 4. 資料庫(Database)、資料表(Table)、欄位(Field)、記錄(Record)之間的關係。 第 49 頁
  • 52.
    「物件導向程式設計」課程講義 九十八學年度二版 MySQL 資料庫的建立 使用 phpMyAdmin 建立 math 資料庫,並建立 student 資料表,其中包括 id, name, score 三個欄位。 資料庫 math 第 50 頁
  • 53.
    「物件導向程式設計」課程講義 九十八學年度二版 使用 phpMyAdmin 設定資料庫的權限的問題 建立一個帳號 www ,密碼為 123 的使用者帳戶,對 math 資料庫擁有 SELECT 權限。 第 51 頁
  • 54.
    「物件導向程式設計」課程講義 九十八學年度二版 SQL(Structured Query Language)介紹 SQL 命令分為 DDL 與 DML 兩類: 1. DDL(Data Definition Language) 包 括 CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, GRANT, REVOKE 。 2. DML DML(Data Manipulation Language) 包 括 SELECT, INSERT, UPDATE, DELETE 。 3. SQL Quick Reference From W3Schools http://www.w3schools.com/sql/sql_quickref.asp?output=print 第 52 頁
  • 55.
    「物件導向程式設計」課程講義 九十八學年度二版 JDBC 範例 建立一個基本的 JDBC 範例,目的只是確定之前的安裝連結成功。 [Application]JDBCEx1.java 第 53 頁
  • 56.
    「物件導向程式設計」課程講義 九十八學年度二版 Package 與 Jar Package 是指將 class 封裝,則其它程式可使用 import 引入。 Jar 則是將 class 檔壓縮。 Package 時要注意路徑的設定。 Jar 的命令操作可參考下列文件: 1. Java Archive (JAR) Files http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html 2. Lesson: Packaging Programs in JAR Files http://java.sun.com/docs/books/tutorial/deployment/jar/ 第 54 頁
  • 57.
    「物件導向程式設計」課程講義 九十八學年度二版 第 55 頁
  • 58.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式中的 Model Swing 元件中的 Model 可分為三類 1. 儲存元件內將被用來操作的資料,常用來顯示不同的資料顯示方式。例如: ListModel, ComboBoxModel, TableModel, Document 。 2. 儲存元件操作模式的資料。例如: ListSelectionModel, TableColumnModel 。 3. 儲存元件本身性質的資料。例如: BoundedRangeModel 。 第 56 頁
  • 59.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式中的 JList 元件介紹 JList 元件常用建立選取清單。注意 JList 與 JComboBox 不同 JList 是清單, JComboBox 是下拉式選單。 AbstractListModel 要實作 getElementAt(), getSize() , DefaultListModel 則是所有方法都有預設值。ListCellRenderer 主要用於建立有 Icon 的 JList ,通常是建立某類別繼承 JLabel 並實作 ListCellRenderer 介面。 [Swing Application]JListEx1.java 第 57 頁
  • 60.
    「物件導向程式設計」課程講義 九十八學年度二版 第 58 頁
  • 61.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的 JComboBox 元件 JComboBox 用來建立下拉式選單。 DefaultComboBoxModel 所有方法都有 預 設 值 。 由 於 ComBoxModel 是 繼 承 自 ListModel , 所 以 若 要 實 作 ComboBoxModel ,除了要實作 ComboBoxModel 的兩個方法 getSelectedItem(), setSelectedItem() 外,還要實做 ListModel 所定義的四個方 法 getElementAt(), getSize(), addListDataListener(), removeListDataListener() ,共六個方法。所以如果 繼承 AbstractListModel 再實作 ComboBoxModel 則只要實作四個方法。 [Swing Application]JComboEx1.java 第 59 頁
  • 62.
    「物件導向程式設計」課程講義 九十八學年度二版 第 60 頁
  • 63.
    「物件導向程式設計」課程講義 九十八學年度二版 Google Chart Tools Google Chart 是一組 Google 提供的 API ,我們可以很容易的利用它產生一 般的統計圖表。 參考文件: 1. Google Chart Tools http://code.google.com/apis/charttools/ 第 61 頁
  • 64.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的 JTabbedPane 元件 TabbedPane 類似放置文件的檔案夾,每一份文件都有標籤不同的標籤可顯 示不同的頁面。 [Swing Application]JTabbedPaneEx1.java 第 62 頁
  • 65.
    「物件導向程式設計」課程講義 九十八學年度二版 第 63 頁
  • 66.
    「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JTable 元件的介紹 JTable 用來建立表格文字,建立方式可以使用 Array 或是 Vector ,使用 Vector 比較有彈性。區別 AbstractTableModel 與 DefaultTableModel 的不同。 [Swing Application]JTableEx1.java 第 64 頁
  • 67.
    「物件導向程式設計」課程講義 九十八學年度二版 第 65 頁
  • 68.
    「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]JTableEx2.java 第 66 頁
  • 69.
    「物件導向程式設計」課程講義 九十八學年度二版 第 67 頁
  • 70.
    「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]JTableEx3.java 第 68 頁
  • 71.
    「物件導向程式設計」課程講義 九十八學年度二版 JTable 範例 以下是有關 JTable 的精彩範例: 1. JTable Example 1 http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html 2. JTable Example 2 http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples2.html 第 69 頁
  • 72.
    「物件導向程式設計」課程講義 九十八學年度二版 第 70 頁
  • 73.
    「物件導向程式設計」課程講義 九十八學年度二版 第 71 頁
  • 74.
    「物件導向程式設計」課程講義 九十八學年度二版 Java Web Start 的使用 執行以下九個步驟: 1. 設定 Web Server ,開啟 C:AppServApache2.2confmime.types,加入: # MIME type Extensions application/x-java-jnlp-file jnlp Apach Restart 。 2. 編譯 Test1.java 檔,產生 Test.class 檔。 Test1.java→(Compile)→Test1.class(or Test1$.class) [Swing Application] Test1.java 3. 建立 manifest.txt (第一行的 Test1 前面空一格,第二行空行一定要有) manifest.txt 第 72 頁
  • 75.
    「物件導向程式設計」課程講義 九十八學年度二版 Main-Class: Test1 4. 建立 Test.jar (開啟 cmd 視窗,建立 jar 檔) jar cvfm Test1.jar manifest.txt *.class 5. 建立簽証檔 myKeystore keytool -genkey -keystore myKeystore -alias myself 6. 對 Test.jar 檔加上簽証 jarsigner -keystore myKeystore Test1.jar myself 7. 建立 Test1.jnlp Test1.jnlp 8. 建立 Test1.htm 連結 Test1.jnlp Test1.htm 第 73 頁
  • 76.
    「物件導向程式設計」課程講義 九十八學年度二版 9. 利用瀏覽器開啟 URL , http://127.0.0.1/jws/Test1.htm 。 第 74 頁
  • 77.
    「物件導向程式設計」課程講義 九十八學年度二版 JDBC 範例 JDBC 範例包括建立資料庫與 JWSTest.java 兩部份。請先將 mysql-connector- java-5.1.12-bin.jar 複製至 C:AppServwwwjws 目錄下。 1. 建立 ncue 資料庫,內含 math 資料表,內含 id, name, score 三欄位,並建立 有 select 上述資料庫權限的帳號與密碼 www, 123 。 2. 確定 JWSTest.java 程式編譯無誤。 第 75 頁
  • 78.
    「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]JWSTest.java 第 76 頁
  • 79.
    「物件導向程式設計」課程講義 九十八學年度二版 3. 建立 JWSTest.jar jar cvfm JWSTest.jar manifest.txt JWSTest*.class 4. 對 JWSTest.jar 檔加上簽証(如果已有簽証,這裡就不必再建立簽証了!) jarsigner -keystore myKeystore JWSTest.jar myself 5. 對 mysql-connector-java-5.1.6-bin.jar 作 jarsinger 簽証。 jarsigner -keystore myKeystore mysql-connector-java-5.1.6-bin.jar myself 6. 建立 JWSTest.jnlp 第 77 頁
  • 80.
    「物件導向程式設計」課程講義 九十八學年度二版 第 78 頁
  • 81.
    「物件導向程式設計」課程講義 九十八學年度二版 JWSTest.jnlp 7. 建立 JWSTest.htm JWSTest.htm 8. 利用瀏覽器開啟 URL , http://127.0.0.1/jws/JWTest.htm 。 注意!雖然 jar 檔在檔案總管中直接按兩下即可開啟,但是這只代表在本地 端的執行,與 Java Web Start 遠端佈署的意義是不同的!所以一定要以 URL 的 方式開啟才算成功! ~基礎課程結束~ 第 79 頁
  • 82.
    「物件導向程式設計」課程講義 九十八學年度二版 自我評量測驗 針對以下問題,請每位同學自行查詢筆記作答: 1. Abstract Class 與一般的 Class 有什麼不同? 2. 說明 Interface 的作用? 3. Java 程式的基本架構包括那些? 4. 環境變數要設定那些? 5. JCreator 開啟 Java File 與 Java Project 有何不同, Workspace 又是什麼? 6. Java Swing 程式的基本架構包括那些? 7. Java 如何與 MySQL 資料庫連結? 8. Java 程式中執行 SQL 指令的函數有什麼要注意的? 9. 各舉一例說明 SQL 語法的 SELECT 、 INSERT 、 DELETE 、 UPDATE 。 10. 如何在 Java 中取亂數? 11. try…catch 是用在什麼場合? 12. throw 與 try…catch 有什麼不同? 13. 如何實作一個 Interface? 14. 為什麼要利用類別去繼承介面?有什麼作用? 15. String, StringBuffer 與 StringBuilder 這三個類別有什麼不同? 16. Vector 與 Array 有什麼不同? 17. 與例說明 Java 的 MVC 架構(UI-Delegate)。 第 80 頁
  • 83.
    「物件導向程式設計」課程講義 九十八學年度二版 18. 如果同時有兩個物件會觸發同一種事件,要如何分辨是那一個物件觸發的? 19. 管理 MySQL 資料庫時,會對不同的資料庫設定不同的帳號與管理權限, 為什麼? 20. FlowLayout, GridLayout, BorderLayout 有什麼不同? 21. Java Web Start 的步驟有那些? 第 81 頁
  • 84.
    「物件導向程式設計」課程講義 九十八學年度二版 CGI 原理 第 82 頁
  • 85.
    「物件導向程式設計」課程講義 九十八學年度二版 CGI 中的 GET 與 POST 第 83 頁
  • 86.
    「物件導向程式設計」課程講義 九十八學年度二版 URL 編碼與解碼 (RFC2396) CGI 在傳送資料時是以 URL 格式編碼,會將空白轉換為“ +”, Unsafe 字元 則轉換為“%”後面接著以十六進位 ASCII 來表示。Safe 字元指的七位元的 ASCII 文數字與九個特號符號 (-_.!~*'()) , Unsafe 字元指由其它七位元 ASCII 。 圖片來源:http://www.albionresearch.com/misc/urlencode.php 第 84 頁
  • 87.
    「物件導向程式設計」課程講義 九十八學年度二版 觀察 CGI 過程 利用 Http Analyzer 或 HTTPDebuggerPro 觀察 CGI 的 GET 與 POST 。 [Application]FindBook1.java(GET) 第 85 頁
  • 88.
    「物件導向程式設計」課程講義 九十八學年度二版 此程式的結果以 XML 格式回傳。那麼我們要如何存取 XML 格式的資料? 1. 利用 javax.xml Package。 2. 利用 org.w3c.dom Package。 3. 利用 org.xml.sax Package。 參考網址 Processing XML with Java , http://www.cafeconleche.org/books/xmljava/chapters/ [Swing Application]FindBook2.java(POST ) 第 86 頁
  • 89.
    「物件導向程式設計」課程講義 九十八學年度二版 此程式的結果是 HTML 格式,如何去 Parse 內容? 1. 利用 java.lang.String 類別。 2. 利用 java.util.regex Package。 3. 利用 javax.swing.text.html Package。 第 87 頁
  • 90.
    「物件導向程式設計」課程講義 九十八學年度二版 NanoXML 函數庫介紹 NanoXML 是一個免費的小型 Java XML Parser ,針對 XML 的處理提供了 簡單、快速的存取方法。將下列檔案放在 C:Program FilesJavajre1.6.0_18libext 目錄下,如果使用 JCreator ,必須將 nanoxml-2.3.3.jar 加入 JDK Profile 。 下載網址: http://devkix.com/nanoxml-2.2.3.jar, http://devkix.com/nanoxml-javadoc.tar.gz [Swing Application]NewFindBook1.java 第 88 頁
  • 91.
    「物件導向程式設計」課程講義 九十八學年度二版 Regular Expression (Package java.util.regex) 介紹 在 java.util.regex 這 個 Package 中 主 要 有 兩 個 Class , 包 括 Matcher 與 Pattern ,其中 Pattern 使用的就是 Regular Expresion , Regualr Expression 是字 串的一種特殊處理,是由 Perl 語言最先發明的。 參考文件: 1. http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html 2. http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html 參考範例: 1. http://www.java2s.com/Code/Java/Regular-Expressions/Matcher.htm 2. http://www.java2s.com/Code/Java/Regular-Expressions/Pattern.htm 第 89 頁
  • 92.
    「物件導向程式設計」課程講義 九十八學年度二版 以學校圖書館館藏查詢為例 1. 檢視原始碼,找出關鍵字串 2. 找出 Regular Expression 的規則 [Application]RegEx1.java 第 90 頁
  • 93.
    「物件導向程式設計」課程講義 九十八學年度二版 即可分解出 第 91 頁
  • 94.
    「物件導向程式設計」課程講義 九十八學年度二版 以 ISBN 全國新書資訊網為例 資料來源:http://lib.ncl.edu.tw/isbn/4page-3.htm 1. 檢視原始碼,找出關鍵字串 第 92 頁
  • 95.
    「物件導向程式設計」課程講義 九十八學年度二版 2. 利用 HTML Parser 擷取所需的部份,這裡我們使用 Jericho HTML Parser 幫 助我們處理 HTML 文件 。下載 jericho-html-2.6.zip 並解壓縮至 D: ,將 au 次目錄複製至 D: 。 下載網址: http://jericho.htmlparser.net/docs/index.html D:NewFindBook2.java 第 93 頁
  • 96.
    「物件導向程式設計」課程講義 九十八學年度二版 執行結果: ~進階課程結束~ 第 94 頁