網(wǎng)站建設(shè)初衷宣傳推廣網(wǎng)絡(luò)推廣
目錄
- Servlet簡介
- Servlet快速入門
- Servlet配置詳解
- ServletContext
1 Servlet簡介
Servlet 運(yùn)行在服務(wù)端的Java小程序,是sun公司提供一套規(guī)范(接口),用來處理客戶端請求、響應(yīng)給瀏覽器的動態(tài)資源。但servlet的實(shí)質(zhì)就是java代碼,通過java的API動態(tài)的向客戶端輸出內(nèi)容
javaWeb規(guī)范(三大組件):包含三個(gè)技術(shù)點(diǎn)
1)servlet技術(shù)
2)filter技術(shù)—過濾器
3)listener技術(shù)—監(jiān)聽器
2 Servlet快速入門
2.1 入門案例
2.1.1 實(shí)現(xiàn)Servlet接口步驟
1)創(chuàng)建類實(shí)現(xiàn)Servlet接口
2)覆蓋尚未實(shí)現(xiàn)的方法
3)在web.xml進(jìn)行servlet的配置
2.1.2 servlet對象如何被創(chuàng)建?
2.1.3 訪問流程圖解
但在實(shí)際開發(fā)中,我們不會直接去實(shí)現(xiàn)Servlet接口,因?yàn)槟菢有枰采w的方法太多,我們一般創(chuàng)建類繼承HttpServlet.
2.2 HttpServlet
2.2.1 繼承HttpServlet原理圖解:
2.2.2 實(shí)現(xiàn)步驟
1)創(chuàng)建類繼承HttpServlet類
2)覆蓋doGet和doPost
3)在web.xml中進(jìn)行servlet的配置
3 Servlet的配置詳解
3.1 基本配置
其中url-pattern的配置方式:
1)完全匹配 訪問的資源與配置的資源完全相同才能訪問到
2)目錄匹配 格式:/虛擬的目錄…/*
3)擴(kuò)展名匹配 格式:.擴(kuò)展名
注意:第二種與第三種不要混用 **/web/.action(錯(cuò)誤的),服務(wù)器啟動報(bào)錯(cuò).**
3.2 服務(wù)器啟動實(shí)例化Servlet配置
Servlet的何時(shí)創(chuàng)建:默認(rèn)第一次訪問時(shí)創(chuàng)建.當(dāng)在servlet的配置時(shí),加上一個(gè)配置 servlet對象在服務(wù)器啟動時(shí)就創(chuàng)建.
在中配置中給出一個(gè)非負(fù)整數(shù),一般不寫1,Tomcat有個(gè)默認(rèn)的1.多個(gè)Servlet的創(chuàng)建順序按照給出的非負(fù)整數(shù)從小到大排序.
3.3 缺省的Servlet
可以將url-pattern配置一個(gè)/,代表該servlet是缺省的servlet.當(dāng)你訪問資源地址所有的servlet都不匹配時(shí),缺省的servlet負(fù)責(zé)處理.
缺省Servlet除了處理動態(tài)資源url不匹配,靜態(tài)資源的路徑不匹配也由它處理.
3.4 歡迎頁面
當(dāng)我們訪問day07這個(gè)項(xiàng)目的時(shí)候,就默認(rèn)在webContext下找day07.html
4 ServletContext對象
4.1 什么是ServletContext對象
ServletContext代表是一個(gè)web應(yīng)用的環(huán)境(上下文)對象,ServletContext對象內(nèi)部封裝是該web應(yīng)用的信息,ServletContext對象一個(gè)web應(yīng)用只有一個(gè)
4.2 ServletContext生命周期
- 創(chuàng)建:該web應(yīng)用被加載(服務(wù)器啟動或發(fā)布web應(yīng)用(前提,服務(wù)器啟動狀態(tài)))
- 銷毀:web應(yīng)用被卸載(服務(wù)器關(guān)閉,移除該web應(yīng)用)
簡稱與天地同壽.
4.3 怎樣獲得ServletContext對象
我們可以通過兩種方式獲取ServletContext對象
1)ServletContext servletContext = config.getServletContext();
在init(ServletConfig config)方法中獲取.但一般不用.
2)ServletContext servletContext = this.getServletContext();
在GenericServlet或HttpServlet及其子類中通過this獲取.這個(gè)常用.
4.4 ServletContext的作用
4.4.1 獲得web應(yīng)用全局的初始化參數(shù)
在web.xml中配置初始化參數(shù)
通過context對象獲得參數(shù)
4.4.2 獲得web應(yīng)用中任何資源的絕對路徑
方法:String path = context.getRealPath(相對于該web應(yīng)用的相對地址);
結(jié)果返回資源在磁盤的絕對路徑:
4.4.3 ServletContext是一個(gè)域?qū)ο?/h3>
4.4.3.1 域?qū)ο笳f明
存儲數(shù)據(jù)的區(qū)域就是域?qū)ο?JavaWeb有四大域?qū)ο?按作用于范圍從小到大排列:
PageContext
作用范圍是整個(gè)JSP頁面,是四大作用域中最小的一個(gè);生命周期是當(dāng)對JSP的請求時(shí)開始,當(dāng)響應(yīng)結(jié)束時(shí)銷毀。
ServletRequest
作用范圍是整個(gè)請求鏈(請求轉(zhuǎn)發(fā)也存在);生命周期是在service方法調(diào)用前由服務(wù)器創(chuàng)建,傳入service方法。整個(gè)請求結(jié)束,request生命結(jié)束。
HttpSession
作用范圍是一次會話。生命周期是在第一次調(diào)用request.getSession()方法時(shí),服務(wù)器會檢查是否已經(jīng)有對應(yīng)的session,如果沒有就在內(nèi)存中創(chuàng)建一個(gè)session并返回。當(dāng)一段時(shí)間內(nèi)session沒有被使用(默認(rèn)為30分鐘),則服務(wù)器會銷毀該session。如果服務(wù)器非正常關(guān)閉(強(qiáng)行關(guān)閉),沒有到期的session也會跟著銷毀。如果調(diào)用session提供的invalidate() ,可以立即銷毀session。
ServletContext
作用范圍是整個(gè)Web應(yīng)用。當(dāng)Web應(yīng)用被加載進(jìn)容器時(shí)創(chuàng)建代表整個(gè)web應(yīng)用的ServletContext對象,當(dāng)服務(wù)器關(guān)閉或Web應(yīng)用被移除時(shí),ServletContext對象跟著銷毀。
4.4.3.2 域?qū)ο蟮耐ㄓ玫姆椒?#xff1a;
- setAtrribute(String name,Object obj); — 設(shè)置屬性
- getAttribute(String name); — 獲取屬性
- removeAttribute(String name); — 移除屬性
設(shè)置的屬性,其實(shí)是存放在一個(gè)Map中.這個(gè)Map的名字叫attributes. 是ServletContext接口實(shí)現(xiàn)類ApplicationContext的一個(gè)屬性.
4.4.3.3 案例
記錄網(wǎng)站的訪問次數(shù).