1. 程式人生 > >Servlet和Filter的區別和聯絡

Servlet和Filter的區別和聯絡

一.  概念方面: 1. servlet是一種執行與伺服器端的java應用程式,具有獨立於平臺和協議的特徵,並且可以動態的生成web頁面,它工作在客戶端請求和服務端相應的中間層。 2. filter是一個可以複用的程式碼片段,可以用來轉換HTTP請求、響應和頭資訊。filter不像servlet,它能產生一個請求或者響應,他只是修改對某一資源的請求,或者修改從某一資源的響應。 二. 生命週期: 1. servlet:servlet的生命週期始於它被裝入web伺服器的記憶體,並在web伺服器終止或重新裝入servlet時結束。servlet一旦被裝入web伺服器,一般不會從web伺服器記憶體中刪除,直至web伺服器關閉或重新開始。 (1) 裝入:啟動伺服器時載入Servlet的例項; (2) 初始化:web伺服器啟動或web伺服器接收到請求時,或者兩者之間的某個時刻啟動,初始化工作有init()方法負責執行; (3) 呼叫:從第一次到以後的多次訪問,都是隻呼叫doGet()或doPost()方法; (4) 銷燬:停止伺服器時呼叫destory()方法,銷燬例項。 2. filter:filter一定要實現,空實現也成。 (1) 啟動伺服器載入過濾器的例項,並呼叫init()方法來初始化例項; (2) 每一次請求時都只調用方法doFilter()方法進行處理; (3) 停止伺服器時呼叫destory()方法,銷燬例項。 三. 職責: 1. servlet: (1) 建立並返回一個包含基於客戶請求性質的動態內容的完整的html頁面; (2) 建立可嵌入到現有的html頁面中的一部分html頁面(html片段); (3) 讀取客戶端發來的隱藏資料; (4) 讀取客戶端發來的顯式資料; (5) 與其他伺服器資源(包含資料庫和java的應用程式)進行通訊; (6) 通過狀態程式碼和響應頭向客戶端傳送隱藏資料。 2. filter: (1) filter可以在一個請求到達servlet之前預處理使用者請求,也可以在離開servlet時處理http響應; (2) 在執行servlet之前,首先執行filter程式,併為之做一些預處理工作; (3) 在servlet被呼叫之後截獲servlet的執行。 四. 區別: 1. servlet流程是短的,url傳來之後,就對其進行處理,之後返回或轉向到某一自己指定的頁面。它主要用來在業務處理之前進行控制; 2. filter流程是線性的,url傳來之後,檢查之後,可保持原來的流程繼續向下執行,被下一個filter,servlet接收等,而servlet處理之後,不會繼續向下傳遞。filter功能可用來保持流程繼續按照原來的方式進行下去,或者主導流程,而servlet的功能主要是用來主導流程。 3. filter可用來進行字元編碼的過濾,檢查使用者是否登陸的過濾,禁止頁面快取等。

相關推薦

FilterServletListener區別聯絡

1. Servlet 可以用來建立並返回一個包含基於客戶請求性質的動態內容的完整的html頁面;可以建立可嵌入到現有的html頁面中的一部分html頁面(html片段);可以讀取客戶端發來的隱藏資料;可以 讀取客戶端發來的顯示資料;可以與其他伺服器資源(包括資料庫和jav

Django 對比getfilter區別

get python django filter get只能取出一條數據,如果滿足條件的數據有多條,拋出異常沒有數據,也會拋出異常filter如果有數據,就返回QuerySet(類似於可以遍歷的數組) 如果沒有數據,返回empty(不會拋異常)本文出自 “13261842” 博客,請務必保留此

SpringMVC中InterceptorFilter區別

通過 onf ron err mvc 無法 處理 上下 pin Interceptor 主要作用:攔截用戶請求,進行處理,比如判斷用戶登錄情況,權限驗證,主要針對Action請求進行處理。是通過HandlerInterceptor 實現的。 配置如下:   <mvc

Spring中InterceptorFilter區別

本質區別 Interceptor:基於Java的反射機制 filter:基於函式回撥。 從靈活性上說攔截器功能更強大些,Filter能做的事情,Interceptor都能做,而且可以在請求前,請求後執行,比較靈活。 其他區別   f

ES 的query filter 區別

Elasticsearch支援很多查詢方式,其中一種就是DSL,它是把請求寫在JSON裡面,然後進行相關的查詢。  Query DSL 與 Filter DSL DSL查詢語言中存在兩種:查詢DSL(query DSL)和過濾DSL(filter DSL)。 它們兩個的區別如下圖:

KEIL、uVisionMDK區別聯絡

--------------------------------------------- -- 時間:2018-11-26 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------

Java 的equals()方法 == 的區別聯絡

淺談Java中的equals和==  在初學Java時,可能會經常碰到下面的程式碼: String str1 = new String("hello"); String str2 = new String("hello"); System.out.print

關於unionjoin區別聯絡

union和join是需要聯合多張表時常見的關聯詞,具體概念我就不說了,想知道上網查就行,因為我也記不準確。 先說差別:union對兩張表的操作是合併資料條數,等於是縱向的,要求是兩張表字段必須是相同的(Schema of both sidesof union should match.)。也就

Python pip pip3區別 聯絡

python 有python2和python3的區別 那麼pip也有pip和pip3的區別 大概是這樣的 pip是python的包管理工具,pip和pip3版本不同,都位於Scripts\目錄下: 如果

後端---Java中ArrayListLinkedList區別聯絡

ArrayList和LinkedList的區別和聯絡 在一個多月之前,我曾寫過一篇部落格想要迅速簡潔的瞭解Java中所有的集合型別(List、Set、Map),然後一個月多後的我不得已又抱起《Java核心卷I 》仔細研讀,這是為什麼呢??? 是因為“溫故而知新”還是因為“書讀百遍其

C#中結構體區別聯絡

結構體 結構體定義 結構體是一種值型別,通常用來封裝小型相關變數組。例如座標或者商品的特徵。 結構體是一種自定義的資料型別,相當於一個複合容器,可以儲存多種型別。 結構體由結構體成員構成,結構體成員包含欄位,屬性與方法 結構體建

Bagging演算法Boosting區別聯絡

參考文章連結:http://www.cnblogs.com/liuwu265/p/4690486.html Bagging和Boosting都是將弱分類器組裝成強分類器的方法 備註:弱分類器也是有一定限制的起碼分類效果要比隨機分類效果好,即準確率要大於50%, 否則即使

FilterServlet、Listener區別聯絡

1. Filter實現javax.servlet.Filter介面,在web.xml中配置與標籤指定使用哪個Filter實現類過濾哪些URL連結。只在web啟動時進行初始化操作。filter 流程是線性的, url傳來之後,檢查之後,可保持原來的流程繼續向下執行,被下一個f

PCASVD區別聯絡

前言: PCA(principal component analysis)和SVD(Singular value decomposition)是兩種常用的降維方法,在機器學習等領域有廣泛的應用。本文主要介紹這兩種方法之間的區別和聯絡。 一、PCA

知識點 - python 裝飾器@staticmethod@classmethod區別使用

定義 整潔 參數 sel spa elf pri Go assm 1.通常來說,我們使用一個類的方法時,首先要實例化這個類,再用實例化的類來調用其方法 class Test(object): """docstring for Test""" def

hashCode() equals() 區別作用(轉)

person set集合 static out fin 解決 詳細 返回 art 出處:https://www.jianshu.com/p/5a7f5f786b75 本章的內容主要解決下面幾個問題: 1 equals() 的作用是什麽? 2 equal

Java之JSONObject存取值以及HashMap區別, optString()getString()區別他的遍歷方式

結論: 1.JSONObject和HashMap用法上是一樣的,用put()方法存對於的Key-values鍵值對,取可用optString(key)和getString(key),get(key),存入的是什麼型別,取出來的時候就是什麼型別 2**.optString()在沒找到k

spring classpath:classpath*:區別實際應用

classpath:和classpath*:的含義 classpath: :表示從類路徑中載入資源,classpath:和classpath:/是等價的,都是相對於類的根路徑。資原始檔庫標準的在檔案系統中,也可以在JAR或ZIP的類包中。 classpath*::假設多個JAR包或檔

MybatisHibernate區別應用場景

hibernate: 是一個標準的ORM框架(物件關係對映)。入門門檻較高,不需要程式寫sql語句,sql語句自動生產了。 特點: 對sql的優化比較困難。 Hibernate對物件的維護和快取要比MyBatis好,對增刪改查的物件的維護要方便。 Hibernate資料庫移植性很好,MyB

ServiceIntentService 區別使用

背景 最近開發遇到一個小小的問題,因為沒怎麼用過IntentService ,所以對其生命週期也不很瞭解,還有工作原理。 intentService 詳解 intentService ——>> StartService 第一次 intent