91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳談Servlet和Filter的區別以及兩者在Struts2和Springmvc中的應用

發布時間:2020-09-26 09:18:38 來源:腳本之家 閱讀:135 作者:jingxian 欄目:編程語言

在javaweb開發中,Servlet和Filter是很重要的兩個概念,我們平時進行javaweb開發的時候,會經常和Servlet和Filter打交道,但我們真的了解Servlet和Filter嗎?

一、基本概念

Servlet:

Servlet 是在WEB服務器上運行的程序。這個詞是在 Java applet的環境中創造的,Java applet 是一種當作單獨文件跟網頁一起發送的小程序,它通常用于在客戶端運行,結果得到為用戶進行運算或者根據用戶互作用定位圖形等服務。

服務器上需要一些程序,常常是根據用戶輸入訪問數據庫的程序。這些通常是使用公共網關接口(Common Gateway Interface,CGI)應用程序完成的。然而,在服務器上運行 Java,這種程序可使用 Java 編程語言實現。在通信量大的服務器上,JavaServlet 的優點在于它們的執行速度更快于 CGI 程序。各個用戶請求被激活成單個程序中的一個線程,而無需創建單獨的進程,這意味著服務器端處理請求的系統開銷將明顯降低。

Servlet創建并返回一個包含基于客戶請求性質的動態內容的完整的html頁面;

創建可嵌入到現有的html頁面中的一部分html頁面(html片段);

讀取客戶端發來的隱藏數據;

讀取客戶端發來的顯示數據;

與其他服務器資源(包括數據庫和java的應用程序)進行通信;

通過狀態代碼和響應頭向客戶端發送隱藏數據。

Filter:

filter是一個可以復用的代碼片段,可以用來轉換HTTP請求、響應和頭信息。Filter不像Servlet,它不能產生一個請求或者響應,它只是修改對某一資源的請求,或者修改從某一的響應。

二、生命周期:

1、servlet:servlet的生命周期始于它被裝入web服務器的內存時,并在web服務器終止或重新裝入servlet時結束。servlet一旦被裝入web服務器,一般不會從web服務器內存中刪除,直至web服務器關閉或重新結束。

(1)、裝入:啟動服務器時加載Servlet的實例;

(2)、初始化:web服務器啟動時或web服務器接收到請求時,或者兩者之間的某個時刻啟動。初始化工作有init()方法負責執行完成;

(3)、調用:從第一次到以后的多次訪問,都是只調用doGet()或doPost()方法;

(4)、銷毀:停止服務器時調用destroy()方法,銷毀實例。

2、filter:(一定要實現javax.servlet包的Filter接口的三個方法init()、doFilter()、destroy(),空實現也行)

(1)、啟動服務器時加載過濾器的實例,并調用init()方法來初始化實例;

(2)、每一次請求時都只調用方法doFilter()進行處理;

(3)、停止服務器時調用destroy()方法,銷毀實例。

三、職責

1、servlet:

創建并返回一個包含基于客戶請求性質的動態內容的完整的html頁面;

創建可嵌入到現有的html頁面中的一部分html頁面(html片段);

讀取客戶端發來的隱藏數據;

讀取客戶端發來的顯示數據;

與其他服務器資源(包括數據庫和java的應用程序)進行通信;

通過狀態代碼和響應頭向客戶端發送隱藏數據。

2、filter:

filter能夠在一個請求到達servlet之前預處理用戶請求,也可以在離開servlet時處理http響應:

在執行servlet之前,首先執行filter程序,并為之做一些預處理工作;

根據程序需要修改請求和響應;

在servlet被調用之后截獲servlet的執行

四、區別:

1,servlet 流程是短的,url傳來之后,就對其進行處理,之后返回或轉向到某一自己指定的頁面。它主要用來在 業務處理之前進行控制.

2,filter 流程是線性的, url傳來之后,檢查之后,可保持原來的流程繼續向下執行,被下一個filter, servlet接收等,而servlet 處理之后,不會繼續向下傳遞。filter功能可用來保持流程繼續按照原來的方式進行下去,或者主導流程,而servlet的功能主要用來主導流程。

filter可用來進行字符編碼的過濾,檢測用戶是否登陸的過濾,禁止頁面緩存等

五、執行流程圖:

1、servlet:

詳談Servlet和Filter的區別以及兩者在Struts2和Springmvc中的應用

2、filter:

詳談Servlet和Filter的區別以及兩者在Struts2和Springmvc中的應用

javaweb開發我們常用到的后臺框架有Struts2和Springmvc。其中Struts2的入口filter,而Springmvc的入口是servlet;

我們在使用Struts2進行開發時,web.xml中的核心控制器是這樣配置的

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

而使用Springmvc進行開發時,其web.xml是這樣配置的

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

以上這篇詳談Servlet和Filter的區別以及兩者在Struts2和Springmvc中的應用就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万宁市| 盈江县| 长兴县| 宜都市| 黄浦区| 报价| 咸宁市| 若羌县| 北海市| 连城县| 威远县| 乡宁县| 阜宁县| 平江县| 田东县| 思茅市| 元阳县| 当雄县| 东方市| 白河县| 武定县| 溆浦县| 宁明县| 仪征市| 武清区| 榆林市| 保康县| 宣武区| 龙州县| 平遥县| 华池县| 界首市| 桃园县| 余干县| 枣强县| 綦江县| 屏边| 利津县| 聂拉木县| 兴安盟| 闽侯县|