最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年08月05日 08:56:09   投稿:jingxian  
下面小編就為大家?guī)硪黄斦凷ervlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

一、基本概念

Servlet:

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

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

Servlet創(chuàng)建并返回一個包含基于客戶請求性質(zhì)的動態(tài)內(nèi)容的完整的html頁面;

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

讀取客戶端發(fā)來的隱藏數(shù)據(jù);

讀取客戶端發(fā)來的顯示數(shù)據(jù);

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

通過狀態(tài)代碼和響應頭向客戶端發(fā)送隱藏數(shù)據(jù)。

Filter:

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

二、生命周期:

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

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

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

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

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

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

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

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

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

三、職責

1、servlet:

創(chuàng)建并返回一個包含基于客戶請求性質(zhì)的動態(tài)內(nèi)容的完整的html頁面;

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

讀取客戶端發(fā)來的隱藏數(shù)據(jù);

讀取客戶端發(fā)來的顯示數(shù)據(jù);

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

通過狀態(tài)代碼和響應頭向客戶端發(fā)送隱藏數(shù)據(jù)。

2、filter:

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

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

根據(jù)程序需要修改請求和響應;

在servlet被調(diào)用之后截獲servlet的執(zhí)行

四、區(qū)別:

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

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

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

五、執(zhí)行流程圖:

1、servlet:

2、filter:

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

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

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

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

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

以上這篇詳談Servlet和Filter的區(qū)別以及兩者在Struts2和Springmvc中的應用就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java——對象初始化順序使用詳解

    Java——對象初始化順序使用詳解

    本篇文章介紹了,Java對象初始化順序的使用。需要的朋友參考下
    2017-04-04
  • Java排序算法中的選擇排序算法實現(xiàn)

    Java排序算法中的選擇排序算法實現(xiàn)

    這篇文章主要介紹了Java排序算法中的選擇排序算法實現(xiàn),選擇排序算法的實現(xiàn)思路類似插入排序,分已排序區(qū)間和未排序區(qū)間,選擇排序每次會從未排序區(qū)間中找到最小(大)的元素,將其放到已排序區(qū)間的末尾,需要的朋友可以參考下
    2023-12-12
  • springboot2.3 整合mybatis-plus 高級功能及用法詳解

    springboot2.3 整合mybatis-plus 高級功能及用法詳解

    這篇文章主要介紹了springboot2.3 整合mybatis-plus 高級功能,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java?IO流與NIO技術(shù)綜合應用詳細實例代碼

    Java?IO流與NIO技術(shù)綜合應用詳細實例代碼

    這篇文章主要給大家介紹了關(guān)于Java?IO流與NIO技術(shù)綜合應用的相關(guān)資料,文中包括了字節(jié)流和字符流,以及它們的高級特性如緩沖區(qū)、序列化和反序列化,同時還介紹了NIO中的通道和緩沖區(qū),以及選擇器的使用,需要的朋友可以參考下
    2024-12-12
  • 淺談collection標簽的oftype屬性能否為java.util.Map

    淺談collection標簽的oftype屬性能否為java.util.Map

    這篇文章主要介紹了collection標簽的oftype屬性能否為java.util.Map,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java解決請求跨域的兩種方法

    java解決請求跨域的兩種方法

    這篇文章主要為大家詳細介紹了java解決請求跨域的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • IDEA啟動tomcat控制臺中文亂碼問題的解決方法(100%有效)

    IDEA啟動tomcat控制臺中文亂碼問題的解決方法(100%有效)

    很多人在idea中啟動項目時會出現(xiàn)控制臺的中文亂碼,其實也無傷大雅,但是本人看著不舒服,下面這篇文章主要給大家介紹了關(guān)于IDEA啟動tomcat控制臺中文亂碼問題的解決方法,需要的朋友可以參考下
    2022-09-09
  • java數(shù)據(jù)庫連接池新手入門一篇就夠了,太簡單了!

    java數(shù)據(jù)庫連接池新手入門一篇就夠了,太簡單了!

    數(shù)據(jù)庫連接池負責分配、管理和釋放數(shù)據(jù)庫連接,釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏,這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能
    2021-06-06
  • Spring多線程的使用以及問題詳解

    Spring多線程的使用以及問題詳解

    在我們開發(fā)系統(tǒng)過程中,經(jīng)常會處理一些費時間的任務(如:向數(shù)據(jù)庫中插入大量數(shù)據(jù)),這個時候就就需要使用多線程,下面這篇文章主要給大家介紹了關(guān)于Spring多線程的使用以及問題的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • SpringBoot深入分析webmvc和webflux的區(qū)別

    SpringBoot深入分析webmvc和webflux的區(qū)別

    這篇文章主要介紹了SpringBoot深入分析webmvc和webflux的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02

最新評論

阜南县| 济源市| 浦北县| 汉川市| 得荣县| 湾仔区| 达日县| 渝中区| 江华| 昆明市| 临潭县| 迁西县| 霍林郭勒市| 长葛市| 英吉沙县| 辽宁省| 蒲江县| 巴南区| 民权县| 尉氏县| 绵阳市| 浦城县| 房产| 唐海县| 黄陵县| 威海市| 崇仁县| 岱山县| 吉木乃县| 西乡县| 临湘市| 冷水江市| 万安县| 繁峙县| 普定县| 桐庐县| 合水县| 高安市| 边坝县| 桦川县| 肇州县|