《Java Web程序設(shè)計及實踐》課件第1章 Servlet基礎(chǔ)_第1頁
《Java Web程序設(shè)計及實踐》課件第1章 Servlet基礎(chǔ)_第2頁
《Java Web程序設(shè)計及實踐》課件第1章 Servlet基礎(chǔ)_第3頁
《Java Web程序設(shè)計及實踐》課件第1章 Servlet基礎(chǔ)_第4頁
《Java Web程序設(shè)計及實踐》課件第1章 Servlet基礎(chǔ)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目標-1-了解動態(tài)網(wǎng)站開發(fā)的相關(guān)技術(shù)理解Servlet的運行原理及生命周期掌握Servlet的編寫及部署掌握Servlet對表單數(shù)據(jù)的處理掌握Servlet對HTTP請求報頭的處理動態(tài)網(wǎng)站技術(shù)概述動態(tài)網(wǎng)站技術(shù)有以下特點:交互性:網(wǎng)頁會根據(jù)用戶的要求和選擇而動態(tài)改變和響應(yīng)自動更新:無須手動更新HTML文檔,便會自動生成新的頁面隨機性:不同的時間、不同的用戶訪問同一網(wǎng)頁時可能產(chǎn)生不同的頁面。動態(tài)網(wǎng)站技術(shù)常見的有以下幾種:PHPASP/ASP.NETJSP-2-動態(tài)網(wǎng)站并不是指具有動畫功能的網(wǎng)站,而是指基于數(shù)據(jù)庫架構(gòu)的網(wǎng)站,一般由大量的動態(tài)網(wǎng)頁(如JSP)、后臺處理程序(如Servlet)和用于存儲內(nèi)容的數(shù)據(jù)庫組成。動態(tài)網(wǎng)站一般采用動靜結(jié)合的原則:網(wǎng)站中頻繁更新的內(nèi)容可采用動態(tài)網(wǎng)頁;不需要更新的則可采用靜態(tài)網(wǎng)頁。通常一個網(wǎng)站既包含動態(tài)網(wǎng)頁也包含靜態(tài)網(wǎng)頁。B/S架構(gòu)B/S架構(gòu)(Browser/Server)是指基于瀏覽器/服務(wù)器的架構(gòu)在B/S架構(gòu)中,用戶的請求與服務(wù)器的響應(yīng)需要通過網(wǎng)絡(luò)在計算機之間傳輸,不同計算機之間使用HTTP(HyperTextTransferProtocol)協(xié)議進行通信HTTP是超文本傳輸協(xié)議,包含命令和傳輸信息,不僅用于Web訪問,也可以用于其他因特網(wǎng)/內(nèi)聯(lián)網(wǎng)應(yīng)用系統(tǒng)之間的通信,從而實現(xiàn)各種資源信息的超媒體訪問集成-3-JavaEEJavaEE(JavaEnterpriseEdition)JavaEE是基于分布式和多層結(jié)構(gòu)的企業(yè)級應(yīng)用開發(fā)規(guī)范和標準在企業(yè)應(yīng)用開發(fā)中不僅會使用傳統(tǒng)的JavaEE組件(例如JDBC、Servlet、EJB等),還會使用一些輕量級的框架結(jié)構(gòu)(例如Struts、Hibernate和Spring),以提高企業(yè)開發(fā)效率-4-Servlet簡介Servlet是JavaEE規(guī)范的重要組成部分Servlet程序具有以下特點:

高效方便功能強大良好的可移植性-5-編寫Servlet編寫Servlet需要遵循其規(guī)范:繼承HttpServlet覆蓋doGet()、doPost()方法之一或全部示例:1.1HelloServlet.java-6-//創(chuàng)建一個Servlet類,繼承HttpServletpublicclassHelloServletextendsHttpServlet{ //重寫doGet()

publicvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ //設(shè)置響應(yīng)到客戶端的文本類型為HTML response.setContentType("text/html"); //獲取輸出流

PrintWriterout=response.getWriter(); out.println("HelloWorld"); }}配置ServletServlet需要在web.xml文件中配置<servlet>和<servlet-mapping>元素通過name匹配<url-pattern>元素指定了訪問地址-7-<servlet> <servlet-name>Hello</servlet-name> <servlet-class> com.haiersoft.ch01.HelloServlet </servlet-class></servlet><servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern></servlet-mapping>http://localhost:8080/ch01/helloServlet生命周期方法Servlet生命周期的3個方法:init():用于Servlet初始化。當容器創(chuàng)建Servlet實例后,會自動調(diào)用此方法service():用于服務(wù)處理。當客戶端發(fā)出請求,容器會自動調(diào)用此方法進行處理,并將處理結(jié)果響應(yīng)到客戶端destroy():用于銷毀Servlet。當容器銷毀Servlet實例時自動調(diào)用此方法,釋放Servlet實例,清除當前Servlet所持有的資源-8-Servlet生命周期階段裝載Servlet創(chuàng)建Servlet實例初始化服務(wù)銷毀示例:代碼ServletLife.java-9-Servlet處理請求數(shù)據(jù)HttpServletRequest接口的數(shù)據(jù)讀取方法以POST方式提交的Form表單數(shù)據(jù)示例:1.2LoginServlet.java查詢字符串示例:代碼

querystr.html和TestURL.java方法說明getParameter(String)單值讀取,返回與指定參數(shù)相應(yīng)的值。參數(shù)區(qū)分大小寫,參數(shù)沒有相應(yīng)的值則返回空String,如果沒有該參數(shù)則返回null。對于多個同一參數(shù)名則返回首次出現(xiàn)的值getParameterValues(String)多個值的讀取,返回字符串的數(shù)組,對于不存在的參數(shù)名,返回值為null,如果參數(shù)只有單一的值,則返回只有一個元素的數(shù)組getPammeterNames()返回Enumeration的形式參數(shù)名列表,如果當前請求中沒有參數(shù),返回空的Enumeration(不是null)getReader()/getInputStream()獲得輸入流,如果以這種方式讀取數(shù)據(jù),不能保證可以同時使用getParameter()。當數(shù)據(jù)來自于上載的文件時,可以用此方法-10-Servlet數(shù)據(jù)處理主要包括讀取請求數(shù)據(jù)、HTTP請求報頭的處理和HTTP響應(yīng)報頭的設(shè)置包括GET方式提交的表單數(shù)據(jù)和一般的URL參數(shù)HTTP請求報頭請求報頭名稱說明Accept瀏覽器可接受的MIME類型Accept-Charset瀏覽器可接受的字符集Accept-Encoding瀏覽器能夠進行解碼的數(shù)據(jù)編碼方式Accept-Language瀏覽器所希望的語言種類Authorization授權(quán)信息Connection表示是否需要持久連接Content-Length表示請求消息正文的長度Cookie向服務(wù)器返回服務(wù)器之前設(shè)置的cookie信息Host初始URL中的主機和端口Referer來源的URLUser-Agent瀏覽器相關(guān)信息-11-HTTP請求報頭是指客戶端向服務(wù)器發(fā)送的HTTP請求中的頭信息,常見報頭如下:Servlet讀取請求報頭HttpServletRequest的getHeader()方法是讀取請求報頭的通用方式HttpServletRequest還提供了針對常用報頭的專門訪問方法

示例:1.3HttpHeadServlet.java方法名描述getAuthType()描述了客戶采用的身份驗證方案getContentLength()返回請求中Content-LengthHTTP標題的值上下文長度getContentType()返回請求中Content-TypeHTTP標題的值上下文長度getHeader()返回指定標題域的值getHeaderNames()返回一個包含所請求頭名稱的Enumeration類型的值getPathInfo()返回servlet路徑以后的查詢字符串以前的所有路徑信息getPathTranslated()檢索servlet(不包括查詢字符串)后面的路徑信息并把它轉(zhuǎn)交成一個真正的路徑getRequesURI()返回URL中主機和端口之后,表單數(shù)據(jù)之前的部分getQueryString()返回一個URL查詢字符串getRemoteAddr()返回遠程服務(wù)器地址getRemoteHost()返回遠程服務(wù)器名getRemoteUser()返回由HTTP身份驗證提交的用戶名getMethod()返回請求中使用的Http方法getServerName()返回服務(wù)器名getServerPort()返回服務(wù)器端口號getProtocol()返回服務(wù)器協(xié)議名getCookies()返回Cookie對象數(shù)組-12-HTTP響應(yīng)報頭響應(yīng)頭說明Content-Encoding用于標明頁面在傳輸過程中的編碼方式Content-Type用于設(shè)置servlet輸出的MIME(MultipurposeInternetMailExtension)類型。在Tomcat安裝目錄下的conf目錄下,有一個web.xml文件,里面列出了幾乎所有的MIME類型和對應(yīng)的文件擴展名。正式注冊的MIME類型格式為maintype/subtype,如text/html、text/javascript等;而未正式注冊的類型格式為maintype/x-subtype,如audio/x-mpeg等Content-Language用于標明頁面所使用的語言,例如en、en-us等Expires用于標明頁面的過期時間,可以使用這個來在指定的時間內(nèi)取消頁面緩存(cache)Refresh這個報頭表明瀏覽器自動重新調(diào)用最新的頁面-13-HTTP響應(yīng)報頭是指服務(wù)器向客戶端發(fā)送的HTTP響應(yīng)中的頭信息,常見報頭如下:Servlet設(shè)置響應(yīng)報頭HttpServletResponse的setHeader()方法是設(shè)置響應(yīng)報頭的通用方式HttpServletResponse還提供了針對常用報頭的專門方法示例:1.4DateServlet.java響應(yīng)頭說明setContentType(Stringmime)該方法用于設(shè)置Content-Type報頭。使用這個方法可以設(shè)置Servlet的MIME類型,甚至字符編碼(Encoding),特別是在需要將Servlet的輸出設(shè)置為非HTML格式的時候setContentLength(intlength)設(shè)置Content-Length報頭addCookie(Cookiec)設(shè)置Set-Cookie報頭(有關(guān)Cookie的內(nèi)容請參見第二章)sendRedirect(Stringlocation)設(shè)置Location報頭,讓Servlet跳轉(zhuǎn)到指定的url-14-setHeader(StringheaderName,StringheaderValue)請求轉(zhuǎn)發(fā)請求轉(zhuǎn)發(fā)請求轉(zhuǎn)發(fā)是指將請求再轉(zhuǎn)發(fā)到另一資源(一般為JSP或Servlet)。此過程依然在同一個請求范圍內(nèi),轉(zhuǎn)發(fā)后瀏覽器地址欄內(nèi)容不變請求轉(zhuǎn)發(fā)使用RequestDispatcher接口中的forward()方法來實現(xiàn),該方法可以把請求轉(zhuǎn)發(fā)到另外一個資源,并讓該資源對瀏覽器的請求進行響應(yīng)-15-請求轉(zhuǎn)發(fā)和重定向是Servlet處理完數(shù)據(jù)后進行頁面跳轉(zhuǎn)的兩種主要方式RequestDispatcherrd=request.getRequestDispatcher(path);rd.forward(request,response);示例:1.D.5ForwardServlet.java和MyServlet.java重定向重定向重定向是指頁面重新定位到某個新地址,之前的請求失效,進入一個新的請求,且跳轉(zhuǎn)后瀏覽器地址欄內(nèi)容將變?yōu)樾碌闹付ǖ刂分囟ㄏ蚴峭ㄟ^HttpServletResponse對象的sendRedirect()來實現(xiàn),該方法用于生成302響應(yīng)碼和Location響應(yīng)頭,從而通知客戶端去重新訪問Location響應(yīng)頭中指定的URL,相當于瀏覽器重新發(fā)送一個請求-16-示例:1.5RedirectServlet.java和MyServlet.javapubilcvoidsendRedirect(java.lang.Stringlocation)重定向和請求轉(zhuǎn)發(fā)請求轉(zhuǎn)發(fā)和重定向區(qū)別如下:forward()只能將請求轉(zhuǎn)發(fā)給同一個Web應(yīng)用中的組件,而sendRedirect方法不僅可以重定向到當前應(yīng)用程序中的其他資源,還可以重定向到其他站點的資源。sendRedirect()方法重定向的訪問過程結(jié)束后,瀏覽器地址欄中顯示的URL會發(fā)生改變,由初始的URL地址變成重定向的目標URL;而調(diào)用forward()方法的請求轉(zhuǎn)發(fā)過程結(jié)束后,瀏覽器地址欄保持初始的URL地址不變。forward()方法的調(diào)用者與被

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論