




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java Web學(xué)習(xí)了快半個(gè)月了,畢業(yè)設(shè)計(jì)也開始進(jìn)行了,回頭看看自己學(xué)習(xí)的情況讓人很不 爽快,所以從昨天起就速度做起了復(fù)習(xí)和總結(jié)的工作,做了一晚上發(fā)現(xiàn)工作量巨大啊,不過為了把畢業(yè)設(shè)計(jì)做好,并且掌握好Jsp技術(shù),我忍了.好了,言歸正傳今天我就來把Servlet這塊捋一捋。1.首先,什么是Servlet?Servlet是一個(gè)Java編寫的程序,此程序是在服務(wù)器端運(yùn)行的,是按照Servlet規(guī)范編寫的一個(gè)Java類。2.Servlet是做什么的?Servlet是處理客戶端的請(qǐng)求并將其發(fā)送到客戶端。3.Servlet API1Servlet框架的組成Servlet框架是由2個(gè)Java包組成:(1)ja
2、vax.servlet和(2)javax.servlet.http (1)javax.servlet包中定義了所有Servlet類都必須實(shí)現(xiàn)的接口和類。javax.servlet包的接口為:ServletConfig接口-在初始化過程中由Servlet容器使用ServletContext接口-定義Servlet用于獲取容器信息的方法ServletRequest接口-向服務(wù)器請(qǐng)求信息ServletResponse接口-響應(yīng)客戶端請(qǐng)求Servlet接口-定義所有Servlet必須實(shí)現(xiàn)的方法javax.servlet包中的類為:Servlet Inp utStream類-用于從客戶端讀取二進(jìn)制數(shù)據(jù)S
3、ervletOutputStream類-用于將二進(jìn)制數(shù)據(jù)發(fā)送到客戶端GenericServlet類-抽象類,定義一個(gè)通用的,獨(dú)立于地層協(xié)議的Servlet o(2)javax.servlet.http包中定義了采用HTTP通信的HttpServlet類。javax.servlet.http包的接口為:HttpServletRequest接口-提供http請(qǐng)求HttpServletResponse接口-提供http響應(yīng)HttpSession接口-用于標(biāo)識(shí)客戶端并存儲(chǔ)有關(guān)客戶信息HttpSessionAttributeListener接口-實(shí)現(xiàn)這個(gè)偵聽接口用戶獲取會(huì)話的屬性列表的改變的通知java
4、x.servlet.http包中的類:HttpServlet類-擴(kuò)展了GenericServlet的抽象類,用于擴(kuò)展創(chuàng)建HttpServletCookie類-創(chuàng)建一個(gè)Cookie,用于存儲(chǔ)Servlet發(fā)送給客戶端的信息2Servlet框架的核心Servlet框架的核心是:javax.servlet.Servlet接口,所有的Servlet都必須實(shí)現(xiàn)這一接口。4.Http ServletHttpServlet是一個(gè)抽象類,用來創(chuàng)建用戶自己的HTTP Servlet。HttpServlet類的子類必 須至少重寫一下方法中的一個(gè):doGet()和doPost()。HttpServlet類提供doG
5、et()方法來處理GET請(qǐng)求public void doGet(HttpServletRequest req,HttpServletResponse res)提供doPost()方法處理POST請(qǐng)求public void doPost(HttpServletRequest req,HttpServletResponse res)其中有2個(gè)參數(shù):HttpServletRequset和HttpServlerResponse這2個(gè)類實(shí)現(xiàn)了ServlerRequset接口和ServletResponse接口ServletRequest接口中封裝了客戶請(qǐng)求信息客戶請(qǐng)求方式,參數(shù)名,參數(shù)值等Servlet
6、Response接口為Servlet提供了返回相應(yīng)結(jié)果的方法。5.Servlet體系結(jié)構(gòu)Servlet-GenericServlet-HttpServlet-用戶自定義的Servlet 6.Servlet的生命周期Servlet的生命周期由Servlet容器控制,該容器創(chuàng)建Servlet的實(shí)例。Servlet生命周期就是指創(chuàng)建Servlet實(shí)例后響應(yīng)客戶請(qǐng)求直至銷毀的全過程。1Serlvet生命周期的三個(gè)方法:init()-service()-destroy() 2生命周期的各個(gè)階段:實(shí)例化:Servlet容器創(chuàng)建Servlet類的實(shí)例對(duì)象初始化:Servlet容器調(diào)用Servlet的init
7、()方法服務(wù):如果請(qǐng)求Servlet,則容器調(diào)用service()方法銷毀:銷毀實(shí)例之前調(diào)用destroy()方法不可用:銷毀實(shí)例并標(biāo)記為垃圾處理Servlet的生命周期Servlet的生命周期由Servlet容器控制,該容器創(chuàng)建Servlet的實(shí)例。Servlet的生命 周期就是指Servlet實(shí)例在創(chuàng)建之后響應(yīng)客戶請(qǐng)?zhí)酥钡街龄N毀的全過程。Servlet實(shí)例的創(chuàng)建取決于Servlet的首次調(diào)用。Servlet接口定義了Servlet生命周期的3個(gè)方法。1init():創(chuàng)建Servlet的實(shí)例后對(duì)其進(jìn)行初始化。實(shí)現(xiàn)ServletConfig接口的對(duì)象作為參數(shù)進(jìn)行傳遞。init方法在瀏覽器請(qǐng)求s
8、ervlet或web server啟動(dòng)時(shí)加載運(yùn)行。public void init()throws servletexception( public void init(servletconfig conf)throws servletexception(super.init(conf);/init方法帶servletconfig參數(shù)時(shí)必須有此句代碼/此處寫一些初始化操作。如連接數(shù)據(jù)庫等。2service():響應(yīng)客戶端發(fā)出的請(qǐng)求。Service()方法接受ServletRequest接口和ServletResponse接口的對(duì)象來處理請(qǐng)求和發(fā)送響應(yīng)。經(jīng)常的用法是:不用service()方法,
9、用dopost,doget方法來處理請(qǐng)求。其他的方法還有dotrace(),dooptions().dohead()方法,因trace,options.head信息已經(jīng)在dopost,doget方法中包括,不必使用,doput(),dodelete()方法在web app不經(jīng)常使用Service()方法的語法為:public void service(ServletRequest request, ServletResponse response) throws ServletException,IOException其中,request是作為參數(shù)傳遞以存儲(chǔ)客戶端請(qǐng)求的ServletReque
10、st接口的對(duì)象;ServletResponse接口的對(duì)象,它包含Servlet作出的響應(yīng)。3destroy():如果不需要處理的請(qǐng)求,則釋放Servlet實(shí)例。Destroy()方法的語法為:public void destroy()(public void destroy()(super.dedtroy(conf);注意:Servlet關(guān)閉時(shí)才銷毀。Servlet層次結(jié)構(gòu)在寫Servlet程序時(shí),一開始必須導(dǎo)入(import) javax.servlet.*、javax.servlet.http.*。其中:javax.servlet.* :存放與Http協(xié)議無關(guān)的一般,性servlet類;j
11、avax.servlet.http.*:除了繼承javax.servlet.*之外,并且還增加了與HTTP協(xié)議有關(guān)的功能。所有Servlet都必需 實(shí)現(xiàn)javax.servlet.Servlet接口(Interface),但是通 常我們 都會(huì)從javax.sevler.GenericServlet或javax.servlet.http.HttpServlet擇一來實(shí)現(xiàn)。javax.servlet.*里的ServletRequest和ServletResponse接口提供存取一般的請(qǐng)求和響應(yīng);javax.servlet.http.*里的HttpServletRequest和HttpServlet
12、Response接口,則提供HTTP請(qǐng)求 及響應(yīng)的存取服務(wù)。聲明servlet類MyServletpublic class MyServletextends httpservlet( javax.servlet包主要的接口和類:1 ServletInputStream類:用于從客戶端讀取二進(jìn)制據(jù)數(shù)。ServletInputStream類是從java.io.InputStream類擴(kuò)展而來的抽象類。它只實(shí)現(xiàn)一個(gè)readLine()方法。Public int readLine(byte b,int offset,int length) throws lOExceptionb是用于存儲(chǔ)讀取的數(shù)據(jù)的字
13、節(jié)數(shù)組;offset指定開始讀取字符串的位置;length指定要讀取的最大字節(jié)數(shù)返回實(shí)際讀到的字節(jié)數(shù)。至達(dá)流的結(jié)尾時(shí)返回-1.2 ServletOutputStream類:向客戶端發(fā)送二進(jìn)制數(shù)據(jù)。ServletOutputStream類是從java.io.OutputStream類擴(kuò)展而來的抽象類。主要方法:public voidprint(String s) throws lOException public ovid println(String s) throws lOExceptions是要發(fā)送到客戶端的字符串。3 GenericServlet類:抽象類,定義一個(gè)通用的、獨(dú)立于底層協(xié)議
14、的Servlet。4ServletRequest接口:定義一個(gè)對(duì)象,封裝客戶向Servlet的請(qǐng)求信息。使用ServletRequest接口創(chuàng)建的對(duì)象,用于使客戶端請(qǐng)求信息對(duì)Servlet可用。創(chuàng)建的對(duì)象作為參數(shù)傳遞至Servlet的Service()方法。5ServletResponse接口 :定義一個(gè)對(duì)象輔助Servlet將請(qǐng)求的響應(yīng)信息發(fā)送給客戶端。6ServletContext接口:Servlet上下文。定義Servlet使用的方法以獲取其容器的信息。7ServletConfig接口:定義了在Servlet初始化的過程中由Servlet容器傳遞給Servlet的配 置信息對(duì)象。保存Se
15、rvlet的配置信息。8Servlet接口:定義所有Servlet必須實(shí)現(xiàn)的方法。javax.servlet.http包主要的接口和類:1 HttpServletRequest接口:擴(kuò)展ServletRequest接口,為Http Servlet提供Http請(qǐng)求信息。getrealpath,getinputstream,getcontenttype,getcontentlengh.得到服務(wù)器的根目錄string path=request.getrealpath(.);取得輸入流datainputstream din=new datainputstream(request.getinputstr
16、eam();2 HttpServletResponse接口:擴(kuò)展ServletResponse接口,提供Http特定的發(fā)送響應(yīng)的功能。常用的方法:sendredirect,getwriter,setcontenttype,getoutputstream.設(shè)置文件類型private static final string content_type=text/html;charset=gb2312”;response.setcontenttype(content_type);輸出html文件頭部信息:printwriter out=response.getwriter();out.close();
17、3HttpSession接口 :用于創(chuàng)建客戶端與服務(wù)器端之間的會(huì)話。Public HttpSession getSession()返回與請(qǐng)求關(guān)聯(lián)的當(dāng)前會(huì)話。如果請(qǐng)求沒有與其關(guān)聯(lián)的話,則getSession()會(huì)創(chuàng)建一個(gè)新會(huì)話。Public HttpSession getSession(boolean value)返回與請(qǐng)求關(guān)聯(lián)的當(dāng)前session的對(duì)象。boolean value為true時(shí)等同于Public HttpSession getSession() boolean value為false時(shí),則返回null。4HttpSessionAttributeListener接口 :實(shí)現(xiàn)這個(gè)偵聽
18、接口用于獲取會(huì)話的屬性列表的改變的通 知。5HttpServlet類:擴(kuò)展了GenericServlet的抽象類,用于擴(kuò)展創(chuàng)建Http Servlet。6Cookie類:創(chuàng)建一個(gè)Cookie ,用于存儲(chǔ)Servlet發(fā)送給客戶端的信息。會(huì)話跟蹤會(huì)話跟蹤允許服務(wù)器確定訪問站點(diǎn)的用戶、用戶訪問站點(diǎn)的次數(shù)和用停留站點(diǎn)的時(shí)間段。會(huì)話跟蹤技術(shù)包括隱藏表單域、URL重寫、Cookie、Session。1隱藏表單域:是實(shí)現(xiàn)會(huì)話跟蹤最簡(jiǎn)單的方式。將字段添加到HTML表單中,但并不在客戶端瀏覽器中顯示。示例代碼:2URL重寫URL(Uniform Resource Locator,統(tǒng)一資源定位符)是Web上特定
19、頁面的地址。URL重寫技術(shù)在URL結(jié)尾添加一些附加數(shù)據(jù)以標(biāo)識(shí)該會(huì)話。3CookieCookie是Web服務(wù)器發(fā)送給客戶端的一小段信息,客戶端請(qǐng)求時(shí),可以讀取信息發(fā)送到服務(wù)器端。Servlet API為使用Cookie而提供javax.servlet.http.Cookie。Cookie類常用的方法如下:setMaxAge():設(shè)置Cookie的最大保存時(shí)間(以秒表示)public void setMaxAge(int age)(2)getMaxAge():返回Cookie的最大保存時(shí)間public int getMaxAge()4SessionServlet通信方法Servlet運(yùn)行一個(gè)稱為S
20、ervletContext的環(huán)境,此環(huán)境描述了與Servlet關(guān)聯(lián)的各種參數(shù),一個(gè)Servlet只屬于一個(gè)ServletContext。1 Servlet與jsp頁面通信下面是UserServlet1中的doGet()方法中的部分代碼:String uid=request.getParameter(txtuserid);ServletContext context=this.getServletContext();context.setAttribute(userid, uid);RequestDispatcher dispatcher=request.getRequestDispatcher
21、(./x.jsp);x.jsp部分代碼:用戶ID:$userid2 Servlet與Servlet通信屬于同一個(gè)應(yīng)用程序的Servlet可以使用javax.servlet.RequestDispatcher接口的forward和include方法來共享數(shù)據(jù)。forward()方法將HTTP請(qǐng)求從一個(gè)Servlet發(fā)送到其它Servlet。該請(qǐng)求包含傳遞到目標(biāo)Servlet的URL和請(qǐng)求參數(shù)。include方法可以接收Servlet以包括Servlet響應(yīng)中的其他Servlet響應(yīng)數(shù)據(jù)。接收客戶端可 以接收的對(duì)象,并將數(shù)據(jù)寫入到response對(duì)象。(1) forward():用于將請(qǐng)求從一個(gè)Servlet轉(zhuǎn)發(fā)到同一個(gè)服務(wù)器上的另一個(gè)Servlet。語法為:public void forward(ServletRequest request,ServletResponse response) throws ServletException,IOException基中,request是客戶端向Servlet發(fā)出的請(qǐng)求,response是Servlet對(duì)客戶端作出的響應(yīng)。(2) include():用于包括另一個(gè)Servlet的內(nèi)容。語法為:public void include(ServletRequest request
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年山東省莒縣第三中學(xué)七年級(jí)上學(xué)期12月月考地理試卷
- 2024-2025學(xué)年四川省宜賓市興文縣八年級(jí)上學(xué)期期中地理試卷
- 越城區(qū)袍江地區(qū)七年級(jí)上學(xué)期期中科學(xué)試題
- 文化傳承教師師徒結(jié)對(duì)實(shí)踐計(jì)劃
- 外研版小學(xué)英語四年級(jí)上冊(cè)課堂管理計(jì)劃
- 第三季度藥品質(zhì)量抽檢及改進(jìn)措施分析
- 幼兒園中班身體素質(zhì)提升活動(dòng)計(jì)劃
- 小學(xué)英語教學(xué)活動(dòng)實(shí)施計(jì)劃
- 2025小學(xué)課程評(píng)價(jià)體系計(jì)劃
- 隧道工程施工準(zhǔn)備工作計(jì)劃
- 盤錦市事業(yè)單位定向招聘退役大學(xué)生士兵考試真題2024
- 2025年沈陽汽車城開發(fā)建設(shè)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 田徑理論考試復(fù)習(xí)題庫300題(含各題型)
- 泛海三江JB-QGL-9000、JB-QTL-9000、JB-QBL-9000火災(zāi)報(bào)警控制器
- 員工團(tuán)建就餐合同
- 電氣工程及其自動(dòng)化畢業(yè)設(shè)計(jì) 基于PLC的噴涂機(jī)器人控制系統(tǒng)的設(shè)計(jì)
- 滑雪培訓(xùn)服務(wù)合同
- 肌肉注射課件(共45張課件)
- 工程經(jīng)濟(jì)學(xué)(青島理工大學(xué))知到智慧樹章節(jié)測(cè)試課后答案2024年秋青島理工大學(xué)
- 2025年國(guó)家電網(wǎng)有限公司招聘筆試參考題庫含答案解析
- 民事起訴狀(物業(yè)服務(wù)合同糾紛)示范文本
評(píng)論
0/150
提交評(píng)論