Servlet原理:
1.Servlet簡介:
servlet是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
2.作用:
收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。
3.優勢:
(1)性能明顯更好。
(2)Servlet 在 Web 服務器的地址空間內執行。這樣它就沒有必要再創建一個單獨的進程來處理每個客戶端請求。
(3)Servlet 是獨立于平臺的,因為它們是用 Java 編寫的。
(4)服務器上的 Java 安全管理器執行了一系列限制,以保護服務器計算機上的資源。因此,Servlet 是可信的。
(5)Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數據庫或其他軟件進行交互。
4.架構原理圖:
5.Servlet 任務:
(1)讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。
(2)讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
(3)處理數據并生成結果。這個過程可能需要訪問數據庫,執行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。
(4)發送顯式的數據(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進制文件(GIF 圖像)、Excel 等。
(5)發送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數,以及其他類似的任務。
6.servlet的生命周期(創建——毀滅):
(1)init ()方法被設計成只調用一次。它在第一次創建 Servlet 時被調用,在后續每次用戶請求時不再調用。當用戶調用一個 Servlet 時,就會創建一個 Servlet 實例,每一個用戶請求都會產生一個新的線程,適當的時候移交給 doGet 或 doPost 方法。init() 方法簡單地創建或加載一些數據,這些數據將被用于 Servlet 的整個生命周期。
public void init() throws ServletException {// 初始化代碼... }(2)service() 方法:處理來自客戶端(瀏覽器)的請求,并把格式化的響應寫回給客戶端。service() 方法由容器調用,service 方法在適當的時候調用 doGet、doPost、doPut、doDelete 等方法。所以,您不用對 service() 方法做任何動作,您只需要根據來自客戶端的請求類型來重寫 doGet() 或 doPost() 即可。
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{ }(3)doGet() 方法:GET 請求來自于一個 URL 的正常請求,或者來自于一個未指定 METHOD 的 HTML 表單,它由 doGet() 方法處理。
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {// Servlet 代碼 }實例:
(4)doPost() 方法:POST 請求來自于一個特別指定了 METHOD 為 POST 的 HTML 表單,它由 doPost() 方法處理。
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {// Servlet 代碼 }(5)destroy() 方法:destroy() 方法只會被調用一次,在 Servlet 生命周期結束時被調用。destroy() 方法可以讓您的 Servlet 關閉數據庫連接、停止后臺線程、把 Cookie 列表或點擊計數器寫入到磁盤,并執行其他類似的清理活動。
public void destroy() {// 終止化代碼...}7.servlet過濾器:
Servlet 過濾器可以動態地攔截請求和響應,以變換或使用包含在請求或響應中的信息??梢詫⒁粋€或多個 Servlet 過濾器附加到一個 Servlet 或一組 Servlet。Servlet 過濾器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 頁面。調用 Servlet 前調用所有附加的 Servlet 過濾器。
作用:
- 在客戶端的請求訪問后端資源之前,攔截這些請求。
- 在服務器的響應發送回客戶端之前,處理這些響應。
提高了三個方法:
public void doFilter (ServletRequest, ServletResponse, FilterChain)
該方法完成實際的過濾操作,當客戶端請求方法與過濾器設置匹配的URL時,Servlet容器將先調用過濾器的doFilter方法。FilterChain用戶訪問后續過濾器。
public void init(FilterConfig filterConfig)
web 應用程序啟動時,web 服務器將創建Filter 的實例對象,并調用其init方法,讀取web.xml配置,完成對象的初始化功能,從而為后續的用戶請求作好攔截的準備工作(filter對象只會創建一次,init方法也只會執行一次)。開發人員通過init方法的參數,可獲得代表當前filter配置信息的FilterConfig對象。
public void destroy()
Servlet容器在銷毀過濾器實例前調用該方法,在該方法中釋放Servlet過濾器占用的資源。
實例:
總結
以上是生活随笔為你收集整理的Servlet原理:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iText 下载
- 下一篇: 如何把代码写的更优雅,你需要这一份代码精