1. 程式人生 > >JavaEE複習回顧四: JavaWeb核心之Servlet

JavaEE複習回顧四: JavaWeb核心之Servlet

目錄

一、Servlet簡介

1、什麼是Servlet

2、Servlet快速入門

3、Servlet的API(生命週期)

4、HttpServlet類的方法

5、Servlet的配置

6、伺服器啟動例項化Servlet配置

7、ServletContext物件


 

一、Servlet簡介

 

1、什麼是Servlet

Servlet 執行在服務端的Java小程式,是sun公司提供一套規範(介面),用來處理客戶端請求、響應給瀏覽器的動態資源。但servlet的實質就是java程式碼,通過java的API 動態的向客戶端輸出內容。

 

servlet規範:包含三個技術點

  • servlet技術
  • filter技術---過濾器
  • listener技術---監聽器

 

 

2、Servlet快速入門

實現步驟:

  1. 建立類實現Servlet介面
  2. 覆蓋尚未實現的方法---service方法
  3. 在web.xml進行servlet的配置

 

但在實際開發中,我們不會直接去實現Servlet介面,因為那樣需要覆蓋的方法太多, 我們一般建立類繼承HttpServlet

實現步驟:

  • 建立類繼承HttpServlet類
  • 覆蓋doGet和doPost
  • 在web.xml中進行servlet的配置

 

畫圖描述整個訪問過程:

 

3、Servlet的API(生命週期)

Servlet介面中的方法

init(ServletConfig config)

何時執行:servlet物件建立的時候執行

ServletConfig : 代表的是該servlet物件的配置資訊

 

service(ServletRequest request,ServletResponse response)

何時執行:每次請求都會執行

ServletRequest :代表請求 認為ServletRequest 內部封裝的是 http請求的資訊

ServletResponse :代表響應 認為要封裝的是響應的資訊

 

destroy()

何時執行:servlet銷燬的時候執行

 

4、HttpServlet類的方法

  1. init()
  2. doGet(HttpServletRequest request,HttpServletResponse response)
  3. doPost(HttpServletRequest request,HttpServletResponse response)
  4. destroy()

 

Servlet的生命週期(面試題)

Servlet何時建立

預設第一次訪問servlet時建立該物件

Servlet何時銷燬

伺服器關閉servlet就銷燬了

 

每次訪問必然執行的方法

service(ServletRequest req, ServletResponse res)方法

 

問題:對XXXServlet進行了10次訪問,init(),destory(),service(),doGet(),doPost() 一共執行力多少次?request物件建立幾個?response建立幾個?

答:init(),destory()各執行一次。而service(),doGet(),doPost()各執行10次。

 

5、Servlet的配置

 

基本配置

其中url-pattern的配置方式:

1)完全匹配 訪問的資源與配置的資源完全相同才能訪問到

2)目錄匹配 格式:/虛擬的目錄../*   *代表任意

3)副檔名匹配 格式:*.副檔名

注意:第二種與第三種不要混用 /aaa/bbb/*.abcd(錯誤的)

 

6、伺服器啟動例項化Servlet配置

Servlet的何時建立:預設第一次訪問時建立

為什麼是預設?

當在servlet的配置時 加上一個配置 <load-on-startup> servlet物件在伺服器啟動 時就建立

預設Servlet

可以將url-pattern配置一個/,代表該servlet是預設的servlet

什麼是預設的servlet?

當你訪問資源地址所有的servlet都不匹配時 , 預設的servlet負責處理

其實,web應用中所有的資源的響應都是servlet負責,包括靜態資源

 

歡迎頁面

7、ServletContext物件

什麼是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應用的相對地址);

 

  • ServletContext是一個域物件(重要 重要 重要)

什麼是域物件?什麼是域?

儲存資料的區域就是域物件

 

ServletContext域物件的作用範圍:整個web應用(所有的web資源都可以隨意向 servletcontext域中存取資料,資料可以共享)

 

域物件的通用的方法:

  • setAtrribute(String name,Object obj);
  • getAttribute(String name);
  • removeAttribute(String name);