Download presentation
Presentation is loading. Please wait.
1
第19章 Java Servlet程式設計 19-1 Java的Web應用程式架構 19-2 Java Servlet的基礎
2
19-1 Java的Web應用程式架構-圖例 昇陽Java平台的Web應用程式架構是一種結合Servlet、JSP技術和JavaBeans元件的三層架構,如下圖所示:
3
19-1 Java的Web應用程式架構-圖例說明
MVC設計模型是將應用程式分成三層View、Controller和Model,如下所示: 展示層(Presentation Layer):展示層是與使用者互動的使用者介面,這是在客戶端瀏覽程式實際看到的顯示結果或表單介面,我們可以使用HTML、Java Applet或JSP程式來產生展示層的使用者介面,或顯示Web應用程式的執行結果,即MVC設計模型的View。 控制層(Control Layer):控制層是用來連接展示層和商業邏輯層,以Servlet或JSP作為控制層來控制應用程式的執行,即作為控制資料處理流程的控制者Controller,負責接收使用者的HTTP請求。 商業邏輯層(Business Logic Layer):商業邏輯層負責Web應用程式的資料存取和處理,即Model,我們可以使用JavaBeans和JSP來建立商業邏輯層,用來存取和處理儲存在資料庫、文字檔案和XML檔案中的資料。
4
19-1 Java的Web應用程式架構-Model 1 Type 1
Model 1 Type 1適合小型Web應用程式的開發,這是一種純粹使用JSP程式來建立展示層、控制層和商業邏輯層的三層架構,如下圖所示:
5
19-1 Java的Web應用程式架構- Model 1 Type 2
Model 1 Type 2也適合小型Web應用程式的開發,這是使用JSP程式來建立展示層和控制層;JavaBeans建立商業邏輯層,如下圖所示:
6
19-1 Java的Web應用程式架構- Model 2
Model 2適用在大型Web應用程式的開發,使用JSP建立展示層View;Servlet作為控制層來控制應用程式執行的Controller;JavaBeans負責商業邏輯層的資料存取和處理,即Model,如下圖所示:
7
19-1 Java的Web應用程式架構-JavaBeans
JavaBeans是一種JavaBeans API的類別檔案,這是一種遵循特定和定義完善規則所建立的類別檔案,其目的是建立可重複使用的軟體元件。 JavaBeans也稱為Beans,Beans的目的是將建立的軟體元件,使用在「視覺化開發工具」(Visual Builder Tool, VBT),可以讓開發工具直接將現成的Bean元件新增到其它的Java應用程式。
8
19-2 Java Servlet的基礎 19-2-1 Servlet的基礎 19-2-2 Resin伺服器的下載和安裝
9
Servlet的基礎-說明 Servlet程式不同於Java Applet程式是將類別檔案下載到瀏覽程式的電腦執行。Servlet程式可以擴充Web伺服器的功能,這是一種在伺服器電腦執行且由伺服器控制下執行的程式檔。 Servlet是Java技術的標準擴充,Java Servlet API是Java Servlet程式所需的類別函式庫,一共有javax.servlet和javax.servlet.http兩個套件,其最主要的功能是處理客戶端的使用者請求。
10
Servlet的基礎-圖例
11
Resin伺服器的下載和安裝-說明 Java Servlet程式需要支援Servlet的Web伺服器才能夠執行,稱為Servlet容器(Servlet Container)或Servlet引擎(Servlet Engine)。 目前巿面上有多套應用程式或伺服器,可以讓Apache和IIS等Web伺服器執行Servlet程式,一般來說,支援Servlet就一定支援JSP,稱為JSP容器(JSP Container)或JSP引擎(JSP Engine)。 在本章和第20章都是使用Resin伺服器來開發和測試Java Servlet和JSP程式。
12
19-2-2 Resin伺服器的下載和安裝-下載 http://www.caucho.com/download/
Resin伺服器可以在Caucho Technology網站免費下載,在書附光碟提供resin zip的ZIP格式壓縮檔,其下載網址如下所示:
13
Resin伺服器的下載和安裝-安裝 安裝Resin伺服器只需使用WinZIP等工具解開下載ZIP格式壓縮檔【resin zip】到硬碟C:即可,預設安裝路徑為:「C:\resin-3.1.4\」,如下圖所示:
14
19-2-2 Resin伺服器的下載和安裝-安裝Java Servlet範例的類別檔
請將書附光碟「Ch19」資料夾的「ROOT」子資料夾複製至「C:\resin-3.1.4\webapps」下同名的「ROOT」資料夾。其類別檔是位在「ROOT\WEB-INF\classes」資料夾。 在「ROOT\WEB-INF」資料夾下的web.xml定義本章執行的Java Servlet,它是使用<servlet>標籤定義Servlet,<servlet-mapping>標籤定義執行的URL網址為:servlet\類別名稱。
15
啟動和關閉Resin伺服器-說明 Resin伺服器本身就是一套可以在Windows作業系統下獨立執行的Web伺服器,在解壓縮檔案安裝好Resin伺服器後,就可以啟動Resin伺服器,建立Java Servlet的執行環境。
16
啟動和關閉Resin伺服器-啟動 在Windows啟動Resin伺服器,請開啟「C:\resin-3.1.4」資料夾,按二下【httpd.exe】啟動Resin伺服器,可以看到「Resin」視窗,如下圖所示:
17
啟動和關閉Resin伺服器-測試 在啟動Resin伺服器後,就可以啟動瀏覽程式測試伺服器是否成功啟動,請在瀏覽程式的【網址】欄輸入下列URL網址,如下所示:
18
啟動和關閉Resin伺服器-關閉 停止Resin的Web伺服器,請在「Resin」視窗選【Stop】選項,就可以停止Web伺服器的執行,按【Quit】鈕可以離開Resin伺服器。
19
19-3 建立Java Servlet程式 19-3-1 第一個Java Servlet程式
20
19-3-1 第一個Java Servlet程式-說明
Java Servlet程式是實作Servlet介面或繼承HttpServlet類別的類別檔案,在本章主要是繼承HttpServlet類別來建立Java Servlet程式。 Java Servlet的基本架構是繼承自HttpServlet類別,例如:在Java Servlet輸出字串的網頁內容。
21
19-3-1 第一個Java Servlet程式-程式架構
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Ch19_3_1 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(); out.println("<html>"); ………… out.println("</body></html>"); ……………
22
19-3-1 第一個Java Servlet程式-介面物件
在doGet()方法需要處理ServletException的例外處理,傳入2個介面物件HttpServletRequest和HttpServletResponse的說明如下所示: HttpServletRequest:客戶端到伺服端請求的介面物件,如果有表單欄位送出資料,就是使用此物件讀取。 HttpServletResponse:伺服端回應到客戶端的介面物件,通常是用來回應輸出結果的HTML文件。
23
19-3-1 第一個Java Servlet程式-輸出HTML文件
response.setContentType( "text/html;charset=Big5"); request.setCharacterEncoding("Big5"); 程式碼設定輸出和輸入的編碼都是Big5,回應文件類型為HTML文件,參數值是MIME資料類型。接著就可以從HttpServletResponse物件取得輸出串流,如下所示: PrintWriter out = response.getWriter();
24
19-3-1 第一個Java Servlet程式-定義Servlet
在Resin執行Java Servlet需要在web.xml檔案定義<servlet>和<servlet-mapping>標籤,如下所示: <servlet> <servlet-name>Ch19_3_1</servlet-name> <servlet-class>Ch19_3_1</servlet-class> </servlet> <servlet-mapping> <url-pattern>servlet/Ch19_3_1</url-pattern> </servlet-mapping>
25
19-3-2 Java Servlet的同步處理-說明
Java Servlet支援多執行緒,在伺服器載入單一Servlet物件就可以回應多位使用者的HTTP請求,換句話說,Servlet程式需要考量同步問題,以避免2或多位使用者同時存取實例變數、方法或Servlet造成的資料存取錯誤。
26
19-3-2 Java Servlet的同步處理-1 同步程式區塊(A Block of Synchronized Code)
同步程式區塊可以避免多位使用者同時存取實例變數,例如:網頁訪客計數的pageCount變數,如下所示: synchronized(this) { pageCount++; } 上述程式碼使用synchronized關鍵字同步實例變數pageCount的存取,在同一時間只允許一位使用者將pageCount變數加一。
27
19-3-2 Java Servlet的同步處理-2 同步方法(A Synchronized Method)
同步方法是同步一整個方法,例如:同一時間只允許一位使用者新增資料庫的圖書記錄資料,所以addBook()方法就是一個同步方法,如下所示: public static synchronized int addBook() throws SQLException { ……… }
28
Java Servlet的同步處理-3 單執行緒的Servlet(A Servlet of Single Thread Model) Servlet程式只需實作SingleThreadModel介面,就成為單執行緒的Servlet,如下所示: public class Ch19_3_2 extends HttpServlet implements SingleThreadModel { ……… }
29
19-4 Java Servlet的執行過程-說明
Java Servlet的執行過程是由Web伺服器的Servlet容器/引擎(Servlet Container/Engine)所控制,Servlet容器載入Servlet、執行Servlet接受請求和刪除Servlet的過程,如下圖所示:
30
19-4 Java Servlet的執行過程-相關方法
31
End
Similar presentations