servlet規(guī)范定義的Servlet生命周期和servlet的基礎(chǔ)_第1頁(yè)
servlet規(guī)范定義的Servlet生命周期和servlet的基礎(chǔ)_第2頁(yè)
servlet規(guī)范定義的Servlet生命周期和servlet的基礎(chǔ)_第3頁(yè)
servlet規(guī)范定義的Servlet生命周期和servlet的基礎(chǔ)_第4頁(yè)
servlet規(guī)范定義的Servlet生命周期和servlet的基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1'。web服務(wù)器只能處理靜態(tài)頁(yè)面,比如瀏覽器要求訪問(wèn)某個(gè)靜態(tài)頁(yè)面(即 html 文件),服務(wù)器可以產(chǎn)看該文件,并返回使用Servlet技術(shù),可以使web服務(wù)器能夠處理動(dòng)態(tài)資源的請(qǐng)求。即請(qǐng)求需 要通過(guò)某種計(jì)算。組件規(guī)范:組件指的是,符合某種規(guī)范的。并且可以部署在容器中的軟件模塊容器,是一個(gè)程序,用來(lái)提供組件的運(yùn)行環(huán)境,并且,管理組件的生命周期,同時(shí)也必須符合某種規(guī)范。容器一般那要提供基礎(chǔ)服務(wù)(比如網(wǎng)絡(luò)通訊服務(wù)),而組件一般只要提供邏輯服務(wù)2。 "Servlet 的特點(diǎn):1 ) .只能使用 java 語(yǔ)言來(lái)開發(fā)2 ) .不依賴于容器3 ).因?yàn)镾ervlet是一個(gè)java類,所

2、以,能做java類所做的事件,包括訪問(wèn) 數(shù)據(jù)庫(kù)等4 。 "如何開發(fā)一個(gè)Servlet?step1 寫一個(gè) java 類,實(shí)現(xiàn)一個(gè)接口 Servlet/繼承一個(gè)抽象類HttpServlet。step2 編譯step3 打包建立一個(gè)文件夾,比如appname,然后,在該文件夾下面建立如下的結(jié)構(gòu):appnameWEB-INFclasses(.clas岐件)lib(可選,.jar文件)web.xml(部署描述文件)step4 部署將 step3 中產(chǎn)生的文件夾或者是使用 jar 命令壓縮之后生成的 .war 文件拷貝到服務(wù)器特定的文件夾下面。step5 啟動(dòng)服務(wù)器,訪問(wèn)http:/ip:po

3、rt/appname/servlet-url5 。 tomcat6 ) 安裝將 tomcat 壓縮文件解壓到 /home/soft01 下。2)配置環(huán)境變量cd /home/soft01vi .bash_profile添加修改如下環(huán)境變量a,請(qǐng)求數(shù)據(jù)包JAVA_HOME:jdk 的主目錄CATALINA_HOME:tomcat 的主目錄PATH:tomcat 的主目錄 /binexport JAVA_HOME CATALINA_HOME PATH使環(huán)境變量生效. .bash_profile3)啟動(dòng)服務(wù)器cd tomcat 的主目錄 /binsh startup.sh在瀏覽器地址欄輸入 http

4、:/localhost:804)關(guān)閉服務(wù)器sh shutdown.sh5.1 ) http 協(xié)議:hypertext transport protocal ,定義了瀏覽器與web 服務(wù)器之間數(shù)據(jù)傳輸?shù)姆绞揭约皵?shù)據(jù)格式2)數(shù)據(jù)傳輸?shù)姆绞絘,瀏覽器向服務(wù)器發(fā)送建立連接的請(qǐng)求b ,瀏覽器依據(jù)http 協(xié)議,將請(qǐng)求數(shù)據(jù)打包,發(fā)送給web 服務(wù)器c, web 服務(wù)器處理請(qǐng)求,將處理結(jié)果依據(jù)http 協(xié)議打包,發(fā)送給瀏覽器d , web 服務(wù)器關(guān)閉連接3)數(shù)據(jù)格式請(qǐng)求行請(qǐng)求方式(get/post)請(qǐng)求資源的路徑協(xié)議的版本(1 ."0/1 ."1) 消息頭由 w3c 定義的一些通訊規(guī)則,

5、瀏覽器與服務(wù)器都會(huì)遵守。比如,服務(wù)器可以向?yàn)g覽器發(fā)送contect-type 消息頭,告訴服務(wù)器返回的數(shù)據(jù)類型及編碼。實(shí)體內(nèi)容如果使用 post 方式發(fā)請(qǐng)求,請(qǐng)求參數(shù)及值會(huì)存放到這里。如果是get 方式,則請(qǐng)求參數(shù)會(huì)放到請(qǐng)求資源路徑之后b,響應(yīng)數(shù)據(jù)包狀態(tài)行協(xié)議版本狀態(tài)碼的描述消息頭由 w3c 定義的一些通訊規(guī)則,瀏覽器與服務(wù)器都會(huì)遵守。比如,服務(wù)器可以向?yàn)g覽器發(fā)送contect-type 消息頭,告訴服務(wù)器返回的數(shù)據(jù)類型及編碼。實(shí)體內(nèi)容服務(wù)器返回的結(jié)果(瀏覽器會(huì)取出這兒的數(shù)據(jù),并且顯示出來(lái)).6.get/set 請(qǐng)求1 )哪些是 get 的請(qǐng)求a.在瀏覽器地址欄直接輸入一個(gè)地址b.表單默認(rèn)提交

6、方式c.點(diǎn)擊連接get 方式的缺點(diǎn):a. get請(qǐng)求會(huì)將請(qǐng)求參數(shù)添加到請(qǐng)求資源路徑的后面,所以, get方式不能 夠向服務(wù)器提交大量的數(shù)據(jù)b. get 請(qǐng)求會(huì)將請(qǐng)求參數(shù)直接顯示在瀏覽器地址欄,所以,不安全。2).哪一些是 post 請(qǐng)求a.form method="post"post 請(qǐng)求會(huì)將請(qǐng)求參數(shù)添加到實(shí)體內(nèi)容里,所以,理論上,提交的數(shù)據(jù)是沒(méi)有限制的post 請(qǐng)求時(shí),請(qǐng)求參數(shù)不會(huì)顯示在瀏覽器地址欄,相對(duì)安全(但是,并沒(méi)有對(duì)請(qǐng)求參數(shù)做任何的加密處理,如果要提交關(guān)鍵數(shù)據(jù),需要加密處理)7,中文問(wèn)題1 。 html 文件,添加<metahttp-equiv="

7、content-type"content="text/html;charset=utf-8">需要注意:charset 聲明的編碼一定要與實(shí)例保存該文件的編碼一致。當(dāng)表單以 post 方式提交時(shí),瀏覽器會(huì)對(duì)表單中的數(shù)據(jù)進(jìn)行編碼(采用打開表單所在的頁(yè)面的編碼)2 .在Servlet類里面a.如果要讀取參數(shù),應(yīng)該使用 request.setCharacterEncoding("utf-8”煤作用是 設(shè)置request讀取請(qǐng)求參數(shù)時(shí),解碼時(shí)所使用的編碼格式風(fēng)格 b.如果要將中文輸 出到頁(yè)面 response.setContectType("te

8、xt/html;charset=utf-8");這句話有兩個(gè)作用:一 ,設(shè)置printWriter 之輸出數(shù)據(jù)時(shí),所使用的編碼。二,生成一個(gè)消息頭告訴瀏覽器返回的是一個(gè)html ,并且,應(yīng)該以u(píng)tf-8 來(lái)顯示頁(yè)面。c.如果中文數(shù)據(jù)保存到數(shù)據(jù)庫(kù),要保存數(shù)據(jù)庫(kù)支持中文,對(duì)于 jdbc驅(qū)動(dòng)程 序,在 url 后面添加useUnicode=true&characterEncoding=utf-8;8.重定向1 . 什么是重定向 ?服務(wù)器向?yàn)g覽器發(fā)送一個(gè)狀態(tài)碼302 及一個(gè)消息頭 location ,瀏覽器會(huì)立即向 location 所指定的地址發(fā)送新的請(qǐng)求。2 .編程respons

9、e.sendRedirect(String url);url 是要求瀏覽器跳轉(zhuǎn)的地址。servlet 有良好的生存期的定義,包括如何加載、實(shí)例化、初始化、處理客 戶端請(qǐng)求以及如何被移除。這個(gè)生存期由javax.servlet.Servlet接口的init,service和 destroy 方法表達(dá)1 、 " 加載和實(shí)例化容器負(fù)責(zé)加載和實(shí)例化一個(gè)servlet。實(shí)例化和加載可以發(fā)生在引擎啟動(dòng)的 時(shí)候,也可以推遲到容器需要該servlet 為客戶請(qǐng)求服務(wù)的時(shí)候。首先容器必須先定位servlet類,在必要的情況下,容器使用通常的Java類加載工具加載該servlet,可能是從本機(jī)文件系統(tǒng),

10、也可以是從遠(yuǎn)程文件系統(tǒng)甚 至其它的網(wǎng)絡(luò)服務(wù)。容器加載servlet類以后,它會(huì)實(shí)例化該類的一個(gè)實(shí)例。需 要注意的是可能會(huì)實(shí)例化?喔鰲道縹桓解ervlet類因?yàn)橛胁煌某跏紖?shù)而有多個(gè)定義,或者servlet實(shí)現(xiàn)SingleThreadModel而導(dǎo)致容器為之生成一個(gè)實(shí) 例池。實(shí)例池滿足這一點(diǎn)。如果 servlet是分布式應(yīng)用的一部分,那么,那么容 器可能在該應(yīng)用分布的每個(gè)JVM中都維護(hù)一個(gè)實(shí)例池。如果開發(fā)者使用 synchronized關(guān)鍵字定義service方法(或者是doGet和doPost),容器將排隊(duì)處理 請(qǐng)求,這是由底層的java運(yùn)行時(shí)系統(tǒng)要求的。我們強(qiáng)烈推薦開發(fā)者不要同步 serv

11、ice方法或者HTTPServle他勺諸如doGet和 doPost這樣的服務(wù)方法。3.2、”處理請(qǐng)求中的異常servlet在對(duì)請(qǐng)求進(jìn)行服務(wù)的時(shí)候有可能拋出ServletException或者UnavailableException異常。ServletException表明在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò) 誤容器應(yīng)該使用合適的方法清除該請(qǐng)求。UnavailableException表明servlet不能 對(duì)請(qǐng)求進(jìn)行處理,可能是暫時(shí)的,也可能是永久的。如果 UnavailableException 指明是永久性的,那么容器必須將 servlet從服務(wù)中移除,調(diào)用它的destroy方 法并釋放它的實(shí)例。

12、如果指明是暫時(shí)的,那么容器可以選擇在異常信息里面指 明的這個(gè)暫時(shí)無(wú)法服務(wù)的時(shí)間段里面不向它發(fā)送任何請(qǐng)求。在這個(gè)時(shí)間段里面 被被拒絕的請(qǐng)求必須使用 SERVICE_UNAVAILABLE(503)返回狀態(tài)進(jìn)行響應(yīng)并且應(yīng)該攜帶稍后重試(Retry-After)的響應(yīng)頭表明 不能服務(wù)只是暫時(shí)的。容器也可以選擇不對(duì)暫時(shí)性和永久性的不可用進(jìn)行區(qū)分 而全部當(dāng)作永久性的并移除拋出異常的servleto3.3線程安全開發(fā)者應(yīng)該注意容器實(shí)現(xiàn)的請(qǐng)求和響應(yīng)對(duì)象(注:即容器實(shí)現(xiàn)的HttpServletRequest和HttpServletRespones8沒(méi)有被保證是線 程安全的,這就意味著他們只能在請(qǐng)求處理線程的范圍內(nèi)被使用,這些對(duì)象不能被其它執(zhí)行線程所引用,因?yàn)橐玫男袨槭遣淮_定的。4、服務(wù)結(jié)束容器沒(méi)有被要求將一個(gè)加載的servlet保存多長(zhǎng)時(shí)間,因此一個(gè)servlet實(shí)例可能只在容器中存活了幾毫秒,當(dāng)然也可能是其它更長(zhǎng)的任意時(shí)間(但是肯定會(huì)短于容器的生存期)當(dāng)容器決定將之移除時(shí)(原因可能是保存內(nèi)存資源或者自己被關(guān)閉),那么它必須允許servlet 釋放它正在使用的任何資源并保存任何永久狀態(tài)(這個(gè)過(guò)程通過(guò)調(diào)用 destroy 方法

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論