Javaweb開發(fā)中的servlet知識總結(jié)_第1頁
Javaweb開發(fā)中的servlet知識總結(jié)_第2頁
Javaweb開發(fā)中的servlet知識總結(jié)_第3頁
Javaweb開發(fā)中的servlet知識總結(jié)_第4頁
Javaweb開發(fā)中的servlet知識總結(jié)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、學(xué)習(xí)好資料歡迎下載Java web開發(fā)中的servlet知識總結(jié)1. 請求(request)響應(yīng)(response)模式:用戶在瀏覽器的地址欄中輸入一個(gè)網(wǎng)址并回車,瀏覽器會(huì)向服務(wù)器發(fā)送一個(gè)HTTP請求,服務(wù)器端程序接受這個(gè)請求,并對請求做出處理,然后發(fā)出一個(gè)回應(yīng),瀏覽器收到這個(gè)回應(yīng),并把回應(yīng)的內(nèi)容顯示出來,這就是 web應(yīng)用程序的訪問過程。2. HTTP協(xié)議:瀏覽器單擊鏈接是,會(huì)向服務(wù)器發(fā)送一段文本,告訴服務(wù)器請求的是那個(gè)網(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的某些方法來處理整個(gè)過 程。4. Servlet的工作流程:瀏覽器提交的數(shù)據(jù)是遵循HttP協(xié)議的文本,這段文本由服務(wù)器接受并解析,封裝成 httpservletrequest類型的request對象,所有的http頭數(shù)據(jù)都可以通 過request的相應(yīng)方法得到。Tomcat同時(shí)把輸出流圭寸裝成 HTTPServletresponse類型的 response,通過設(shè)置response的相關(guān)屬性就可

3、以控制輸出的內(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 是一種實(shí)現(xiàn)了 javax.servlet.Servlet 接口的類,servlet 規(guī)定了特定的方法來處理特定的請求,開發(fā)者只需要實(shí)現(xiàn)servlet的相應(yīng)方法,用戶訪問web程序的時(shí)候,服務(wù)器會(huì)調(diào)用這些方法來完成業(yè)務(wù)處理。7. 訪問方式:servlet是建立在 HTTP規(guī)范基礎(chǔ)上的,HTTP1.1支持options , get, p

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

5、rvlet規(guī)范,web程序自己有特定的結(jié)構(gòu),部署時(shí)必須安裝 這樣的目錄結(jié)構(gòu):文件夾描述/Web應(yīng)用根目錄/WEB-INF/WEB-INF文件夾,tomcat會(huì)隱藏該文件夾下的所有文件和文件 夾,保護(hù)它們不能通過瀏覽器直接訪問。/WEB-INF/web.xmlWeb.xml,web程序最主要的配置文件/WEB-INF/lib/Jar文件放在該目錄下9. servlet: servlet是一個(gè)接口,此接口定義了初始化servlet的方法,為請求提供服務(wù)的方法和從服務(wù)器移除的方法,這些方法稱為生命周期方法,它們是按以下順序調(diào)用的:構(gòu)造servlet,然后使用init()方法將其初始化處理來自客戶端對

6、service ()的全部調(diào)用從服務(wù)器中取出servlet,然后使用destory()方法將其銷毀,最終進(jìn)行垃圾回收并終 止它。10. servlet 的方法:(1) public void destory()(2) public void init(ServletConfig config ) throws ServletException(3) public void service(ServletRequest req,ServletResponse res)throwsServletExcepti on,j ava.i o.IO excepti on(4) public Servlet

7、Config getServletConfig()(5) public String getServletInfo() 11 .編寫 servlet:直接實(shí)現(xiàn)servlet接口來編寫servlet很不方便,需要實(shí)現(xiàn)的方法太多,真正編寫servlet時(shí)直接實(shí)現(xiàn)httpservlet,并覆蓋相應(yīng)的方法即可,一般只需要覆蓋doGet()或doPost()方法。在myeclipse中,可以之間新建一個(gè)servlet,且默認(rèn)已經(jīng)完成配置。12. 請求和相應(yīng):客戶端瀏覽器發(fā)出一個(gè)請求,服務(wù)器做出一系列操作后做出一個(gè)響應(yīng),發(fā)送給瀏覽器,完成一次web過程操作,web編程的過程就是分析客戶需要什么信息或者做出

8、什么操作,然后 進(jìn)行一系列的處理,然后通過相應(yīng)結(jié)果顯示給客戶。(1) 獲取request的變量:客戶端瀏覽器發(fā)出的請求被封裝成一個(gè)httpservletrequest對象,所有的信息包括請求的方式,請求的參數(shù),請求的地址,上傳的文件,提交的 數(shù)據(jù),客戶端Ip地址甚至客戶端操作系統(tǒng)信息都包含在其中。getContentLength(),并使輸入流可以使用它,如果長度未知,則返回請求正文的長度(以字節(jié)為單位) 返回-,對于HTTP servlet,返回的值與 CGI變量CONTENT_LENGTH勺值相同。getContentType ()返回請求正文的 MIME類型,如果該類型未知,則返回 nu

9、ll。對于HTTP servlet,返回 的值與CGI變量CONTENT_TYP的值相同。getLocalAddr ()返回接收請求的接口的In ternet Protocol (IP)地址。getLocalPort ()返回接收請求的接口的In ternet Protocol (IP) 端口號。 getLocale ()基于Accept-La nguage頭,返回客戶端將用來接受內(nèi)容的首選 Locale 如果客戶端請求沒有提供Accept-La nguage頭,則此方法返回服務(wù)器的 默認(rèn)語言環(huán)境getRemotePort ()返回發(fā)送請求的客戶端或最后一個(gè)代理的In ternet Proto

10、col (IP) 源端口。getMethod ()返回用于發(fā)出此請求的 HTTP方法的名稱,例如 GET POST或 PUT。返 回的值與CGI變量REQUEST_METH(的值相同。getProtocol ()以 protocol/majorVersion.minorVersion的形式(例如 HTTP/1.1 )返回請求使用的協(xié)議的名稱和版本。 對于HTTPservlet,返回的值與CGI變 量SERVER_PROTOC的值相同。getQueryString ()返回包含在請求URL中路徑后面的查詢字符串。如果 URL沒有查詢字符 串,則此方法返回null。返回的值與CGI變量QUERY_

11、STRING值相同。getRequestDispatcher (String path)返回一個(gè)RequestDispatcher對象,它充當(dāng)位于給定路徑上的資源的包裝器。 可以使用RequestDispatcher 對象將請求轉(zhuǎn)發(fā)給資源,或者在響應(yīng)中包 含資源。資源可以是動(dòng)態(tài)的,也可以是靜態(tài)的。指定的路徑名可以是相對的,盡管它無法擴(kuò)展到當(dāng)前servlet上下文之夕卜。如果該路徑以/開頭,那么可以相對于當(dāng)前上下文根解釋它。如 果servlet容器無法返回RequestDispatcher,則此方法將返回 null 。getScheme()返回用于發(fā)出此請求的方案的名稱,例如http、https

12、或ftp。不同方案具有不同的構(gòu)造URL的規(guī)則,這一點(diǎn)已在 RFC 1738中注明。(2)獲取相應(yīng)的變量:addCookie( Cookie cookie)將指定cookie添加到響應(yīng)??啥啻握{(diào)用此方法設(shè)置一個(gè)以上的cookie。addDateHeader(Stri ng n ame, l ong date)用給定名稱和日期值添加響應(yīng)頭。該日期根據(jù)距歷元時(shí)間的毫秒數(shù)指定。 此方法允許響應(yīng)頭有多個(gè)值en codeRedirectURL (Stri ng url)對指定URL進(jìn)行編碼,以便在sendRedirect 方法中使用它,如果不需 要編碼,則返回未更改的 URL此方法的實(shí)現(xiàn)包含可以確定會(huì)話I

13、D是否需要在URL中編碼的邏輯。因?yàn)檫M(jìn)行此確定的規(guī)則可能不同于用來確定 是否對普通鏈接進(jìn)行編碼的規(guī)則,所以此方法與en codeURL方法是分開的。encodeURLString url)通過將會(huì)話ID包含在指定URL中對該URL進(jìn)行編碼,如果不需要編碼, 則返回未更改的URL此方法的實(shí)現(xiàn)包含可以確定會(huì)話ID是否需要在URL 中編碼的邏輯。例如,如果瀏覽器支持cookie,或者關(guān)閉了會(huì)話跟蹤,則URL編碼就不是必需的。sendError (int sc, String msg) throws java.io.IOException使用指定狀態(tài)將錯(cuò)誤響應(yīng)發(fā)送到客戶端。默認(rèn)情況下,服務(wù)器將創(chuàng)建類似

14、 HTML格式的服務(wù)器錯(cuò)誤頁面的響應(yīng),該頁面包含指定消息,內(nèi)容類型設(shè) 置為text/html,并且保持cookie和其他頭不變。 如果已經(jīng)對 Web應(yīng) 用程序進(jìn)行了對應(yīng)于傳入狀態(tài)代碼的錯(cuò)誤頁面聲明,則將優(yōu)先處理建議的 msg參數(shù)。sendRedirect (String location) throws java.io.IOException使用指定重定向位置URL將臨時(shí)重定向響應(yīng)發(fā)送到客戶端。此方法可以 接受相對URL; servlet容器必須在將響應(yīng)發(fā)送到客戶端之前將相對URL轉(zhuǎn)換為絕對URL。如果位置是相對的,沒有前導(dǎo)/,則容器將相對于當(dāng) 前請求URI對其進(jìn)行解釋。如果位置是相對的,有一

15、個(gè)前導(dǎo)/,則容器將相對于servlet容器根對其進(jìn)行解釋。如果已經(jīng)提交了響應(yīng),則此方法拋出lllegalStateExceptio n。使用此方法后,響應(yīng)應(yīng)該被視為已經(jīng)被提交,不能再寫入。setHeader (String name, String value)用給定名稱和值設(shè)置響應(yīng)頭。如果已經(jīng)設(shè)置了頭,則新值將重寫以前的值。 con tai nsHeader方法可用于測試在設(shè)置其值之前頭是否存在。setstatus (int sc)設(shè)置此響應(yīng)的狀態(tài)代碼。此方法用于設(shè)置沒有錯(cuò)誤時(shí)的返回狀態(tài)代碼(例如狀態(tài)代碼 SC_OK或 SC_MOVED_TEMPORARIL如果有錯(cuò)誤,并且調(diào)用 者希望調(diào)用W

16、eb應(yīng)用程序中定義的錯(cuò)誤頁面,則應(yīng)改用sendError方法。 容器清除緩沖區(qū),設(shè)置Location 頭,并保留cookie和其他頭setCharacterE ncod ing (Stri ng charset)設(shè)置將發(fā)送到客戶端的響應(yīng)的字符編碼(MIME charset),例如,將它設(shè)置為UTF-8。如果已通過#setContentType或#setLocale設(shè)置了字符編碼, 則此方法將重寫該字符編碼。用text/html 的String 調(diào)用#setContentType并用UTF-8的String調(diào)用此方法等效于用text/html; charset=UTF-8的 String 調(diào)用

17、setContentType。getCharacterEncoding ()返回用于此響應(yīng)中發(fā)送的正文的字符編碼(MIME charset)名稱??赡芤咽褂?setCharacterEncoding或#setContentType方法顯式指定字符編碼,或使用 #setLocale方法隱式指 定它。顯式指定優(yōu)先于隱式指定。在已調(diào)用getWriter 之后或者在已提交響應(yīng)之后調(diào)用這些方法不會(huì)對字符編碼產(chǎn)生任何影響。 如果未指定字符編碼,則返回ISO-8859-1。getContentType ()返回用于此響應(yīng)中發(fā)送的MIME正文的內(nèi)容類型。必須在提交響應(yīng)之前已 使用#setContentType

18、指定適當(dāng)?shù)膬?nèi)容類型。如果未指定內(nèi)容類型,則此方法返回null。如果已指定內(nèi)容類型,并且已經(jīng)如#getCharacterEncoding中所述顯式或隱式指 定了字符編碼或者已調(diào)用 #getWriter,則返回的字符串中將包含 charset參數(shù)。 如果未指定字符編碼,則省略charset參數(shù)。getOutputStream () throws java.io.IOException返回適用于在響應(yīng)中編寫二進(jìn)制數(shù)據(jù)的ServletOutputStream。servlet容器不會(huì)編碼二進(jìn)制數(shù)據(jù)。getWriter () throws java.io.IOException返回可將字符文本發(fā)送到客戶端

19、的PrintWriter對象。PrintWriter使用 #getCharacterEncoding 返回的字符編碼。如果未如 getCharacterEncoding 中所述指定響應(yīng)的字符編碼(即該方法只返回默認(rèn)值ISO-8859-1 ),則getWriter 會(huì)將字符編碼更新到ISO-8859-1。對Prin tWriter 調(diào)用flush() 將提交響應(yīng)。setContentLength (int len)設(shè)置HTTP servlet中響應(yīng)的內(nèi)容正文的長度,此方法設(shè)置HTTPConten t-Le ngth 頭。setContentType (String type)設(shè)置將發(fā)送到客戶端的

20、響應(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容器將使用至少與所請求大小 一樣大的緩沖區(qū)??墒褂胓etBufferSize獲得使用的實(shí)際緩沖區(qū)大小。getBufferSize ()返回用于該響應(yīng)的實(shí)際緩沖區(qū)大小。如果未使用任何緩沖,則此方法返回0。flushBuffer () throws java.i o.lO Excepti on強(qiáng)行將緩沖

21、區(qū)中的所有內(nèi)容寫入客戶端。調(diào)用此方法會(huì)自動(dòng)提交響應(yīng),這意味著將編寫狀態(tài)代碼和頭。resetBuffer ()清除響應(yīng)中底層緩沖區(qū)的內(nèi)容,而不清除頭或狀態(tài)代碼。如果已提交響應(yīng), 則此方法將拋出 IllegalStateException。isCommitted ()返回指示響應(yīng)是否已提交的boolea n值。已提交的響應(yīng)已將其狀態(tài)代碼和頭編寫好。(3)提交表單信息:Web程序的任務(wù)就是實(shí)現(xiàn)服務(wù)器與客戶端瀏覽器之間的信息交互,客戶端提交的信息可能來自表單里的文本框,密碼框,選擇框,單選按鈕,復(fù)選框 以及文本域,這些表單信息以參數(shù)的形式提交到了服務(wù)器,servlet的任務(wù)就是準(zhǔn)確的獲取這些信息,并根

22、據(jù)信息輸出不同的響應(yīng)。提交信息的方式包括 Get和Post,分別觸發(fā)servlet的doGet和doPost方法,一般而 言,get用于從服務(wù)器獲取信息(通過提交的參數(shù)指定要獲取的內(nèi)容),post用于向服務(wù)器提交信息,post提交數(shù)據(jù)又包括兩種形式,普通內(nèi)容提交和帶文件上傳的提 交。Post提交個(gè)人信息:由于 get方式存在各種限制,所以提交表單時(shí)選擇用post方式,把HTML中Form的method屬性設(shè)置成post,瀏覽器即以post方式提交 數(shù)據(jù)??蛻舳松蟼魑募撼颂峤槐韱危蟼魑募彩呛艹R姷目蛻舳伺cweb程序交互的操作,電子相冊,網(wǎng)絡(luò)硬盤,郵件附件,視頻網(wǎng)站都采用web文件上傳的形

23、式,相對于ftp文件上傳,web文件上傳速度要慢一些,但是使用方便,不 需要客戶端,只需要一個(gè)瀏覽器即可,而且權(quán)限也比FTP容易控制,web文件上傳也采用Post方式,但上傳文件需要將form的enctype屬性設(shè)置為multipart/form-data,由于上傳的文件可能會(huì)比較大,因此需要設(shè)置該參數(shù)指定瀏覽器使用二進(jìn)制上傳。13. Servlet的生命周期:每個(gè) servlet都有自己的生命周期,servlet的生命周期由 Web 服務(wù)器來維護(hù),servlet的生命周期遵循servlet規(guī)范。Servlet會(huì)在服務(wù)器啟動(dòng)或第一次請求該servlet時(shí)開始servlet生命周期,在服務(wù)器結(jié)束的時(shí)候結(jié)束生命周期,無論請求多少次servlet,最多只有一個(gè)servlet實(shí)例,多個(gè)客戶端并發(fā)請求 servlet時(shí),服務(wù)器會(huì)啟動(dòng)多個(gè)線程分別執(zhí)行servlet的servlce()方法。14. servlet之間的跳轉(zhuǎn):servlet之間可以相互跳轉(zhuǎn),從一個(gè)servlet程序跳向

溫馨提示

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

最新文檔

評論

0/150

提交評論