第19章 Java Servlet程式設計 19-1 Java的Web應用程式架構 19-2 Java Servlet的基礎

Slides:



Advertisements
Similar presentations
LOGO 第 9 章 Java Servlet 和 JSP 编程 孙焘. 重点: servlet 编程原理 1 servlet 的基础类与编程实现 2 JSP 编程原理 3 JSP 的常用语法 4.
Advertisements

第一單元 建立java 程式.
MVC Servlet与MVC设计模式.
J2EE Struts 和Spring 的区别.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Topics 應用架構 學習路徑 熱門議題 相關認證.
第9章 过滤器和监听器技术 过滤器(Filter)和监听器(Listener)是两种特殊的Servlet技术。过滤器可以对用户的请求信息和响应信息进行过滤,常被用于权限检查和参数编码统一设置等。监听器可以用来对Web应用进行监听和控制的,增强Web应用的事件处理能力。 本章主要介绍过滤器和监听器的编程接口、基本结构、信息配置、部署和运行,最后通过案例说明过滤器和监听器的典型应用。
JSP程式設計 基本概論 歐陽芳泉 Fang-Chuan Ou Yang
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
JSP程式設計 基本概論 歐陽芳泉 Fang-Chuan Ou Yang
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
Java簡介.
JDK 安裝教學 (for Win7) Soochow University
第1章 認識Arduino.
資料庫管理 操作DBMS 指導教授:楊維邦  助教:廖皓翔.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
類別(class) 類別class與物件object.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
Windoop操作步驟 於作業系統Windows 10 專業版.
網頁切換移轉 JS vs. ASP.NET.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
連結資料庫管理系統.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
雲端運算的基石(2) 虛擬化技術實作(XP篇─上)
檔案與磁碟的基本介紹.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
Java 程式設計 講師:FrankLin.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
網頁切換移轉 JS vs. ASP.NET.
電腦攻擊與防禦 使用電腦教室VMware軟體說明.
虛擬機器 下載QEMU Windows版 (0.9.1) 下載Kqemu Windows版 安裝QEMU 安裝Kqumu
Java程式設計 Eclipse.
Topic Introduction—RMI
第一單元 建立java 程式.
VS.NET 2003 IDE.
TB-054A  周天穎 編著 儒林圖書公司 發行.
Ch20. 計算器 (Mac 版本).
第 19 章 XML記憶體執行模式.
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
資料來源 2 網路過濾軟體之安裝說明 資料來源 2.
JSP程序设计 第9章 Servlet简介.
第十二章 过滤器.
表格(HTML – FORM).
12-0.開發步驟檢查 游峰碩.
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
VS.NET 2003 IDE.
如何使用Gene Ontology 網址:
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
MicroSim pspice.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
Text To Speech (TTS, 文字轉 語音)、讀簡訊 靜宜大學資管系 楊子青
MiRanda Java Interface v1.0的使用方法
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
安裝JDK 配置windows win7 環境變數
連結資料庫 MYSQL.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
SQLite資料庫 靜宜大學資管系 楊子青.
Chapter 4 Multi-Threads (多執行緒).
第21章 Spring 的MVC框架 Spring不但一个很好的集成框剪,它还提供了构建Web应用程序的全功能MVC模块。Spring 的MVC框架非常强大并不逊色于其他专业的Web框架,如Struts、WebWork。但在国内Spring MVC应用的并不是特别多,原因可能是Struts太深入人心的缘故吧。
Unix指令4-文字編輯與程式撰寫.
InputStreamReader Console Scanner
Presentation transcript:

第19章 Java Servlet程式設計 19-1 Java的Web應用程式架構 19-2 Java Servlet的基礎

19-1 Java的Web應用程式架構-圖例 昇陽Java平台的Web應用程式架構是一種結合Servlet、JSP技術和JavaBeans元件的三層架構,如下圖所示:

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檔案中的資料。

19-1 Java的Web應用程式架構-Model 1 Type 1 Model 1 Type 1適合小型Web應用程式的開發,這是一種純粹使用JSP程式來建立展示層、控制層和商業邏輯層的三層架構,如下圖所示:

19-1 Java的Web應用程式架構- Model 1 Type 2 Model 1 Type 2也適合小型Web應用程式的開發,這是使用JSP程式來建立展示層和控制層;JavaBeans建立商業邏輯層,如下圖所示:

19-1 Java的Web應用程式架構- Model 2 Model 2適用在大型Web應用程式的開發,使用JSP建立展示層View;Servlet作為控制層來控制應用程式執行的Controller;JavaBeans負責商業邏輯層的資料存取和處理,即Model,如下圖所示:

19-1 Java的Web應用程式架構-JavaBeans JavaBeans是一種JavaBeans API的類別檔案,這是一種遵循特定和定義完善規則所建立的類別檔案,其目的是建立可重複使用的軟體元件。 JavaBeans也稱為Beans,Beans的目的是將建立的軟體元件,使用在「視覺化開發工具」(Visual Builder Tool, VBT),可以讓開發工具直接將現成的Bean元件新增到其它的Java應用程式。

19-2 Java Servlet的基礎 19-2-1 Servlet的基礎 19-2-2 Resin伺服器的下載和安裝

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

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

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程式。

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

19-2-2 Resin伺服器的下載和安裝-安裝 安裝Resin伺服器只需使用WinZIP等工具解開下載ZIP格式壓縮檔【resin-3.1.4.zip】到硬碟C:即可,預設安裝路徑為:「C:\resin-3.1.4\」,如下圖所示:

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\類別名稱。

19-2-3 啟動和關閉Resin伺服器-說明 Resin伺服器本身就是一套可以在Windows作業系統下獨立執行的Web伺服器,在解壓縮檔案安裝好Resin伺服器後,就可以啟動Resin伺服器,建立Java Servlet的執行環境。

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

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

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

19-3 建立Java Servlet程式 19-3-1 第一個Java Servlet程式

19-3-1 第一個Java Servlet程式-說明 Java Servlet程式是實作Servlet介面或繼承HttpServlet類別的類別檔案,在本章主要是繼承HttpServlet類別來建立Java Servlet程式。 Java Servlet的基本架構是繼承自HttpServlet類別,例如:在Java Servlet輸出字串的網頁內容。

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>"); ……………

19-3-1 第一個Java Servlet程式-介面物件 在doGet()方法需要處理ServletException的例外處理,傳入2個介面物件HttpServletRequest和HttpServletResponse的說明如下所示: HttpServletRequest:客戶端到伺服端請求的介面物件,如果有表單欄位送出資料,就是使用此物件讀取。 HttpServletResponse:伺服端回應到客戶端的介面物件,通常是用來回應輸出結果的HTML文件。

19-3-1 第一個Java Servlet程式-輸出HTML文件 response.setContentType( "text/html;charset=Big5"); request.setCharacterEncoding("Big5"); 程式碼設定輸出和輸入的編碼都是Big5,回應文件類型為HTML文件,參數值是MIME資料類型。接著就可以從HttpServletResponse物件取得輸出串流,如下所示: PrintWriter out = response.getWriter();

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>

19-3-2 Java Servlet的同步處理-說明 Java Servlet支援多執行緒,在伺服器載入單一Servlet物件就可以回應多位使用者的HTTP請求,換句話說,Servlet程式需要考量同步問題,以避免2或多位使用者同時存取實例變數、方法或Servlet造成的資料存取錯誤。

19-3-2 Java Servlet的同步處理-1 同步程式區塊(A Block of Synchronized Code) 同步程式區塊可以避免多位使用者同時存取實例變數,例如:網頁訪客計數的pageCount變數,如下所示: synchronized(this) { pageCount++; } 上述程式碼使用synchronized關鍵字同步實例變數pageCount的存取,在同一時間只允許一位使用者將pageCount變數加一。

19-3-2 Java Servlet的同步處理-2 同步方法(A Synchronized Method) 同步方法是同步一整個方法,例如:同一時間只允許一位使用者新增資料庫的圖書記錄資料,所以addBook()方法就是一個同步方法,如下所示: public static synchronized int addBook() throws SQLException { ……… }

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 { ……… }

19-4 Java Servlet的執行過程-說明 Java Servlet的執行過程是由Web伺服器的Servlet容器/引擎(Servlet Container/Engine)所控制,Servlet容器載入Servlet、執行Servlet接受請求和刪除Servlet的過程,如下圖所示:

19-4 Java Servlet的執行過程-相關方法

End