1 / 31

第 19 章 Java Servlet 程式設計

第 19 章 Java Servlet 程式設計. 19-1 Java 的 Web 應用程式架構 19-2 Java Servlet 的基礎 19-3 建立 Java Servlet 程式 19-4 Java Servlet 的執行過程. 19-1 Java 的 Web 應用程式架構 - 圖例. 昇陽 Java 平台的 Web 應用程式架構是一種結合 Servlet 、 JSP 技術和 JavaBeans 元件的三層架構,如下圖所示:. 19-1 Java 的 Web 應用程式架構 - 圖例說明.

jamil
Download Presentation

第 19 章 Java Servlet 程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第19章 Java Servlet程式設計 • 19-1 Java的Web應用程式架構 • 19-2 Java Servlet的基礎 • 19-3 建立Java Servlet程式 • 19-4 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伺服器的下載和安裝 • 19-2-3 啟動和關閉Resin伺服器

  9. 19-2-1 Servlet的基礎-說明 • Servlet程式不同於Java Applet程式是將類別檔案下載到瀏覽程式的電腦執行。Servlet程式可以擴充Web伺服器的功能,這是一種在伺服器電腦執行且由伺服器控制下執行的程式檔。 • Servlet是Java技術的標準擴充,Java Servlet API是Java Servlet程式所需的類別函式庫,一共有javax.servlet和javax.servlet.http兩個套件,其最主要的功能是處理客戶端的使用者請求。

  10. 19-2-1 Servlet的基礎-圖例

  11. 19-2-2 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伺服器的下載和安裝-下載 • Resin伺服器可以在Caucho Technology網站免費下載,在書附光碟提供resin-3.1.4.zip的ZIP格式壓縮檔,其下載網址如下所示:  http://www.caucho.com/download/

  13. 19-2-2 Resin伺服器的下載和安裝-安裝 • 安裝Resin伺服器只需使用WinZIP等工具解開下載ZIP格式壓縮檔【resin-3.1.4.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. 19-2-3 啟動和關閉Resin伺服器-說明 • Resin伺服器本身就是一套可以在Windows作業系統下獨立執行的Web伺服器,在解壓縮檔案安裝好Resin伺服器後,就可以啟動Resin伺服器,建立Java Servlet的執行環境。

  16. 19-2-3 啟動和關閉Resin伺服器-啟動 • 在Windows啟動Resin伺服器,請開啟「C:\resin-3.1.4」資料夾,按二下【httpd.exe】啟動Resin伺服器,可以看到「Resin」視窗,如下圖所示:

  17. 19-2-3 啟動和關閉Resin伺服器-測試 • 在啟動Resin伺服器後,就可以啟動瀏覽程式測試伺服器是否成功啟動,請在瀏覽程式的【網址】欄輸入下列URL網址,如下所示: http://localhost:8080/

  18. 19-2-3 啟動和關閉Resin伺服器-關閉 • 停止Resin的Web伺服器,請在「Resin」視窗選【Stop】選項,就可以停止Web伺服器的執行,按【Quit】鈕可以離開Resin伺服器。

  19. 19-3 建立Java Servlet程式 • 19-3-1 第一個Java Servlet程式 • 19-3-2 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文件 • 回應客戶端請求就是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-name>Ch19_3_1</servlet-name> </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. 19-3-2 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的執行過程-相關方法 • Servlet的執行過程的相關方法說明,如下表所示:

  31. End

More Related