JSP程式設計 基本概論 歐陽芳泉 Fang-Chuan Ou Yang ouyang@cyu.edu.tw Good morning everybody , today I want to present is about using grid service technology on mobile learning platform . Recently , Grid Computing has become a well-known information technology , and the standard of Grid Service bases on Grid Computing is developed .On the other hand , network-based education likes e-learning or m-learning becomes more popular , too . Although e-learning and Grid Service are two distinct areas , e-learning increasingly addresses learning resource sharing and reuse , interoperability , collaboration , and various modes of interactions . And it is where Grid and Grid Service come up . In our research , we present a novel architecture , it employs Grid Service core technology to build up our mobile learning platform . We call this architecture “m-learning Grid” . In next several sections , I will describe the architecture in detail , and report our experimental result . Fang-Chuan Ou Yang ouyang@cyu.edu.tw
導論
導論 (1/9) Client / Server: Client為服務的需求者;Server為服務的提供者。 request response
導論 (2/9) What’s “tier” ? 在電腦硬體上,Tier係指一個實體的元件將硬體的架構分割成為一至多個子層次 (sub-layer)。 在軟體上,Tier係指一個屬於特定領域的軟體,而不同於其他軟體。 最終的目的是將所有的tiers藉由interface、middleware整合起來。
導論 (3/9) Internet Three-tier Client / Server architecture: 在Client / Server中,亦即使用者系統與資料庫之間加入一個中介層 (middle tier)。 Presentation tier Server Tier Database layer Internet
導論 (4/9) Three-tier Client / Server architecture (續): Three-tier主要目的為降低Client Side的運算負擔,成為一”thin client”。 Middle tier的實作上有很多型式,例如:transaction processing monitors, message servers application servers…
導論 (5/9) Application Server in Three-tier : 不負責GUI,而是負責分享商業邏輯,運算以及連接資料庫。 改善了在C/S中商業邏輯及運算集中於Client而難以維護的問題。
導論 (6/9) What’s middleware ? 藉由標準(standards)或協定(protocols)來作為不同硬體間的橋樑。 Fundamental middleware : low-level system, such as network operating system (NOS) Applied middleware: it usually followed standards or specs. such as CORBA, RMI, ODBC User refined middleware: based on applied middleware to customized a particular system.
導論 (7/9) User interface Business function data Web HTTP Server Modern C/S Business Application Architecture: 分為使用者介面層、商業邏輯層、資料層。 User interface Business function data Web HTTP Server Web Application Server CORBA Server payment server, and so on
導論 (8/9) : : Web Server、Http Server以及AP Server: Internet Web Server Client Http server 80 Service xxxx Application Server Service : : CGI ASP, ASP.NET PHP JSP Service
導論 (9/9) 網頁技術的學習重點: 了解Internet, 網路基本概念, ex. WWW, IP, HTTP, etc. 選定目標技術/架構, ex. ASP, ASP.NET, PHP, JSP 學習Application Server基本的操作與設定, 至少應該學會如何修改port號, 設定網站根目錄/虛擬目錄. 學習目標技術/架構 找一份好的參考資料或文件, 應具有齊全的指令與元件介紹. 學會基本語法(language) 內建元件(component)/函式庫(API/library)的使用. 了解Web上的互動元件: Sessions, Cookies, Applications 了解連接資料庫的原理與方法, 相關的元件/函式庫 實例探討
第1章 JSP基礎與開發環境的建立 1-1 Web應用程式的基礎 1-2 Java的網頁技術 1-3 JSP的開發環境建立 1-5 在IIS建立JSP開發環境
1-1 Web應用程式的基礎 1-1-1 WWW的基礎 1-1-2 HTTP通訊協定 1-1-3 Web應用程式
1-1-1 WWW的基礎-說明 「WWW」(World Wide Web,簡稱Web)全球資訊網是1989年歐洲高能粒子協會一個研究小組開發的Internet服務,Web能夠在網路上傳送圖片、文字、影像和聲音等多媒體資料,這是由Tim Berners Lee領導的小組開發的主從架構和分散式網路服務系統。
1-1-1 WWW的基礎-名詞
1-1-1 WWW的基礎-圖例
1-1-2 HTTP通訊協定-說明 HTTP通訊協定(Hypertext Transfer Protocol)是一種在伺服端(Server)和客戶端(Client)之間傳送檔案的通訊協定,目前的版本是1.1版,如下圖所示:
1-1-2 HTTP通訊協定-過程 HTTP通訊協定的應用程式是一種主從架構(Client-Server Architecture)應用程式,在客戶端使用URL(Uniform Resource Locator)指定連線的伺服端資源,在其間傳送HTTP訊息(HTTP Message)來進行溝通,以便請求指定的檔案,其過程如下所示: Step 1:客戶端要求連線伺服端。 Step 2:伺服端允許客戶端的連線。 Step 3:客戶端送出HTTP請求訊息,內含GET指令請求取得伺服端的指定檔案。 Step 4:伺服端以HTTP回應訊息來回應客戶端的請求,傳回訊息包含請求的檔案內容。
1-1-2 HTTP通訊協定-HTTP請求訊息 GET /path/file.htm HTTP/1.1 Host: www.host.com Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg…. Accept-Language: zh-tw Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1) Connection: Keep-Alive
1-1-2 HTTP通訊協定-HTTP回應訊息 HTTP/1.1 200 OK Date: Mon, 12 Oct 2004 19:12:16 GMT Server: Apache/1.3.12(Unix) Debian/GNU mod_perl/1.24 Connection: Close Content-Type: text/html Content-Length: 1345 <html> <body> <h1>…..</h1> …………… </body> </html>
1-1-3 Web應用程式-說明 Web應用程式(Web Application)簡單的說是一組網頁(包含HTML文件、圖片和相關伺服端網頁技術的程式檔案)的集合,應用程式可以回應使用者的請求,與使用者進行互動。目前Internet擁有多種不同類型的Web應用程式,例如:網路銀行、電子商務網站、搜尋引擎、網路商店、拍賣網站和電子公共論壇等。
1-1-3 Web應用程式-圖例
1-2 Java的網頁技術 1-2-1 Java Applet 1-2-2 Java Servlet 1-2-3 JSP 1-2-4 Java的Web應用程式架構
1-2-1 Java Applet-說明 Java Applet是在瀏覽程式執行的小程式,事實上,它並不能算是一個完整的Java應用程式,Java Applet是一個繼承java.applet.Applet類別的物件,如下所示: import java.applet.Applet; import java.awt.Graphics; public class Ch1_2_1 extends Applet { public void paint(Graphics g) { g.drawString("一個簡單的Java Applet", 50, 25); }
1-2-1 Java Applet-執行過程 Java Applet繼承Applet類別,因為並不是完整的Java應用程式,所以不能直接在作業系統執行,而是透過其它程式來執行,例如:使用瀏覽程式執行Java Applet,如果瀏覽程式支援JVM或安裝JRE,就可以執行Java Applet,如下圖所示:
1-2-2 Java Servlet-說明 Java Servlet簡稱Servlet,這是昇陽取代CGI的網頁技術,「CGI」(Common Gateway Interface)共通匣道介面提供Web伺服器執行外部程式的管道,Servlet的主要目的就是在擴充Web伺服器功能,另一個用途是搭配JSP技術來建立動態網頁內容,目前的版本是2.4。 Servlet是Java技術的標準擴充,Java Servlet API是Servlet程式所需的類別函式庫,一共有javax.servlet和javax.servlet.http兩個套件,其最主要的功能是處理客戶端使用者的HTTP請求。
1-2-2 Java Servlet-範例 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Ch1_2_2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=Big5"); request.setCharacterEncoding("Big5"); PrintWriter out = response.getWriter(); if ( validOrder(request) ) { saveOrder(request); out.println("<html>"); ………… out.println("</body></html>"); } private boolean validOrder(HttpServletRequest request) { …… } private void saveOrder(HttpServletRequest request) { …… }
1-2-2 Java Servlet-執行過程 Servlet的執行是由Web伺服器的「Servlet容器/引擎」(Servlet Container/Engine)所控制,Servlet容器載入Servlet、執行Servlet接受請求和刪除Servlet的過程,如下圖所示:
1-2-2 Java Servlet-相關方法
1-2-3 JSP-說明 「JSP」(JavaServer Pages)屬於伺服端網頁技術,目前的版本是2.0,所謂伺服端網頁技術,簡單的說,程式是在Web伺服器上執行,而不是在客戶端瀏覽程式,目前常用的伺服端網頁技術有:CGI、ASP、ASP.NET、JSP和PHP。 JSP和Servlet技術擁有密切關係,其主要差異在於Servlet是讓程式設計者開發Web伺服器的擴充功能和建立Web應用程式處理流程的控制程式,而JSP技術主要是讓網頁設計者能夠輕鬆建立動態網頁內容,換句話說,我們可以將Java網頁技術Servlet分割成程式設計者建立的Servlet和網頁設計者使用的JSP 。
1-2-3 JSP-圖例
1-2-3 JSP-特點1 與瀏覽程式無關的網頁技術:JSP程式回應客戶端瀏覽程式顯示的內容仍是標準HTML文件,所以,不論使用Netscape或Internet Explorer瀏覽程式都可以正確顯示網頁內容。 跨平台和Web伺服器的網頁技術:JSP技術支援多種作業系統Windows、Unix和Linux,不同的Web伺服器Apache、IIS等,換句話說,只需寫一次JSP程式,就可以在不同環境下執行。 建立多層架構的Web應用程式:JSP技術可以搭配其它Java網頁技術,建立多層應用程式架構,詳細的說明請參閱第1-2-4節。
1-2-3 JSP-特點2 動態產生多種不同的網頁格式:JSP技術可以依客戶端應用程式產生不同的網頁格式,Web瀏覽程式的HTML/DHTML/XHTML格式、PDA的WML格式或XML格式。 比Servlet更容易的Java網頁技術:Servlet程式的開發者需要精通Java物件導向程式設計,JSP可以視為一種更高階的Servlet,不但能夠作到Servlet所能作到的幾乎所有功能,而且只需網頁設計者就可以輕鬆使用JSP技術。 JSTL標籤和EL:JSP技術的JSTL標籤和EL可以如同撰寫HTML標籤一般的建立JSP程式,就算從來沒有學過Java語言,也一樣可以使用JSP技術來建立動態網頁內容。
1-2-4 Java的Web應用程式架構-圖例 Java的Web應用程式架構是結合Servlet、JSP技術和JavaBeans元件的三層架構,如下圖:
1-2-4 Java的Web應用程式架構- MVC設計模型 上一頁圖例的虛線框是使用「MVC設計模型」(Model-View-Controller Design Pattern)建立的Web應用程式架構。 MVC設計模型是1980年由Xerox所提出的應用程式架構,將應用程式分成三層View、Controller和Model 。
1-2-4 Java的Web應用程式架構-三層說明 展示層(Presentation Layer):展示層是與使用者互動的使用者介面,這是在客戶端瀏覽程式實際看到的顯示結果或表單介面,我們可以使用HTML、Java Applet或JSP程式來產生展示層的使用者介面,或顯示Web應用程式的執行結果,即MVC設計模型(Model-View-Control Design Pattern)的View。 控制層(Control Layer):控制層是用來連結展示層和商業邏輯層,以Servlet或JSP作為控制層來控制應用程式的執行,即作為控制資料處理流程的控制者Controller,負責接收使用者的HTTP請求。 商業邏輯層(Business Logic Layer):商業邏輯層負責Web應用程式的資料存取和處理,即Model,我們可以使用JavaBeans和JSP來建立商業邏輯層,存取和處理儲存在資料庫、文字檔案和XML檔案中的資料。
1-2-4 Java的Web應用程式架構- Model 1 Type 1 Model 1 Type 1適合小型Web應用程式的開發,這是一種純粹使用JSP程式來建立展示層、控制層和商業邏輯層的三層架構,如下圖所示:
1-2-4 Java的Web應用程式架構- Model 1 Type 2 Model 1 Type 2也適合小型Web應用程式的開發,這是使用JSP程式建立展示層和控制層,JavaBeans建立商業邏輯層,如下圖所示:
1-2-4 Java的Web應用程式架構- Model 2 Model 2適用在大型Web應用程式的開發,使用JSP建立展示層View,Servlet作為控制層來控制應用程式的執行的Controller,JavaBeans負責商業邏輯層的資料存取和處理,即Model,如下圖所示:
1-3 JSP的開發環境建立 1-3-1 JDK的下載與安裝 1-3-2 Resin伺服器的下載和安裝
1-3 JSP的開發環境建立 JSP技術是一種伺服端網頁技術,所以其開發環境也是一種主從架構的開發環境,如右圖所示:
1-3-1 JDK的下載與安裝 JDK可以從昇陽網站免費下載,目前最新版本是5.0版,其內部版本為1.5.0版,網址為:http://java.sun.com/j2se/。 在安裝好JDK後,我們需要設定JDK執行環境,即在Windows XP新增環境變數Path的搜尋路徑「C:\Program Files\Java\jdk1.5.0\bin」,其中C:\Program Files\Java\jdk1.5.0\是JDK的安裝路徑。
1-3-2 Resin伺服器的下載和安裝-說明1 JSP程式需要支援JSP的Web伺服器才能夠執行,稱為JSP容器(JSP Container)。目前巿面上有多套應用程式或伺服器,可以讓Apache和IIS等Web伺服器執行Servlet/JSP程式,一般來說,支援Servlet容器就一定支援JSP容器,如下所示: Tomcat:http://jakarta.apache.org/tomcat/index.html。 JRun:http://www.macromedia.com。 Resin:http://www.caucho.com。 ServletExec:http://www.newatlanta.com。
1-3-2 Resin伺服器的下載和安裝-說明2 Resin伺服器是Caucho Technology開發的Servlet和JSP容器,其本身就是一套支援HTTP 1.1的快速Web伺服器和Servlet/JSP容器,可以獨立運作來支援Java網頁技術的Web應用程式,也可以搭配其它Web伺服器,例如:IIS,讓Web伺服器IIS也能夠開發和執行Servlet/JSP程式。 Resin伺服器在3.0版支援Java Servlet 2.4和JSP 2.0版,提供負載平衡(Load Balancing)增加系統可靠度,並且可以使用Servlet過濾(Servlet Filtering)功能來轉換XSL和XML,建立客戶端輸出的HTML、WAP或XML內容。
1-3-2 Resin伺服器的下載和安裝-下載與安裝 Resin伺服器目前的版本是 3.0版,在書附光碟提供resin-3.0.9.zip的ZIP格式壓縮檔,其下載網址,如下所示: 下載Resin:http://www.caucho.com/download/index.xtp 安裝Resin伺服器 安裝Resin伺服器只需使用WinZIP或Windows XP的解壓縮精靈等工具即可解開ZIP格式的壓縮檔,以本書為例是解壓縮到硬碟根目錄C:,預設的安裝路徑為:「C:\resin-3.0.9\」。
1-3-3 啟動與測試Resin伺服器 Resin伺服器本身是一套可以在Windows作業系統下獨立執行的Web伺服器,在解壓縮檔案安裝好Resin伺服器後,就可以啟動Resin伺服器,建立JSP技術的開發和執行環境。 在啟動Resin伺服器後,我們就可以啟動Internet Explorer瀏覽程式測試伺服器是否成功啟動,請在瀏覽程式的【網址】欄輸入下列URL網址,如下所示: http://localhost:8080/ 上述URL網址的localhost是指本機電腦,預設埠號為8080,按Enter鍵,稍等一下,就可以看到網頁內容。
1-3-4 停止與關閉Resin伺服器 停止Resin的Web伺服器是在「Resin」視窗選【Stop】選項,如此即可停止Resin的Web伺服器執行,按【Quit】鈕,就可以離開Resin伺服器。
1-4 JSP程式的開發工具 1-4-1 記事本 1-4-2 Gel中文介面開發工具
1-4-1 記事本 Windows作業系統的記事本就可以編輯JSP原始程式碼,在Windows XP請執行「開始/所有程式/附屬應用程式/記事本」指令啟動記事本,如下圖所示:
1-4-2 Gel中文介面開發工具-說明 Gel是原生Windows介面使用Delphi開發的Java/JSP IDE,而不是使用Java語言,所以尺寸非常小、佔用記憶體少且執行速度快。Gel擁有強大功能,提供中文使用介面、語法標示、程式碼自動完成、參數提示和專案管理功能,其下載網址:http://www.gexperts.com/download.html。
1-4-2 Gel中文介面開發工具-圖例
1-5 在IIS建立JSP開發環境 1-5-1 建立IIS的JSP開發環境 1-5-2 部署Resin成為Windows系統服務
1-5 在IIS建立JSP開發環境 Resin的Serlet/JSP容器可以搭配微軟IIS的Web伺服器,讓IIS也能夠支援JSP,成為JSP開發和執行環境,其分工為IIS負責處理HTML和圖片檔案,Resin處理JSP和Servlet程式,如下圖:
1-5-1 建立IIS的JSP開發環境 Resin提供setup程式可以幫助我們執行IIS和Resin的環境設定,其步驟如下所示: Step 1:停止IIS伺服器的Internet服務 Step 2:設定IIS和Resin伺服器 Step 3:新增【預設的網站】的虛擬目錄 Step 4:修改Resin的resin.conf檔案 Step 5:測試IIS的JSP開發環境
1-5-2 部署Resin成為Windows系統服務 IIS建立的JSP開發環境需要先啟動Resin伺服器,我們可以將Resin伺服器安裝成為Windows系統服務,在啟動Windows作業系統時,就同時啟動Resin。 請開啟命令提示字元視窗,輸入下列指令來將Resin設為系統服務,如下所示: C:\>resin-3.0.9\httpd -install Enter
1-5-3 在IIS安裝本書的JSP範例程式-1 在書附光碟已經提供本書各章節的JSP範例程式,這是在IIS+Resin開發環境建立的JSP程式,其安裝步驟如下所示: Step 1:在IIS安裝JSP開發環境。 Step 2:將書附光碟的「wwwroot」資料夾下的所有檔案複製到「C:/inetpub/wwwroot」資料夾。
1-5-3 在IIS安裝本書的JSP範例程式-2 Step 3:將書附光碟「Ch01」資料夾下的resin.conf檔案複製到「C:\resin-3.0.9\conf」資料夾,在resin.conf檔案設定各章節資料夾的Web應用程式,如下所示: <web-app id='/Ch04' document-directory='c:/inetpub/wwwroot/ch04'/> …………. <web-app id='/Ch14' document-directory='c:/inetpub/wwwroot/ch14'/> <web-app id='/Ch15' document-directory='c:/inetpub/wwwroot/ch15'/> Step 4:重新啟動Resin或重新開機讓Web應用程式的設定生效。