【024期】JavaWeb面試題(五):Filter和Listener
開篇介紹
大家好,我是Java最全面試題庫
的提褲姐,今天這篇是JavaWeb系列的第五篇,主要總結了JavaWeb中Filter和Listener
相關的問題,在後續,會沿著第一篇開篇的知識線路一直總結下去,做到日更!如果我能做到百日百更,希望你也可以跟著百日百刷,一百天養成一個好習慣。
什麼是過濾器?
定義::
依賴於servlet容器;
在實現上基於函式回撥
,可以對幾乎所有請求進行過濾;
缺點是一個過濾器例項只能在容器初始化時呼叫一次;
作用:
用來做一些過濾操作,獲取我們想要獲取的資料:
在過濾器中修改字元編碼;
在過濾器中修改HttpServletRequest
的一些引數,包括:過濾低俗文字、危險字元等。
什麼是監聽器?
定義::
實現了javax.servlet.ServletContextListener
介面的伺服器端程式;
隨web應用的啟動而啟動;只初始化一次;
隨web應用的停止而銷燬;
作用::
做一些初始化的內容新增工作、設定一些基本的內容、比如一些引數或者是一些固定的物件等等。如SpringMVC
的監聽器org.springframework.web.context.ContextLoaderListener
,實現了SpringMVC容器的載入
、Bean物件建立
、DispatchServlet初始化
等。
什麼是攔截器?
依賴於web框架,在SpringMVC中就是依賴於SpringMVC框架;
在實現上基於Java的反射機制,屬於面向切面程式設計(AOP)的一種運用;
缺點是隻能對controller請求進行攔截,對其他的一些比如直接訪問靜態資源的請求則沒辦法進行攔截處理;
由於攔截器是基於web框架的呼叫,因此可以使用Spring的依賴注入(DI)進行一些業務操作,同時一個攔截器例項在一個controller生命週期之內可以多次呼叫。
過濾器和攔截器的區別?
攔截器 | 過濾器 |
---|---|
基於Java反射機制 | 基於函式回撥 |
不依賴Servlet容器 | 依賴Servlet容器 |
只能對action起作用 | 幾乎對所有請求起作用 |
可以訪問action上下文,值棧裡的物件 | 可以訪問action上下文,值棧裡的物件 |
在Action生命週期中,攔截器可以多次被呼叫 | 過濾器只能在容器初始化時被呼叫一次 |
攔截器不能修改request | 過濾器可以修改request |
攔截器可以呼叫IOC容器中的各種依賴 | 過濾器不能呼叫IOC容器中的各種依賴 |
攔截器可以詳細到每個方法 | 過濾器只能在請求的前後使用 |
過濾器主要是過濾出要的東西,如requeset中的資訊;攔截器在做安全方面用的比較多,比如終止一些流程
Servlet與Filter的區別?
Filter是一種特別的Servlet,它們的作用是完全不一樣的。
Servlet是用來處理請求的,而Filter是用來過濾檢查請求的。
web.xml 的作用?
用於配置Web應用的相關資訊
如:監聽器(listener)、過濾器(filter)、 Servlet、相關引數、會話超時時間、安全驗證方式、錯誤頁面等。
filter的生命週期?
- 啟動伺服器時載入過濾器的例項,並呼叫
init()
方法來初始化例項; - 每一次請求時都只呼叫方法
doFilter()
進行處理; - 停止伺服器時呼叫
destroy()
方法,銷燬例項。
需要實現
javax.servlet
包的Filter介面的三個方法init()
、doFilter()
、destroy()
什麼是servlet?
servlet是執行在web伺服器中的小型java程式,通常透過HTTP協議接受和相應來自web客戶端的請求。
- Servlet對像,由Servlet容器建立。通常這個容器就是tomcat。
- Servlet是一個介面:位於javax.servlet包中。
Servlet的生命週期?
servlet被例項化後,呼叫init方法。請求到達時,執行service()方法,呼叫doGet()、doPost()等方法。當伺服器決定將例項銷燬時呼叫destroy()方法。
-
init()
:第一次請求資源的時候,執行且只執行一次
init方法。 -
service()
:第二次往後,執行service方法,執行多次
。在這個方法內部,根據請求方式的不同,進而繼續呼叫不同的doGet和doPost方法。 -
destory()
:當Servlet伺服器正常關閉時,執行destroy方法,只執行一次
。
Servlet和 CGI的區別?
Servlet透過多執行緒的方式執行service方法,一個例項可以服務於多個請求,並且例項一般不會被銷燬。而CGI對每個請求都產生新的程式,服務完成後就銷燬,所以效率上低於Servlet。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2825942/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaWeb三大元件(Servlet、Filter、Listener)JavaWeb元件ServletFilter
- Tomcat深入淺出——Filter與Listener(五)TomcatFilter
- 實戰Spring Boot 2.0系列(五) - Listener, Servlet, Filter和InterceptorSpring BootServletFilter
- Filter&ListenerFilter
- JavaWeb-ListenerJavaWeb
- Java面試題-javaweb篇六Java面試題Web
- Java面試題-javaweb篇七Java面試題Web
- Cookie,Session Filter,Listener詳解CookieSessionFilter
- 面試問題記錄 三 (JavaWeb、JavaEE)面試JavaWeb
- 【021】JavaWeb面試題(二):Http協議JavaWeb面試題HTTP協議
- SpringBoot如何註冊Servlet、Filter、ListenerSpring BootServletFilter
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- iOS面試題總結(五)iOS面試題
- 面試題(五)常見vue相關面試題總結面試題Vue
- 一文快速回顧 Servlet、Filter、ListenerServletFilter
- Java面試題-基礎篇五Java面試題
- 2024/11/20日 日誌 關於 Filter & ListenerFilter
- 面試必備,Linux面試題和答案!Linux面試題
- rsync和NFS有哪些面試題?Linux面試題分享NFS面試題Linux
- Filter(過濾器)與Listener(監聽器)詳解Filter過濾器
- [前端 · 面試 ]HTTP 總結(五)—— GET 和 POST前端面試HTTP
- JavaWeb開發之Filter中的dispatcher標籤JavaWebFilter
- HTML最新面試題(筆試面試題)HTML面試題筆試
- NET近期面試總結和麵試題面試
- 面試題:面試經面試題
- 分享net面試題和經驗面試題
- 最全MySQL面試題和答案(四)MySql面試題
- 最全MySQL面試題和答案(二)MySql面試題
- 最全MySQL面試題和答案(三)MySql面試題
- 阿里巴巴技術面試題-第五篇阿里面試題
- oracle ocp 19c考題7,科目082考試題-listener tnsnamesOracle
- JavaWeb測試選擇題帶答案解析(二)JavaWeb
- 「面試題」20+Vue面試題整理面試題Vue
- 最全MySQL面試20題和答案(一)MySql面試
- 面試題面試題
- 40個Java集合面試問題和答案,面試奇葩問題,你掌握了嗎?Java面試
- react面試題 機試題React面試題