Java程序設(shè)計:第27章Servlet_第1頁
Java程序設(shè)計:第27章Servlet_第2頁
Java程序設(shè)計:第27章Servlet_第3頁
Java程序設(shè)計:第27章Servlet_第4頁
Java程序設(shè)計:第27章Servlet_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第第27章章 Servlet Servlet是在JSP之前推出的,但是因其使用不方便,所以Sun公司有推出了JSP,在JSP在運行前還需要被編譯成Servlet,非常有必要對Servlet相關(guān)知識進行了解,本章主要通過示例展示Servlet的使用方法,并介紹其生命周期。27.1 Servlet簡介簡介 Servlet是運行在服務(wù)器端,由Web服務(wù)器進行加載,用來響應(yīng)客戶端請求的Java代碼模塊。Servlet是一種獨立于平臺和協(xié)議的服務(wù)器端的Java應(yīng)用程序,可以生成動態(tài)的Web頁面。javax.servlet和javax.servlet.http包為編寫Servlet提供了接口和類。所有的S

2、ervlet都必須實現(xiàn)Servlet接口,該接口定義了生命周期方法。 Java Web應(yīng)用程序中所有的請求-響應(yīng)都是由Servlet來完成的。Servlet是Java Web的核心程序,所有的網(wǎng)址最終都交給Servlet來處理。Servlet并沒有main之類的執(zhí)行方法。當用戶訪問服務(wù)器的時候,Tomcat是通過調(diào)用Servlet的某些方法來完成整個處理過程的。27.1.1 Servlet接口接口 Servlet實現(xiàn)了javax.servlet.Servlet接口,此接口中規(guī)定了特定的方法來處理特定的請求,開發(fā)中只需要實現(xiàn)Servlet的相關(guān)方法即可。在用戶對Web程序進行訪問時,Tomcat

3、來調(diào)用這些方法,以完成業(yè)務(wù)的處理。27.1.2 目錄結(jié)構(gòu)目錄結(jié)構(gòu)Web程序一般都會部署在Tomcat的webapps/下面,而在web項目中,也有自己特定的目錄機構(gòu):/web:應(yīng)用根目錄/WEB-INF/(WEB-INF文件夾):Tomcat會隱藏該文件夾下的所有文件及文件夾,保護它們不能通過瀏覽器直接訪問。/WEB-INF/web.xml web.xml文件:web程序最主要的配置文件。/WEB-INF/classes/:class類文件都放在該文件下面,包括Servlet類。/WEB-INF/lib/:jar文件都放在該文件下面27.1.3 編寫編寫Servlet程序程序 Servlet是

4、使用應(yīng)用程序設(shè)計接口以及相關(guān)類和方法的Java程序,是位于Web服務(wù)器內(nèi)部的服務(wù)器端的Java程序,Servlet使用Web服務(wù)器加載,并且該Web服務(wù)器必須是包含支持Servlet的Java虛擬機。Servlet技術(shù)的優(yōu)點是高效性、方便、功能強大、可移植性好、節(jié)省投資。 不過對于編寫Servlet卻不容易,直接實現(xiàn)Servlet接口來編寫Servlet很不方便,需要實現(xiàn)的方法太多。編寫Servlet時直接繼承HttpServlet,并覆蓋需要的方法即可。一般只覆蓋doGet與doPost方法。27.2 Servlet的生命周期的生命周期 每一個Servlet都有一個生命周期,該生命周期是由W

5、eb服務(wù)器來進行維護,并且Servlet得生命周期遵循Servlet規(guī)范。服務(wù)器在啟動或者第一次請求Servlet時初始化一個Servlet對象,然后使用這個Servlet去處理所有的客戶端請求,在服務(wù)器關(guān)閉時才會去銷毀這個Servlet對象。 每個Servlet首先要進行初始化,然后才能進行相應(yīng)的邏輯操作。進行初始化,需要調(diào)用的方法是init()方法。當加載Servlet時,首先由Servlet容器調(diào)用Servlet的init()方法,進行初始化。在之前JSP對象的介紹中,有一個JSP內(nèi)置對象config。它是主要是用來配置Servlet的初始參數(shù)的。27.3 HttpServlet類類27

6、.3.1 doGET 當FORM中的method屬性設(shè)置為“GET”時,瀏覽器就會以GET方式提交表單數(shù)據(jù),表單會根據(jù)Action中的設(shè)置判斷將數(shù)據(jù)提交到什么Servlet或者JSP。 使用GET的方式進行表單的提交,瀏覽器會把表單的內(nèi)容組織成一個字符串,變量之間用“&”進行連接,然后以Servlet路徑加“?”加查詢字符串的形式獲取服務(wù)器內(nèi)容。使用這種方式并不安全,因為所有需要傳輸?shù)臄?shù)據(jù)會顯示在瀏覽器的地址欄上。27.3.2 doPost 使用POST提交表單,只需要將FORM中的methods屬性設(shè)置為POST,瀏覽器就會以POST的方式提交表單內(nèi)容。在POST提交表單時,表單的內(nèi)

7、容不會再瀏覽器中顯示,因此使用POST提交方式比較安全,適用于提交一些密碼等信息。 Servlet可以通過HttpServletRequest對性的getPrarameter(String param)方法來獲取param對應(yīng)的參數(shù)值。下面示例是通過POST的方式來提交用戶信息的表單,其中有用于填寫信息的頁面“post.html”和用于進行數(shù)據(jù)處理的Servlet“PostServlet.java”27.4 HttpServletResponse類及狀態(tài)響應(yīng)碼類及狀態(tài)響應(yīng)碼 所有的Servlet響應(yīng)都要實現(xiàn)ServletResponse接口,在ServletResponse接口中有一些方法,這

8、些方法如表27.1。27.5 Servlet中的請求與相應(yīng)中的請求與相應(yīng) 當客戶端項服務(wù)器發(fā)送請求,服務(wù)器端會根據(jù)請求進行處理,然后做出一個相應(yīng),再返回給客戶端,這就完成了一次Web操作過程。這個過程就是通過請求來分析客戶需要的信息作出相應(yīng)操作,然后通過進行一些列的處理,最后通過相應(yīng)結(jié)果顯示給客戶。 服務(wù)器對客戶端瀏覽器做出的響應(yīng)被封裝成為一個HttpServletResponse對象。要對瀏覽器進行操作,只需要操作HttpServletResponse對象就可以了??梢酝ㄟ^HttpServletResponse.getWriter()方法來獲得一個PrintWriter對象,然后可以使用該對

9、象進行輸出信息。一下示例為生成隨機圖片的驗證碼。其中Servlet為PrintServlet.java,顯示頁面是Identity.html。27.6 Servlet之間的跳轉(zhuǎn)之間的跳轉(zhuǎn) Servlet和Servlet之間可以實現(xiàn)跳轉(zhuǎn),Servlet的跳轉(zhuǎn)可以將一個項目的模塊進行劃分,例如,一個項目開發(fā)中,使用業(yè)務(wù)時由一個Servlet處理,使用數(shù)據(jù)庫的操作可以用另外的Servlet進行處理,然后再跳轉(zhuǎn)到另外一個Servlet中將處理結(jié)果打印出來。27.6.1 Forward Forward是通過RequestDispatcher對象的方法forward(HttpServletRequest

10、req, HttpServletResponse res)來實現(xiàn)的。RequestDispatcher可以通過HttpServletRequest的getRequestDispatcher()方法獲得。27.6.2 Redirect 重定向是利用服務(wù)器返回的狀態(tài)碼來實現(xiàn)的。客戶端瀏覽器請求服務(wù)器的時候,服務(wù)器端會返回一個狀態(tài)碼。服務(wù)器端通過HttpServletResponse的setStatus(int statuss)方法設(shè)置狀態(tài)碼。27.6.3 Refresh 使用自動刷新功能可以實現(xiàn)自動跳轉(zhuǎn)到另一個頁面,也可以實現(xiàn)相隔一段時間之后刷新本頁面,在Servlet中尅通過HttpServle

11、tResponse來設(shè)置Header屬性實現(xiàn)自動刷新效果。方法代碼為:response.setHeader(“Refresh”, “1000; URL=http:/localhost:8080/servlet/example.htm”); 其中1000為設(shè)置刷新的時間,單位是毫秒。URL參數(shù)指定的網(wǎng)址就是1秒鐘之后跳轉(zhuǎn)的頁面。當URL設(shè)置的路徑為Servlet自己的路徑時,就會每隔一秒鐘自動刷新本頁面一次。這種情況可以用于設(shè)郵箱,以達到及時收郵件的效果。27.7 JavaBean JavaBean可以很好的將業(yè)務(wù)邏輯與顯示代碼相分離。使得業(yè)務(wù)邏輯的工程師與界面工程師各司其職,減少協(xié)同開發(fā)的成本

12、。本章主要介紹JavaBean的使用。27.7.1 JavaBean使用使用 JavaBean類就是普通的Java類,也被之為POJO(普通Java對象,Plain Ordinary Java Object),是Java程序設(shè)計中廣泛應(yīng)用的一種設(shè)計模式。JavaBean中只有私有屬性和與之對應(yīng)的setter/getter方法。 JavaBean是描述Java的軟件組件模型,類似于Microsoft的COM組件概念,在Java模型中,通過JavaBean可以擴充Java程序的功能;通過JavaBeans的組合可以快速的生成新的應(yīng)用程序,對于程序原來說使用JavaBean可以實現(xiàn)代碼的重復(fù)利用。使得程序的維護更加簡單。27.7.2 JSP中的中的JavaBea

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論