<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                http://blog.csdn.net/hy6688_/article/details/38666569 最近在開java的東西,還記得剛開始使用servlet是在調試一個ajax的時候,那時候不知道如何使用,就知道寫一個路徑去調用,總是提示404錯誤,以為是相對路徑與絕對路徑的問題,到最后自己一點點的調通了,知道servlet是需要服務器編譯運行,是需要配置web.xml的。到學習filter,發現他們的套路完全是一樣的,也需要在web.xml中進行相應的配置。可以說是基本一樣的,我不禁要問,他們之間有什么異同呢。 ? ? ? ? 遇到問題的時候也是學習的時候,我就在網上找了點相關的資料,與大家分享一下: ? ? ? ? 主要從如下四個方面介紹他們之間的區別: ? ? ? ? ? ? ? ? 1.概念。 ? ? ? ? ? ? ? ??2.生命周期。 ? ? ? ? ? ? ? ??3.職責。 ? ? ? ? ? ? ? ??4.執行過程。 一、概念: ? ? ? ? ?1、servlet:servlet是一種運行服務器端的java應用程序,具有獨立于平臺和協議的特性,并且可以動態的生成web頁面,它工作在客戶端請求與服務器響應的中間層。 ? ? ? ? ?2、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: ![](http://img.blog.csdn.net/20140818215355012?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHk2Njg4Xw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) ? ? ? ? ? 2、filter: ![](http://img.blog.csdn.net/20140818215211109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHk2Njg4Xw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 總結: ? ? ? ? 剛剛開始java的學習,對于兩者的理解也只有這些了,但是在我的學習過程中,發現其實不止是有這兩個的比較,還有listener和interceptor,他們四者的區別和聯系。我現在還沒有很好的把控,等學到的時候一起做總結吧。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看