Javaweb開發(fā)中的servlet知識總結(jié).doc_第1頁
Javaweb開發(fā)中的servlet知識總結(jié).doc_第2頁
Javaweb開發(fā)中的servlet知識總結(jié).doc_第3頁
Javaweb開發(fā)中的servlet知識總結(jié).doc_第4頁
Javaweb開發(fā)中的servlet知識總結(jié).doc_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java web 開發(fā)中的servlet 知識總結(jié)1. 請求( request )響應(yīng)( response)模式:用戶在瀏覽器的地址欄中輸入一個網(wǎng)址并回車,瀏覽器會向服務(wù)器發(fā)送一個HTTP請求,服務(wù)器端程序接受這個請求,并對請求做出處理,然后發(fā)出一個回應(yīng),瀏覽器收到這個回應(yīng),并把回應(yīng)的內(nèi)容顯示出來,這就是 web 應(yīng)用程序的訪問過程。2. HTTP協(xié)議:瀏覽器單擊鏈接是,會向服務(wù)器發(fā)送一段文本,告訴服務(wù)器請求的是那個網(wǎng)頁,這段文本遵循 HTTP 協(xié)議格式,包含訪問方式, HTTP 協(xié)議版本,所用的瀏覽器,訪問的地址等。3.Servlet 概述: Java web 應(yīng)用程序中所有的請求與響應(yīng)都是

2、通過servlet 來完成的,servlet 是 java web 的核心程序,所有的網(wǎng)址最終都要交給servlet 來處理, servlet 沒有main 之類的執(zhí)行方法,當(dāng)用戶訪問服務(wù)器是,服務(wù)器通過調(diào)用servlet 的某些方法來處理整個過程。4.Servlet 的工作流程:瀏覽器提交的數(shù)據(jù)是遵循HttP 協(xié)議的文本,這段文本由服務(wù)器接受并解析,封裝成 httpservletrequest 類型的 request 對象,所有的 http 頭數(shù)據(jù)都可以通過 request 的相應(yīng)方法得到。 Tomcat 同時把輸出流封裝成HTTPServletresponse 類型的 response,通

3、過設(shè)置 response 的相關(guān)屬性就可以控制輸出的內(nèi)容,然后服務(wù)器將request 和 response 作為參數(shù),調(diào)用 servlet 的相應(yīng)方法比如doPost,doGet 等。5. Servlet 的作用:主要處理業(yè)務(wù)邏輯,比如讀取數(shù)據(jù)庫,權(quán)限檢查,業(yè)務(wù)處理等。6. Servlet 接口: servlet 是一種實現(xiàn)了 javax.servlet.Servlet 接口的類, servlet 規(guī)定了特定的方法來處理特定的請求,開發(fā)者只需要實現(xiàn) servlet 的相應(yīng)方法,用戶訪問時候,服務(wù)器會調(diào)用這些方法來完成業(yè)務(wù)處理。web 程序的7. 訪問方式: servlet 是建立在 HTTP

4、規(guī)范基礎(chǔ)上的, HTTP1.1支持 options , get, post, head ,put,delete, 以及 trace 七種訪問方式,各方式的意義分別是:Get 表示查詢信息, URL中可以附少量的參數(shù)信息,但是 URL總長度不能超過 255 個字符,并且參數(shù)會顯示在瀏覽器的地址欄。Post 表示提交信息 ,一般用于提交大數(shù)據(jù)信息或者文件,提交的內(nèi)容不受長度限制,并且不會顯示在瀏覽器的地址欄。Options,put,delete,trace屬于被聲明了,但是沒有被使用的web 訪問方式,現(xiàn)在的瀏覽器也很少用到這幾種方式。8. Java web 目錄結(jié)構(gòu): web 程序部署在 tom

5、cat 下的 webapps 下面,一個 webapps 下可以部署多個 web 項目,根據(jù) servlet 規(guī)范, web 程序自己有特定的結(jié)構(gòu),部署時必須安裝這樣的目錄結(jié)構(gòu):文件夾/描述Web 應(yīng)用根目錄/WEB-INF/WEB-INF文件夾, tomcat 會隱藏該文件夾下的所有文件和文件夾,保護它們不能通過瀏覽器直接訪問。/WEB-INF/web.xmlWeb.xml,web 程序最主要的配置文件/WEB-INF/lib/Jar 文件放在該目錄下9.servlet : servlet 是一個接口,此接口定義了初始化servlet 的方法,為請求提供服務(wù)的方法和從服務(wù)器移除的方法,這些方

6、法稱為生命周期方法,它們是按以下順序調(diào)用的:構(gòu)造 servlet ,然后使用init() 方法將其初始化處理來自客戶端對service()的全部調(diào)用從服務(wù)器中取出servlet ,然后使用destory() 方法將其銷毀,最終進行垃圾回收并終止它。10. servlet 的方法:( 1) public void destory()( 2) public void init(ServletConfig config ) throws ServletException( 3) public void service(ServletRequest req,ServletResponse res)th

7、rowsServletException,java.io.IOexception(4) public ServletConfig getServletConfig()(5) public String getServletInfo()11編寫直接實現(xiàn)直接實現(xiàn)servlet :servlet 接口來編寫servlet 很不方便,需要實現(xiàn)的方法太多,真正編寫servlet 時httpservlet ,并覆蓋相應(yīng)的方法即可,一般只需要覆蓋doGet() 或 doPost()方法。在 myeclipse 中,可以之間新建一個servlet ,且默認已經(jīng)完成配置。12請求和相應(yīng):客戶端瀏覽器發(fā)出一個請求

8、,服務(wù)器做出一系列操作后做出一個響應(yīng),發(fā)送給瀏覽器,完成一次 web 過程操作, web 編程的過程就是分析客戶需要什么信息或者做出什么操作,然后進行一系列的處理,然后通過相應(yīng)結(jié)果顯示給客戶。(1)獲取 request 的變量:客戶端瀏覽器發(fā)出的請求被封裝成一個httpservletrequest對象,所有的信息包括請求的方式,請求的參數(shù),請求的地址,上傳的文件,提交的數(shù)據(jù),客戶端 Ip 地址甚至客戶端操作系統(tǒng)信息都包含在其中。getContentLength()返回請求正文的長度(以字節(jié)為單位) ,并使輸入流可以使用它,如果長度未知,則返回 1,對于 HTTP servlet,返回的值與 C

9、GI 變量 CONTENT_LENGTH的值相同。getContentType ()返回請求正文的MIME 類型,如果該類型未知,則返回null。對于HTTP servlet,返回的值與 CGI 變量CONTENT_TYPE的值相同。getLocalAddr ()返回接收請求的接口的Internet Protocol (IP)地址。getLocalPort()返回接收請求的接口的Internet Protocol (IP)端口號。getLocale ()基于 Accept-Language頭,返回客戶端將用來接受內(nèi)容的首選Locale 。如果客戶端請求沒有提供Accept-Language頭,

10、則此方法返回服務(wù)器的默認語言環(huán)境getRemotePort ()返回發(fā)送請求的客戶端或最后一個代理的Internet Protocol (IP)源端口。getMethod ()返回用于發(fā)出此請求的HTTP 方法的名稱,例如GET、 POST或 PUT。返回的值與CGI變量REQUEST_METHOD的值相同。getProtocol()以 protocol/majorVersion.minorVersion回請求使用的協(xié)議的名稱和版本。對于變量 SERVER_PROTOCOL的值相同。的形式(例如 HTTP/1.1 )返HTTP servlet,返回的值與 CGIgetQueryString()

11、返回包含在請求URL中路徑后面的查詢字符串。如果URL沒有查詢字符串,則此方法返回 null 。返回的值與 CGI 變量 QUERY_STRING的值相同。getRequestDispatcher(String path)返回一個 RequestDispatcher 對象,它充當(dāng)位于給定路徑上的資源的包裝器??梢允褂?RequestDispatcher 對象將請求轉(zhuǎn)發(fā)給資源,或者在響應(yīng)中包含資源。資源可以是動態(tài)的,也可以是靜態(tài)的。指定的路徑名可以是相對的,盡管它無法擴展到當(dāng)前 servlet 上下文之外。如果該路徑以 / 開頭,那么可以相對于當(dāng)前上下文根解釋它。如果 servlet 容器無法返

12、回 RequestDispatcher ,則此方法將返回null 。getScheme()http 、https或 ftp 。不同方返回用于發(fā)出此請求的方案的名稱,例如案具有不同的構(gòu)造 URL 的規(guī)則,這一點已在 RFC 1738中注明。( 2) 獲取相應(yīng)的變量:addCookie( Cookie cookie)將指定 cookie 添加到響應(yīng)??啥啻握{(diào)用此方法設(shè)置一個以上的cookie 。addDateHeader(String name, long date)用給定名稱和日期值添加響應(yīng)頭。該日期根據(jù)距歷元時間的毫秒數(shù)指定。此方法允許響應(yīng)頭有多個值encodeRedirectURL (Str

13、ing url)對指定 URL 進行編碼,以便在 sendRedirect 方法中使用它,如果不需要編碼,則返回未更改的 URL。此方法的實現(xiàn)包含可以確定會話 ID 是否需要在 URL 中編碼的邏輯。因為進行此確定的規(guī)則可能不同于用來確定是否對普通鏈接進行編碼的規(guī)則,所以此方法與 encodeURL 方法是分開的。encodeURL(String url)通過將會話 ID 包含在指定 URL 中對該 URL 進行編碼,如果不需要編碼,則返回未更改的 URL。此方法的實現(xiàn)包含可以確定會話 ID 是否需要在 URL 中編碼的邏輯。例如,如果瀏覽器支持 cookie ,或者關(guān)閉了會話跟蹤,則 URL

14、 編碼就不是必需的。sendError (int sc, String msg) throws java.io.IOException使用指定狀態(tài)將錯誤響應(yīng)發(fā)送到客戶端。默認情況下,服務(wù)器將創(chuàng)建類似 HTML 格式的服務(wù)器錯誤頁面的響應(yīng),該頁面包含指定消息,內(nèi)容類型設(shè)置為 text/html ,并且保持 cookie 和其他頭不變。 如果已經(jīng)對 Web 應(yīng)用程序進行了對應(yīng)于傳入狀態(tài)代碼的錯誤頁面聲明,則將優(yōu)先處理建議的 msg 參數(shù)。sendRedirect (String location) throws java.io.IOException使用指定重定向位置 URL 將臨時重定向響應(yīng)發(fā)送

15、到客戶端。此方法可以接受相對 URL;servlet 容器必須在將響應(yīng)發(fā)送到客戶端之前將相對 URL 轉(zhuǎn)換為絕對 URL。如果位置是相對的,沒有前導(dǎo) / ,則容器將相對于當(dāng)前請求 URI 對其進行解釋。如果位置是相對的,有一個前導(dǎo) / ,則容器將相對于 servlet 容器根對其進行解釋。如果已經(jīng)提交了響應(yīng),則此方法拋出IllegalStateException。使用此方法后,響應(yīng)應(yīng)該被視為已經(jīng)被提交,不能再寫入。setHeader (String name, String value)用給定名稱和值設(shè)置響應(yīng)頭。如果已經(jīng)設(shè)置了頭,則新值將重寫以前的值。 containsHeader 方法可用于

16、測試在設(shè)置其值之前頭是否存在。setStatus (int sc)設(shè)置此響應(yīng)的狀態(tài)代碼。此方法用于設(shè)置沒有錯誤時的返回狀態(tài)代碼(例如狀態(tài)代碼 SC_OK 或 SC_MOVED_TEMPORARILY)。如果有錯誤,并且調(diào)用者希望調(diào)用 Web 應(yīng)用程序中定義的錯誤頁面,則應(yīng)改用 sendError 方法。容器清除緩沖區(qū),設(shè)置Location頭,并保留cookie和其他頭setCharacterEncoding(String charset)設(shè)置將發(fā)送到客戶端的響應(yīng)的字符編碼(MIME charset),例如,將它設(shè)置為 UTF-8 。如果已通過 #setContentType 或 #setLoc

17、ale設(shè)置了字符編碼,則此方法將重寫該字符編碼。用 text/html的 String調(diào)用#setContentType 并用 UTF-8的 String 調(diào)用此方法等效于用 text/html;charset=UTF-8 的 String調(diào)用 setContentType 。getCharacterEncoding()(MIME charset) 名稱??赡芊祷赜糜诖隧憫?yīng)中發(fā)送的正文的字符編碼已使用 #setCharacterEncoding 或 #setContentType 方法顯式指定字符編碼,或使用#setLocale 方法隱式指 定它。顯式指定優(yōu)先于隱式指定。在已調(diào)用 getWri

18、ter 之后或者在已提交響應(yīng)之后調(diào)用這些方法不會對字符編碼產(chǎn)生任何影響。如果未指定字符編碼,則返回 ISO-8859-1 。getContentType ()返回用于此響應(yīng)中發(fā)送的MIME 正文的內(nèi)容類型。必須在提交響應(yīng)之前已使用 #setContentType 指定適當(dāng)?shù)膬?nèi)容類型。如果未指定內(nèi)容類型,則此方法返回 null 。如果已指定內(nèi)容類型,并且已經(jīng)如#getCharacterEncoding 中所述顯式或隱式指定了字符編碼或者已調(diào)用#getWriter , 則返回的字符串中將包含參數(shù)。如果未指定字符編碼,則省略charset參數(shù)。charsetgetOutputStream () th

19、rows java.io.IOException返回適用于在響應(yīng)中編寫二進制數(shù)據(jù)的ServletOutputStream。servlet容器不會編碼二進制數(shù)據(jù)。getWriter() throws java.io.IOException返回可將字符文本發(fā)送到客戶端的PrintWriter對象。 PrintWriter使用 #getCharacterEncoding 返回的字符編碼。如果未如getCharacterEncoding中所述指定響應(yīng)的字符編碼(即該方法只返回默認值 ISO-8859-1 ),則 getWriter會將字符編碼更新到ISO-8859-1。對 PrintWriter調(diào)用

20、flush() 將提交響應(yīng)。 setContentLength (int len)設(shè)置 HTTP servlet中響應(yīng)的內(nèi)容正文的長度,此方法設(shè)置HTTPContent-Length頭。setContentType (String type)設(shè)置將發(fā)送到客戶端的響應(yīng)的內(nèi)容類型,如果該響應(yīng)尚未提交。給定內(nèi)容類型可能包含字符編碼規(guī)范,例如 text/html;charset=UTF-8 。如果在調(diào)用 getWriter 之前調(diào)用此方法,則只根據(jù)給定內(nèi)容類型設(shè)置響應(yīng)的字符編碼。setBufferSize(int size)設(shè)置響應(yīng)正文的首選緩沖區(qū)大小。 servlet 容器將使用至少與所請求大小一樣

21、大的緩沖區(qū)??墒褂?getBufferSize 獲得使用的實際緩沖區(qū)大小。getBufferSize()返回用于該響應(yīng)的實際緩沖區(qū)大小。如果未使用任何緩沖,則此方法返回 0 。flushBuffer() throws java.io.IOException強行將緩沖區(qū)中的所有內(nèi)容寫入客戶端。調(diào)用此方法會自動提交響應(yīng),這意味著將編寫狀態(tài)代碼和頭。resetBuffer()清除響應(yīng)中底層緩沖區(qū)的內(nèi)容,而不清除頭或狀態(tài)代碼。如果已提交響應(yīng),則此方法將拋出IllegalStateException。isCommitted ()返回指示響應(yīng)是否已提交的 boolean 值。已提交的響應(yīng)已將其狀態(tài)代碼和頭

22、編寫好。( 3) 提交表單信息: Web 程序的任務(wù)就是實現(xiàn)服務(wù)器與客戶端瀏覽器之間的信息交互,客戶端提交的信息可能來自表單里的文本框,密碼框,選擇框,單選按鈕,復(fù)選框以及文本域,這些表單信息以參數(shù)的形式提交到了服務(wù)器, servlet 的任務(wù)就是準(zhǔn)確的獲取這些信息,并根據(jù)信息輸出不同的響應(yīng)。提交信息的方式包括Get 和 Post,分別觸發(fā)servlet 的 doGet 和 doPost 方法,一般而言, get 用于從服務(wù)器獲取信息(通過提交的參數(shù)指定要獲取的內(nèi)容) , post 用于向服務(wù)器提交信息, post 提交數(shù)據(jù)又包括兩種形式,普通內(nèi)容提交和帶文件上傳的提交。Post 提交個人信息

23、:由于get 方式存在各種限制,所以提交表單時選擇用post方式,把 HTML 中 Form 的 method 屬性設(shè)置成post ,瀏覽器即以post 方式提交數(shù)據(jù)。客戶端上傳文件:除了提交表單,上傳文件也是很常見的客戶端與web 程序交互的操作,電子相冊,網(wǎng)絡(luò)硬盤,郵件附件,視頻網(wǎng)站都采用web 文件上傳的形式,相對于ftp 文件上傳, web 文件上傳速度要慢一些,但是使用方便,不需要客戶端,只需要一個瀏覽器即可,而且權(quán)限也比FTP容易控制,web文件上傳也采用Post 方式,但上傳文件需要將form的enctype屬性設(shè)置為 multipart/form-data, 由于上傳的文件可能

24、會比較大,因此需要設(shè)置該參數(shù)指定瀏覽器使用二進制上傳。13 Servlet 的生命周期:每個 servlet 都有自己的生命周期,服務(wù)器來維護, servlet 的生命周期遵循 servlet 規(guī)范。servlet的生命周期由WebServlet 會在服務(wù)器啟動或第一次請求該servlet 時開始 servlet 生命周期,在服務(wù)器結(jié)束的時候結(jié)束生命周期,無論請求多少次servlet ,最多只有一個servlet 實例,多個客戶端并發(fā)請求servlet 時,服務(wù)器會啟動多個線程分別執(zhí)行servlet 的servlce()方法。14 servlet之間的跳轉(zhuǎn):servlet之間可以相互跳轉(zhuǎn),從一個servle

溫馨提示

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

評論

0/150

提交評論