Serlvet入門

溪源的奇思妙想發表於2018-10-07

Serlvet入門

Serlvet是用來處理客戶端請求併產生動態頁面內容的JAVA類。
所有的Serlvet都必須直接或者間接實現javax.serlvet.Servlet.

有兩種間接的方式

  • 繼承javax.serlvet.GenericServlet(實現了Servlet和ServletConfig介面),通過此方法能夠簡化程式程式碼,但需要實現service()方法
  • 繼承javax.servlet.http.HTTPServlet(繼承了GenericServlet類)為實際開發中大多數Servlet處理HTTP請求的應用靈活的方法

總結:

  • a.Serlvet使用多執行緒可以並行的為多個請求服務。
  • b.Serlvet應用是通過監聽器、過濾器來實現。
  • c. web.xml的載入順序context-param->listener(監聽器)->filter(過濾器)->servlet
  • d.監聽器可以對application、session、request建立或者消亡時做屬性操作;
    過濾器可以用來轉換HTTP請求,響應和頭資訊
  • f.在Structs2.0 中 interceptor:攔截器是對過濾器更加細化的應用 (不是在web.xml中配置)

關於Serlvet過濾器

第一部分:過濾器在WEB應用
由filter元素包括 filter-name和filter-class

第二部分:過濾器對映定義
filter-mapping 將過濾器對映到一個或者多個Serlvet或者JSP檔案,
也可以採用url-pattern將過濾器對映到任意特徵的URL

關於Serlvet監聽器
實現 ServletContextListener、HttpSessionListener、ServletRequestListener類分別對 針對於ServletContext、HttpSession、ServletRequest物件的增刪修改進行監聽。

<listener> 
<listener-class>.</listener-class>
</listener>

Serlvet的生命週期
Servlet 載入—>例項化—>服務—>銷燬。
Servlet是基於 觀察者模式設計
主要的方法:init() 、service() 、destory()

總結:

  • a.在Serlvet生命週期init()和destory()只會呼叫一次,每執行一次JSP都會呼叫一次service()
  • b.JSP先解析成Servlet原始檔,再被編譯成Servlet類檔案

SpringMVC處理請求

  • Model模型:存取資料
  • View檢視:展示資料
  • Controller控制器:與使用者進行互動

在這裡插入圖片描述

  • DispatcherServlet 前端控制器:接收使用者請求
  • HandlerAdapter 處理器介面卡:選擇合適的處理器,並且呼叫相應功能處理方法
  • ViewResolver 檢視解析器

使用者傳送請求和返回響應的流程

  1. 傳送請求 至DispatcherServlet
  2. 對映處理器 獲取處理器對映至 DispatcherServet
  3. HandlerAdapter進行處理器適配
  4. 呼叫處理器相應功能處理方法
  5. ViewResolver 接收View 進行檢視解析
  6. Model加入到View 中進行檢視渲染
  7. DispatcherServlet返回響應

在這裡插入圖片描述