JavaEE之JavaWeb核心之Servlet
Servlet簡介:
Servlet 運行在服務端的Java小程序,是sun公司提供一套規範(接口),用來處理客戶端請求、響應給瀏覽器的動態資源。但servlet的實質就是java代碼,通過java的API 動態的向客戶端輸出內容
servlet規範:包含三個技術點
1)servlet技術
2)filter技術---過濾器
3)listener技術---監聽器
Servlet實現步驟:
1)創建類實現Servlet接口
2)覆蓋尚未實現的方法---重點實現service方法
3)在web.xml進行servlet的配置
但在實際開發中,我們一般創建類繼承HttpServlet
實現步驟:
1)創建類繼承HttpServlet類
2)覆蓋doGet和doPost
3)在web.xml中進行servlet的配置
訪問過程:
Servlet的API(生命周期)
Servlet接口中的方法
1)init(ServletConfig config)
何時執行:servlet對象創建的時候執行
ServletConfig : 代表的是該servlet對象的配置信息
2)service(ServletRequest request,ServletResponse response)
何時執行:每次請求都會執行
ServletRequest :代表請求 認為ServletRequest 內部封裝的是 http請求的信息
ServletResponse :代表響應 認為要封裝的是響應的信息
3)destroy()
何時執行:servlet銷毀的時候執行
Servlet的生命周期(面試題)
1)Servlet何時創建
默認(服務器啟動時)第一次訪問servlet時創建該對象
2)Servlet何時銷毀
服務器關閉servlet就銷毀了
3)每次訪問必然執行的方法
service(ServletRequest req, ServletResponse res)方法
問題:對XXXServlet進行了10次訪問,init(),destory(),service(),doGet(),doPost() 一共執行力多少次?request對象創建幾個?response創建幾個?
HttpServlet類的方法
1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()
Servlet的配置
基本配置:
其中url-pattern的配置方式:
1)完全匹配 訪問的資源與配置的資源完全相同才能訪問到
2)目錄匹配 格式:/虛擬的目錄../* *代表任意
3)擴展名匹配 格式:*.擴展名
註意:第二種與第三種不要混用 /aaa/bbb/*.abcd(錯誤的)
服務器啟動實例化Servlet配置
Servlet的何時創建:默認第一次訪問時創建
為什麽是默認?
當在servlet的配置時 加上一個配置 <load-on-startup> servlet對象在服務器啟動 時就創建
缺省Servlet
可以將url-pattern配置一個/,代表該servlet是缺省的servlet
什麽是缺省的servlet?
當你訪問資源地址所有的servlet都不匹配時 , 缺省的servlet負責處理
其實,web應用中所有的資源的響應都是servlet負責,包括靜態資源
歡迎頁面:
ServletContext對象
ServletContext代表是一個web應用的環境(上下文)對象,ServletContext對象 內部封裝是該web應用的信息,ServletContext對象一個web應用只有一個
一個web應用有多個servlet對象
ServletContext對象的生命周期?
創建:該web應用被加載(服務器啟動或發布web應用(前提,服務器啟動狀 態))
銷毀:web應用被卸載(服務器關閉,移除該web應用)
怎樣獲得ServletContext對象
1)ServletContext servletContext = config.getServletContext();
2)ServletContext servletContext = this.getServletContext();
ServletContext的作用
獲得web應用全局的初始化參數
web.xml中配置初始化參數
通過context對象獲得參數
獲得web應用中任何資源的絕對路徑(重要 重要 重要)
方法:String path = context.getRealPath(相對於該web應用的相對地址);
寫一個相對,得到一個絕對的path
ServletContext是一個域對象(重要 重要 重要)
什麽是域對象?什麽是域?
存儲數據的區域就是域對象
ServletContext域對象的作用範圍:整個web應(所有的web資源都可以隨意向 servletcontext域中存取數據,數據可以共享)
域對象的通用的方法:
setAtrribute(String name,Object obj);
getAttribute(String name);
removeAttribute(String name);
JavaEE之JavaWeb核心之Servlet