已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
浪潮軟件技術(shù)研究中心-高林,2004年8月1日,Servlet介紹,Servlet簡單介紹Servlet基礎(chǔ)Servlet例子講解Servlet高級功能實(shí)戰(zhàn),目錄,J2ee應(yīng)用模型圖,Servlet簡單介紹歷史背景,最初的網(wǎng)頁靜態(tài)沒有搜索引擎,沒有客戶與服務(wù)器之間的交互。CGI出現(xiàn)CGI結(jié)合html表單,提供了一種機(jī)制,實(shí)現(xiàn)了客戶與服務(wù)器的雙向交互。實(shí)踐中發(fā)現(xiàn)的問題:性能較差,速度慢,靈活性差,可移植性差(尤為重要)。新技術(shù)的出現(xiàn)新技術(shù)競相取代CGI來作為建立動(dòng)態(tài)web站點(diǎn)的標(biāo)準(zhǔn)接口。其中Servlet成為一種較為受歡迎的Internet開發(fā)技術(shù)。,Servlet簡單介紹關(guān)于Servlet,Servlet是用java編寫的服務(wù)器的軟件組件,能夠動(dòng)態(tài)的擴(kuò)展http服務(wù)器的功能、工作方式是后臺(tái)運(yùn)行,將處理結(jié)果返回給用戶。Servlet給出了一個(gè)框架,用于創(chuàng)建執(zhí)行請求/響應(yīng)的應(yīng)用程序。瀏覽器發(fā)送一個(gè)請求給服務(wù)器,服務(wù)器把請求送給一個(gè)Servlet,這是Servlet就能處理(數(shù)據(jù)庫,運(yùn)算等)請求,并構(gòu)造一個(gè)合適的響應(yīng)(通常是html格式數(shù)據(jù))返回給客戶。Servlet不只是支持Web服務(wù)器,它能夠支持所有支持Java和ServletAPI的服務(wù)器的功能。ftp,telnet,郵件,和新聞服務(wù)器。Servlet是獨(dú)立于http協(xié)議的。,Servlet簡單介紹Servlet的優(yōu)點(diǎn),能夠以進(jìn)程運(yùn)行傳統(tǒng)的CGI是一個(gè)請求一個(gè)進(jìn)程。Servlet是本身以進(jìn)程運(yùn)行,但是對每個(gè)請求是在服務(wù)器進(jìn)程空間里獨(dú)立的線程所處理的。線程之間的輕度的上下文關(guān)聯(lián),比起進(jìn)程之間的重度的上下文關(guān)聯(lián)開銷要小的多。要快的多。已編譯與腳本語言不同,Servlet首先被編譯成Java字節(jié)代碼,提高了速度。在編譯期間的錯(cuò)誤和類型檢測,避免的很多問題,易于開發(fā)和調(diào)試。防崩潰Servlet是由Java編寫的,是由Java虛擬機(jī)執(zhí)行的。JVM不允許Servlet直接訪問內(nèi)存區(qū)。最后一個(gè)防止崩潰的措施是JVM會(huì)將異常送到調(diào)用鏈的頂端。一直到它被捕獲。如果沒被捕獲,JVM自己會(huì)處理。而不是崩潰。,Servlet簡單介紹Servlet的優(yōu)點(diǎn)(續(xù)),跨平臺(tái)因?yàn)槭怯肑ava編寫的,Java本身就是跨平臺(tái)的??绶?wù)器很多Web服務(wù)器支持本地Servlet。那些不支持本地Servlet的服務(wù)器,一般會(huì)有第3方附加系統(tǒng)可允許服務(wù)器加載和運(yùn)行Servlet持久性Servlet是可持久使用的對象。加載之后,一直保持在內(nèi)存重,直到由明確的指令把它刪除調(diào)。這樣Servlet只要被實(shí)例話一次,就可以服務(wù)多次請求。動(dòng)態(tài)加載Servlet能夠從本地后網(wǎng)絡(luò)中動(dòng)態(tài)加載。可以服務(wù)啟動(dòng)的時(shí)候加載,也可以是等到調(diào)用的時(shí)候再加載。(資源有時(shí)候很少用的可以這樣做),Servlet簡單介紹Servlet的優(yōu)點(diǎn)(續(xù)),易于部署Servlet是一個(gè)標(biāo)準(zhǔn)的部署模型??蓴U(kuò)展性多線程系統(tǒng)開銷小。面向?qū)ο骃ervlet把所有的必要的信息和功能封裝到精心設(shè)計(jì)的對象中。比如請求,響應(yīng),會(huì)話,cookies。通過基本的調(diào)用,這些對象提供的對信息和功能的基本訪問,Servlet簡單介紹Servlet的優(yōu)點(diǎn)(續(xù)),獨(dú)立于協(xié)議它是擴(kuò)展Http服務(wù)器的功能,但是不僅僅限于這個(gè)協(xié)議。相反,Servlet是完全獨(dú)立于協(xié)議之外的。它可以支持ftp,smtp,pop3,telnet等協(xié)議。不管這些是標(biāo)準(zhǔn)的,還是開發(fā)者自己創(chuàng)建的。安全性1:無效內(nèi)存訪問調(diào)用和類型嚴(yán)重沖突是不可能的。2:Servlet利用服務(wù)器的安全管理器來實(shí)現(xiàn)特定的安全策略的定制和強(qiáng)制實(shí)施3:一個(gè)Servlet可以訪問每個(gè)客戶請求中的所有信息。Servlet可以對這些數(shù)據(jù)進(jìn)行安全性檢查。用Java編寫具有Java的所有優(yōu)點(diǎn)。,Servlet介紹功能,Servlet在幾乎所有能想象到的方面擴(kuò)展的服務(wù)器的功能。允許客戶和服務(wù)器之間由真正的雙向交互。部分功能:1:基于客戶的實(shí)質(zhì)請求,動(dòng)態(tài)構(gòu)建并返回一個(gè)HTML文件2:處理用戶的html表單輸入并返回適當(dāng)?shù)捻憫?yīng)3:公布由許多用戶提交的信息而保障多用戶之間的通信4:提供用戶身份驗(yàn)證和其他安全機(jī)制5:與服務(wù)器資源如數(shù)據(jù)庫,其他應(yīng)用程序和文件交互。以返回有用的信息到客戶6:等等。(你所能想象到的關(guān)于增強(qiáng)或者擴(kuò)展服務(wù)器的功能的其他任何方法),Servlet基礎(chǔ)主要內(nèi)容,現(xiàn)在主要介紹Servlet結(jié)構(gòu)和語法已經(jīng)調(diào)用它的方式1:基本Servlet結(jié)構(gòu)2:Servlet生命期3:講解兩個(gè)Servlet示例,Servlet基礎(chǔ)基本Servlet結(jié)構(gòu),基類HttpServlet,GenericServlet我們編寫的Servlet功能實(shí)現(xiàn),都需要繼承上面的其中一個(gè)。他們本身的關(guān)系就是HttpServlet繼承了GenericServlet。所有Servlet至少要實(shí)現(xiàn)覆蓋(override)一個(gè)方法。在其中可實(shí)現(xiàn)自定義功能。如果繼承GenericServlet,則定要實(shí)現(xiàn)service(ServletRequestrequest,ServletResponseresponse)如果繼承HttpServlet則可以選擇實(shí)現(xiàn)HttpServlet提供的幾個(gè)方法或者實(shí)現(xiàn)其父類GenericServlet的service方法,Servlet基礎(chǔ)Servlet生命周期,Servlet生命周期:1、裝載和激活:依據(jù)部署參數(shù)裝載類、設(shè)置上下文參數(shù)2、實(shí)例化:調(diào)用init()3、服務(wù):調(diào)用service()重復(fù)服務(wù)4、銷毀:調(diào)用destory(),Servlet基礎(chǔ)GenericServlet,init()Servlet首次加載的時(shí)候調(diào)用一次。和構(gòu)造函數(shù)類似。用于初始化資源。service()每個(gè)請求都會(huì)調(diào)用destroy()Servlet被卸載時(shí)執(zhí)行的方法。由于釋放資源ServletRequest接口介紹,Servlet基礎(chǔ)ServletRequest接口,getParameter(String)setAttribute(String,Object)getAttribute(String)用于非httpservlet,客戶請求信息放到該對象中,傳遞到servlet的service()方法中,Servlet基礎(chǔ)ServleResponse接口,用于非httpservlet,用于定制一個(gè)響應(yīng)的必須方法,包含在ServletResponse對象中,這個(gè)對象將被傳遞到servlet的service()方法getWriter();getOutputStream();,Servlet基礎(chǔ)HttpServlet,我們可以選擇實(shí)現(xiàn)其中的方法。service方法是其父類GenericServlet的方法。是必定執(zhí)行的。如果沒有覆蓋這個(gè)方法,該方法會(huì)調(diào)用其他一個(gè)方法來執(zhí)行客戶請求。(這是基于苦戶請求的類型)init()destroy(),Servlet基礎(chǔ)HttpServletRequest,HttpServletResponse,HttpServletRequest繼承ServletRequest接口用于httpservlet,在客戶請求中將傳遞的信息封裝到HttpServlet中,這個(gè)對象被傳遞到servlet的service方法中,之后被傳遞到doGet(),doPost()方法中。重要方法:getCookies();getSession();getMethod();getQueryString();HttpServletResponse繼承ServletResponse接口用于定制一個(gè)響應(yīng)的必須方法包含在其對象中。同樣傳遞到servlet的service()方法中,之后被傳遞到doGet(),doPost()方法中。重要方法:addCookies();sendRedirect();/重定向,Servlet例子1通用的Servlet,web.xml配置,http:/ip:port/appnane/Time,Servlet例子2HttpServlet,Web.xml配置,Servlet高級功能內(nèi)容,線程安全的servelt過濾器filterhttp重定向cookies狀態(tài)和會(huì)話管理請求轉(zhuǎn)發(fā),服務(wù)器端引用,servlet鏈接,線程安全的servlet,線程安全如果應(yīng)用程序不管在它的進(jìn)程空間中有多少個(gè)并行線程運(yùn)行,它的行為總是可預(yù)知的,那么這個(gè)應(yīng)用程序就是線程安全的。實(shí)現(xiàn)方法:確保沒有線程能夠在另外一個(gè)線程改變共享資源的過程中讀取這些共享資源。這個(gè)是很難的。銀行取錢線程不安全的例子測試,線程不安全的例子,如何實(shí)現(xiàn)線程安全synchronized關(guān)鍵字,synchronized可以確保代碼塊每次只被一個(gè)線程執(zhí)行。java的同步過程是在一個(gè)對象上獲取互拆鎖的過程。以便該對象每次能有一個(gè)線程讀取和修改。synchronized(this)synchrinized(Object)/推薦publicsynchrinizedvoidservice()一般來說,如果共享變量可以被獨(dú)立的線程讀取和修改或者變量本身不是線程安全的話,我們就應(yīng)該考慮將它同步。相反比如數(shù)據(jù)庫連接池,線程安全SingleThreadModel接口,確保一個(gè)servlet是線程安全最簡單的方法。實(shí)現(xiàn)SingleThreadModel接口。不能被并行執(zhí)行性能問題servlet實(shí)例池大多數(shù)servlet容器試圖通過維護(hù)一個(gè)servlet的實(shí)例池來是性能上的問題減到最小。當(dāng)servlet容器加載實(shí)現(xiàn)SingleThreadModel接口的servlet是,為了向并行請求提供服務(wù),該容器會(huì)創(chuàng)建一個(gè)servlet實(shí)例池。池的大小是可以進(jìn)行配置的。如果同時(shí)到達(dá)的請求過多,到實(shí)例池被消耗盡,那么多出來的請求就會(huì)進(jìn)行串行化,放到隊(duì)列中,直到有實(shí)例可以執(zhí)行。通常會(huì)產(chǎn)生很大的性能影響。,過濾器fliter,例子字符集過濾,HTTP重定向,允許服務(wù)器用指令來響應(yīng)客戶的請求,從而將資源加載到不同的位置上。重定向提供了一種無縫的方法,讓用戶從一個(gè)url轉(zhuǎn)移到另一個(gè)url。瀏覽器頁面超鏈接浪潮技術(shù)中心HttpServletResponsesendRedirect(url);不能保持請求內(nèi)容負(fù)載均衡,重定向負(fù)載均衡例子,cookies,http客戶和服務(wù)器之間傳送的小塊信息。服務(wù)器端創(chuàng)建,保存在客戶端的文本文件,通常不會(huì)超過512個(gè)字節(jié)可以使用HttpServletRequest/HttpServletResponse或者JavaScript來訪問。Cookie對象封裝一組name/valuegetName();返回名稱get/getValue();取/設(shè)值get/setMaxAge()設(shè)置cookie的保持時(shí)間0值刪除get/setVersion()取/設(shè)定版本示例,狀態(tài)和會(huì)話管理,無狀態(tài)協(xié)議的含義ht
溫馨提示
- 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 感謝老師的發(fā)言稿15篇
- 心理健康觀后感
- 易錯(cuò)題31 語言文字運(yùn)用之詞語效果題-不結(jié)合文意分析詞語效果高考語文備戰(zhàn)2025年高考易錯(cuò)題(新高考專用)含解析
- 愚人節(jié)日記資料
- 怦然心動(dòng)觀后感(集合15篇)
- 投資管理公司介紹
- 怦然心動(dòng)觀后感6篇
- 初級會(huì)計(jì)經(jīng)濟(jì)法基礎(chǔ)-初級會(huì)計(jì)《經(jīng)濟(jì)法基礎(chǔ)》點(diǎn)睛試卷13
- 中國發(fā)光二極管(LED)行業(yè)市場發(fā)展前景研究報(bào)告-智研咨詢發(fā)布
- 智研咨詢發(fā)布:2024年中國異丙醇行業(yè)競爭格局及發(fā)展前景研究報(bào)告
- 2025年度廚師職業(yè)培訓(xùn)學(xué)院合作辦學(xué)合同4篇
- 《組織行為學(xué)》第1章-組織行為學(xué)概述
- 市場營銷試題(含參考答案)
- 2024年山東省泰安市高考物理一模試卷(含詳細(xì)答案解析)
- 護(hù)理指南手術(shù)器械臺(tái)擺放
- 腫瘤患者管理
- 四川省成都市高新區(qū)2024年七年級上學(xué)期語文期末試卷【含答案】
- 2025年中國航空部附件維修行業(yè)市場競爭格局、行業(yè)政策及需求規(guī)模預(yù)測報(bào)告
- 國土空間生態(tài)修復(fù)規(guī)劃
- 1-1《送瘟神》課件-高教版中職語文職業(yè)模塊
- (高清版)DZT 0399-2022 礦山資源儲(chǔ)量管理規(guī)范
評論
0/150
提交評論