版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京傳智播客教育Servlet簡(jiǎn)介Servlet是sun公司提供的一門(mén)用于開(kāi)發(fā)動(dòng)態(tài)web資源的技術(shù)Servlet技術(shù)基于Request-Response編程模型Sun公司在其API中提供了一個(gè)servlet接口,用戶(hù)若想要開(kāi)發(fā)一個(gè)動(dòng)態(tài)web資源(即開(kāi)發(fā)一個(gè)Java程序向?yàn)g覽器輸出數(shù)據(jù)),需要完成以下2個(gè)步驟:編寫(xiě)一個(gè)Java類(lèi),實(shí)現(xiàn)servlet接口把開(kāi)發(fā)好的Java類(lèi)部署到web服務(wù)器中快速入門(mén),用servlet向?yàn)g覽器輸出“helloservlet”使用MyEclipse創(chuàng)建webproject通過(guò)向?qū)?chuàng)建Servlet繼承HttpServlet配置Servlet虛擬路徑覆蓋doGet或者doPost方法進(jìn)行輸出北京傳智播客教育快速入門(mén)總結(jié)編寫(xiě)Servlet步驟繼承javax.servlet.http.HttpServletweb.xml配置Servlet的虛擬路徑覆蓋doGet、doPost北京傳智播客教育在web.xml配置Servlet訪問(wèn)虛擬路徑北京傳智播客教育GET方式請(qǐng)求提交映射關(guān)系北京傳智播客教育Servlet的接口實(shí)現(xiàn)關(guān)系北京傳智播客教育Servlet接口定義了Servlet生命周期init()方法:服務(wù)器調(diào)用該方法初始化Servletservice()方法:初始化完畢,服務(wù)器調(diào)用該方法響應(yīng)客戶(hù)的請(qǐng)求destroy()方法:服務(wù)器調(diào)用該方法消滅servlet對(duì)象其中,init()方法只在Servlet第一次被請(qǐng)求加載的時(shí)候被調(diào)用一次,當(dāng)有客戶(hù)再請(qǐng)求Servlet服務(wù)時(shí),Web服務(wù)器將啟動(dòng)一個(gè)新的線程,在該線程中,調(diào)用service方法響應(yīng)客戶(hù)的請(qǐng)求北京傳智播客教育關(guān)于Servlet的生命周期Servlet是一個(gè)供其他Java程序(Servlet引擎)調(diào)用的Java類(lèi),它不能獨(dú)立運(yùn)行,它的運(yùn)行完全由Servlet引擎來(lái)控制和調(diào)度。針對(duì)客戶(hù)端的多次Servlet請(qǐng)求,通常情況下,服務(wù)器只會(huì)創(chuàng)建一個(gè)Servlet實(shí)例對(duì)象,也就是說(shuō)Servlet實(shí)例對(duì)象一旦創(chuàng)建,它就會(huì)駐留在內(nèi)存中,為后續(xù)的其它請(qǐng)求服務(wù),直至web容器退出,servlet實(shí)例對(duì)象才會(huì)銷(xiāo)毀。在Servlet的整個(gè)生命周期內(nèi),Servlet的init方法只被調(diào)用一次。而對(duì)一個(gè)Servlet的每次訪問(wèn)請(qǐng)求都導(dǎo)致Servlet引擎調(diào)用一次servlet的service方法。對(duì)于每次訪問(wèn)請(qǐng)求,Servlet引擎都會(huì)創(chuàng)建一個(gè)新的HttpServletRequest請(qǐng)求對(duì)象和一個(gè)新的HttpServletResponse響應(yīng)對(duì)象,然后將這兩個(gè)對(duì)象作為參數(shù)傳遞給它調(diào)用的Servlet的service()方法,service方法再根據(jù)請(qǐng)求方式分別調(diào)用doXXX方法。北京傳智播客教育配置Servlet自動(dòng)加載如果在<servlet>元素中配置了一個(gè)<load-on-startup>元素,那么WEB應(yīng)用程序在啟動(dòng)時(shí),就會(huì)裝載并創(chuàng)建Servlet的實(shí)例對(duì)象、以及調(diào)用Servlet實(shí)例對(duì)象的init()方法。 舉例:
<servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.InvokerServlet </servlet-class>
<load-on-startup>2</load-on-startup> </servlet>例如:為web應(yīng)用寫(xiě)一個(gè)InitServlet,這個(gè)servlet配置為啟動(dòng)時(shí)裝載,為整個(gè)web應(yīng)用創(chuàng)建必要的數(shù)據(jù)庫(kù)表和數(shù)據(jù)。北京傳智播客教育Servlet接口實(shí)現(xiàn)類(lèi)Servlet接口SUN公司定義了兩個(gè)默認(rèn)實(shí)現(xiàn)類(lèi),分別為:GenericServlet、HttpServlet。HttpServlet指能夠處理HTTP請(qǐng)求的servlet(添加與HTTP協(xié)議相關(guān)API),它在原有Servlet接口上添加了一些與HTTP協(xié)議處理方法,它比Servlet接口的功能更為強(qiáng)大。因此開(kāi)發(fā)人員在編寫(xiě)Servlet時(shí),通常應(yīng)繼承這個(gè)類(lèi),而避免直接去實(shí)現(xiàn)Servlet接口。HttpServlet在實(shí)現(xiàn)Servlet接口時(shí),覆寫(xiě)了service方法,該方法體內(nèi)的代碼會(huì)自動(dòng)判斷用戶(hù)的請(qǐng)求方式,如為GET請(qǐng)求,則調(diào)用HttpServlet的doGet方法,如為Post請(qǐng)求,則調(diào)用doPost方法。因此,開(kāi)發(fā)人員在編寫(xiě)Servlet時(shí),通常只需要覆寫(xiě)doGet或doPost方法,而不要去覆寫(xiě)service方法。閱讀HttpServletAPI文檔北京傳智播客教育當(dāng)繼承了HttpServlet的注意事項(xiàng)Servlet初始化時(shí)覆蓋init(),無(wú)需覆蓋init(config)根據(jù)Http請(qǐng)求的方式,覆蓋相應(yīng)的doGet或者doPost方法,無(wú)需覆蓋Service方法當(dāng)doGet和doPost代碼邏輯相同時(shí),可以相互調(diào)用,簡(jiǎn)化編程北京傳智播客教育配置Servlet路徑映射配置由于客戶(hù)端是通過(guò)URL地址訪問(wèn)web服務(wù)器中的資源,所以Servlet程序若想被外界訪問(wèn),必須把servlet程序映射到一個(gè)URL地址上,這個(gè)工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。<servlet>元素用于注冊(cè)Servlet,它包含有兩個(gè)主要的子元素:<servlet-name>和<servlet-class>,分別用于設(shè)置Servlet的注冊(cè)名稱(chēng)和Servlet的完整類(lèi)名。一個(gè)<servlet-mapping>元素用于映射一個(gè)已注冊(cè)的Servlet的一個(gè)對(duì)外訪問(wèn)路徑,它包含有兩個(gè)子元素:<servlet-name>和<url-pattern>,分別用于指定Servlet的注冊(cè)名稱(chēng)和Servlet的對(duì)外訪問(wèn)路徑。例如:<web-app> <servlet> <servlet-name>AnyName</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AnyName</servlet-name> <url-pattern>/demo/hello.html</url-pattern> </servlet-mapping></web-app>·北京傳智播客教育配置Servlet路徑映射配置<servlet-mapping> <servlet-name> AnyName </servlet-name> <url-pattern> /action/* </url-pattern></servlet-mapping> <servlet-mapping> <servlet-name> AnyName </servlet-name> <url-pattern> *.do </url-pattern></servlet-mapping>同一個(gè)Servlet可以被映射到多個(gè)URL上,即多個(gè)<servlet-mapping>元素的<servlet-name>子元素的設(shè)置值可以是同一個(gè)Servlet的注冊(cè)名。在Servlet映射到的URL中也可以使用*通配符,但是只能有兩種固定的格式:一種格式是“*.擴(kuò)展名”,另一種格式是以正斜杠(/)開(kāi)頭并以“/*”結(jié)尾。北京傳智播客教育Servlet路徑映射舉例對(duì)于如下的一些映射關(guān)系:Servlet1映射到/abc/*Servlet2映射到/*Servlet3映射到/abcServlet4映射到*.do問(wèn)題:當(dāng)請(qǐng)求URL為“/abc/a.html”,“/abc/*”和“/*”都匹配,哪個(gè)servlet響應(yīng)
Servlet引擎將調(diào)用Servlet1。當(dāng)請(qǐng)求URL為“/abc”時(shí),“/abc/*”和“/abc”都匹配,哪個(gè)servlet響應(yīng)
Servlet引擎將調(diào)用Servlet3。當(dāng)請(qǐng)求URL為“/abc/a.do”時(shí),“/abc/*”和“*.do”都匹配,哪個(gè)servlet響應(yīng)
Servlet引擎將調(diào)用Servlet1。當(dāng)請(qǐng)求URL為“/a.do”時(shí),“/*”和“*.do”都匹配,哪個(gè)servlet響應(yīng)
Servlet引擎將調(diào)用Servlet2.當(dāng)請(qǐng)求URL為“/xxx/yyy/a.do”時(shí),“/*”和“*.do”都匹配,哪個(gè)servlet響應(yīng)
Servlet引擎將調(diào)用Servlet2。北京傳智播客教育Web開(kāi)發(fā)中的路徑問(wèn)題分析Web系統(tǒng)中的相對(duì)路徑和絕對(duì)路徑相對(duì)路徑:hello./hello../myweb/hello絕對(duì)路徑:/hello/myweb/hello服務(wù)器端和客戶(hù)端對(duì)于/的區(qū)別客戶(hù)端關(guān)于路徑問(wèn)題的編程結(jié)論*.html*.jsp內(nèi)都使用絕對(duì)路徑*.css內(nèi)部使用相對(duì)路徑----背景圖片*.js中使用絕對(duì)路徑北京傳智播客教育init方法中的ServletConfig對(duì)象在Servlet的配置文件中,可以使用一個(gè)或多個(gè)<init-param>標(biāo)簽為servlet配置一些初始化參數(shù)。當(dāng)servlet配置了初始化參數(shù)后,web容器在創(chuàng)建servlet實(shí)例對(duì)象時(shí),會(huì)自動(dòng)將這些初始化參數(shù)封裝到ServletConfig對(duì)象中,并在調(diào)用servlet的init方法時(shí),將ServletConfig對(duì)象傳遞給servlet。進(jìn)而,程序員通過(guò)ServletConfig對(duì)象就可以得到當(dāng)前servlet的初始化參數(shù)信息。ServletConfig配置參數(shù)相當(dāng)于當(dāng)前Servlet局部變量,無(wú)法被其它Servlet訪問(wèn)的閱讀ServletConfigAPI,并舉例說(shuō)明該對(duì)象的作用:獲得配置文件,查看struts案例的web.xml文件北京傳智播客教育Web應(yīng)用對(duì)象:ServletContextWEB容器在啟動(dòng)時(shí),它會(huì)為每個(gè)WEB應(yīng)用程序都創(chuàng)建一個(gè)對(duì)應(yīng)的ServletContext對(duì)象,它代表當(dāng)前web應(yīng)用。ServletConfig對(duì)象中維護(hù)了ServletContext對(duì)象的引用,開(kāi)發(fā)人員在編寫(xiě)servlet時(shí),可以通過(guò)ServletConfig.getServletContext方法獲得ServletContext對(duì)象。由于一個(gè)WEB應(yīng)用中的所有Servlet共享同一個(gè)ServletContext對(duì)象,因此Servlet對(duì)象之間可以通過(guò)ServletContext對(duì)象來(lái)實(shí)現(xiàn)通訊。ServletContext對(duì)象通常也被稱(chēng)之為context域?qū)ο?。查看ServletContextAPI文檔,了解ServletContext對(duì)象的功能。北京傳智播客教育ServletContext應(yīng)用獲取WEB應(yīng)用的全局初始化參數(shù)通過(guò)ServletContext對(duì)象實(shí)現(xiàn)數(shù)據(jù)共享案例---統(tǒng)計(jì)站點(diǎn)訪問(wèn)次數(shù)利用ServletContext對(duì)象讀取資源文件北京傳智播客教育webproject中讀取文件總結(jié)文件系統(tǒng)路徑getServletContext().getRealPath(“/WEB-INF/info.txt”)類(lèi)路徑classpath(src下)通過(guò)字節(jié)碼對(duì)象讀取ClassgetResource(“/info.txt”).getFile()獲取字節(jié)碼對(duì)象Class類(lèi)名.class----靜態(tài)屬性對(duì)象.getClass()----實(shí)例方法北京傳智播客教育關(guān)于缺省Servlet如果某個(gè)Servlet的映射路徑僅僅為一個(gè)正斜杠(/),那么這個(gè)Servlet就成為當(dāng)前Web應(yīng)用程序的缺省Servlet。凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它們的訪問(wèn)請(qǐng)求都將交給缺省Servlet處理,也就是說(shuō),缺省Servlet用于處理所有其他Servlet都不處理的訪問(wèn)請(qǐng)求。在<to
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 賈平凹《秦腔》課件
- 2026年橋梁健康評(píng)估與風(fēng)險(xiǎn)管理
- 2026年橡膠支座在抗震設(shè)計(jì)中的應(yīng)用
- 貨運(yùn)駕駛員汛期安全培訓(xùn)課件
- 貨運(yùn)安全教育培訓(xùn)計(jì)劃課件
- 醫(yī)療行業(yè)人工智能應(yīng)用案例分析
- 生育健康服務(wù)項(xiàng)目總結(jié)
- 護(hù)理學(xué)科研究與創(chuàng)新能力提升
- 醫(yī)療機(jī)構(gòu)禮儀與醫(yī)療法規(guī)
- 2026年?yáng)|營(yíng)科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題有答案解析
- GB/T 45953-2025供應(yīng)鏈安全管理體系規(guī)范
- 2025秋季學(xué)期國(guó)開(kāi)電大法律事務(wù)專(zhuān)科《刑事訴訟法學(xué)》期末紙質(zhì)考試簡(jiǎn)答題庫(kù)2025春期版
- 要素式民事起訴狀(房屋租賃合同糾紛)
- 設(shè)計(jì)公司報(bào)賬管理辦法
- DB51∕T 3045-2023 四川省社會(huì)保險(xiǎn)基本公共服務(wù)規(guī)范
- 畢業(yè)設(shè)計(jì)(論文)-自動(dòng)展開(kāi)曬衣架設(shè)計(jì)
- 智能化系統(tǒng)在鐵路裝備檢修中的應(yīng)用-洞察闡釋
- TCPQSXF006-2023消防水帶產(chǎn)品維護(hù)更換及售后服務(wù)
- 邊坡噴錨施工方案
- YS/T 3045-2022埋管滴淋堆浸提金技術(shù)規(guī)范
- 項(xiàng)目進(jìn)度跟進(jìn)及完成情況匯報(bào)總結(jié)報(bào)告
評(píng)論
0/150
提交評(píng)論