Servlet、Filter 和Listener 工作原理
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest)request; //在servlet被呼叫之前截獲,此時可以檢查、修改request頭和request資料; logger.info( "Intercept Url="+httpServletRequest.getRequestURI());Listener和Event: Listener是Servlet的監聽器,它可以監聽客戶端的請求、服務端的操作等。通過監聽器,可以自動激發一些操作,比如監聽線上的使用者的數量。當增加一個HttpSession時,就激發sessionCreated(HttpSessionEvent se)方法,這樣就可以給線上人數加1。 Servlet、Filter都是針對請求的,而listener是針對物件的操作的,如session的建立,session.setAttribute的發生,在這樣的事件發生時做一些事情。 在javax.servlet和javax.servlet.http兩個包下,能夠找到一共8個以Listener結尾的介面以及6個以Event結尾的類,它們共同構成了Servlet的事件處理模型。 1. ServletContextListener介面 [介面方法] contextInitialized()與 contextDestroyed() [接收事件] ServletContextEvent [觸發場景] 在Container載入Web應用程式時(例如啟動 Container之後),會呼叫contextInitialized(),而當容器移除Web應用程式時,會呼叫contextDestroyed ()方法。 2. ServletContextAttributeListener [介面方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] ServletContextAttributeEvent [觸發場景] 若有物件加入為application(ServletContext)物件的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、attributeRemoved()。 3. HttpSessionListener [介面方法] sessionCreated()與sessionDestroyed () [接收事件] HttpSessionEvent [觸發場景] 在session (HttpSession)物件建立或被消滅時,會分別呼叫這兩個方法。 4. HttpSessionAttributeListener [介面方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] HttpSessionBindingEvent [觸發場景] 若有物件加入為session(HttpSession)物件的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved()。 5. HttpSessionActivationListener [介面方法] sessionDidActivate()與 sessionWillPassivate() [接收事件] HttpSessionEvent [觸發場景] Activate與Passivate是用於置換物件的動作,當session物件為了資源利用或負載平衡等原因而必須暫時儲存至硬碟或其它儲存器時(透 過物件序列化),所作的動作稱之為Passivate,而硬碟或儲存器上的session物件重新載入JVM時所採的動作稱之為Activate,所以容 易理解的,sessionDidActivate()與 sessionWillPassivate()分別於Activeate後與將Passivate前呼叫。 6. ServletRequestListener [介面方法] requestInitialized()與 requestDestroyed() [接收事件] RequestEvent [觸發場景] 在request(HttpServletRequest)物件建立或被消滅時,會分別呼叫這兩個方法。 7. ServletRequestAttributeListener [介面方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] HttpSessionBindingEvent [觸發場景] 若有物件加入為request(HttpServletRequest)物件的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved()。 8. HttpSessionBindingListener [介面方法] valueBound()與valueUnbound() [接收事件] HttpSessionBindingEvent [觸發場景] 實現HttpSessionBindingListener介面的類別,其例項如果被加入至session(HttpSession)物件的屬性中,則會 呼叫 valueBound(),如果被從session(HttpSession)物件的屬性中移除,則會呼叫valueUnbound(),實現 HttpSessionBindingListener介面的類別不需在web.xml中設定。long start=System. currentTimeMillis(); //Causes the next filter in the chain to be invoked, or if the calling filter is the last filter in the chain, causes the resource at the end of the chain to be invoked. chain.doFilter(request, response); //在servlet被呼叫之後截獲,此時可以修改response頭和response資料; long end=System. currentTimeMillis(); logger.info(request.getRemoteAddr()+ ": time used :"+(end-start)); response.getWriter().write( "[email protected] Mr.Shao" ); }
相關推薦
Servlet、Filter 和Listener 工作原理
Servlet工作原理 一、Servlet生命週期分為三個階段: 1、初始化階段,呼叫init()方法 2、響應客戶請求階段,呼叫service()方法 3、終止階段,呼叫destroy()方法 二、Servlet初始化階段,在下列時刻Servlet容器裝載Servlet:
註冊Servlet、Filter和Listener(程式碼和註解兩種方式)
由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案。 故而採用其他方式來註冊三大元件:程式碼註冊和註解註冊。 【1】ServletRegistrationBean註冊Se
Spring Boot使用Servlet、Filter或Listener的方式
false listener tex 使用 fig java one 註入 ont 根據官方文檔說明,有兩種方式可以在你的Spring Boot應用中使用Servlet、Filter或Listener。 其一:將Servlet、Filter或Listener註冊成Sprin
Spring Boot 學習系列(08)—自定義servlet、filter及listener
此文已由作者易國強授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 傳統的filter及listener配置 在傳統的Java web專案中,servlet、filter和listener的配置很簡單,直接在web.xml中按順序配置好即可,程式啟動時,就會按照你配置的順序依次載入
Servlet的filter和listener,重點了解ServletContext
一 filter是servlet2.3新增加的功能,功能是在請求到達servlet之前和返回之前可以修改request和response。 還可以通過繼承HttpServletRequestWrapper去重寫request和response的一些方法 二 listener的作用查了一些
基於註解的SpringMVC添加其他的Servlet、Filter以及Listener
etc patch ping dispatch 重寫 ppi gist ota tex 我們可以在AbstractAnnotationConfigDispatcherServletInitializer的實現類中重寫onStartup(ServletContext serv
基於註解的SpringMVC新增其他的Servlet、Filter以及Listener
我們可以在AbstractAnnotationConfigDispatcherServletInitializer的實現類中重寫onStartup(ServletContext servletContext)方法新增其他的Servlet、Filter以及Listener 1 public class
web.xml中的配置,servlet,filter,listener的作用和原理
首先介紹servlet,filter和listen的原理: servlet可以說是動態頁面的基石,現在很多開發都是基於spring等各種框架,所以對servlet的瞭解可能少點,下面先用簡單的例子,說明下servlet的作用 MyFirstServlet.java class MyF
servlet、filter、listener繼承的基類和獲得作用域的方式
一、servlet: 1、servlet屬於j2ee的元件,構建servlet的web project不需要匯入專案框架jar包 2、servlet的體系結構: 在j2ee API中,提供給servlet的支援介面和基類都位於javax.servlet.*和java
Java Web組件Servlet、Filter、Listener
繼承 一個 tex 請求 父類 服務器 監聽 alt tco 一、Servlet 類javax.servlet.http.HttpServlet; 1.是單例模式,一個web容器中只有一個實例。服務器調用它的service方法進行請求處理, service方法
Spring Boot-- Servlet、Filter、Listener、Interceptor
Spring Boot-- Servlet、Filter、Listener、Interceptor 在Spring Boot中讓Servlet、Listener、Filter生效的方法: 在Application上使用@ServletComponentSc
【WEB 三大核心 Servlet Filter 和 Listener 的生命週期 和 執行流程 】
1. Servlet 的 生命週期 和 執行流程 1.1 Servlet 的執行流程 1. 客戶端傳送請求 (以 GET 或者 Post 方式傳送請求 ) 超連結 : <a href="servl
Spring Boot 、註冊Servlet三大元件Servlet、Filter、Listener
由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案 public class MyServlet extends HttpServlet { protected void doPost(HttpS
JavaWeb 三大器--Listener、Filter 和Interceptor 總結
說明:web.xml的載入順序是:【Context-Param】->【Listener】->【Filter】->【Servlet】,而同個型別之間的實際程式呼叫的時候的順序是根據對應的Mapping的順序進行呼叫。 詳細介紹:web.xml載入順序與web.xml常用節點解析 轉自:ht
Java三大器之過濾器(Filter)的工作原理和代碼演示
應用 項目 isp 抽象類 con 存在 nis window rec 一、Filter簡介 Filter也稱之為過濾器,它是Servlet技術中最激動人心的技術之一,WEB開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp,Servlet,
SpringBoot1.5.12.RELEASE註冊Servlet三大元件【Servlet、Filter、Listener】
SpringBoot1.5.12.RELEASE註冊Servlet三大元件【Servlet、Filter、Listener】 1.理由:由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案。 2.註
SpringBoot初始教程之Servlet、Filter、Listener配置
1.介紹通過之前的文章來看,SpringBoot涵蓋了很多配置,但是往往一些配置是採用原生的Servlet進行的,但是在SpringBoot中不需要配置web.xml的 因為有可能打包之後是一個jar包的形式,這種情況下如何解決?SpringBoot 提供了兩種方案進行解決 2.快速開始2.1 方案一方案一
Spring Boot學習筆記(二)使用Servlet、Filter、Listener
Servlet 還是得整合HttpServlet,然後重寫父類方法。 類的上方增加了@WebServlet註解,其實就是代替了xml的配置,可以被spring boot掃描、註冊到。 package org.test.Controll; import javax.servlet.Servl
04-SpringBoot之WEB(二)——整合Servlet、Filter、Listener
1. Servlet 1.1 自定義Servlet import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.
23 Servlet三大元件(Servlet、Filter、Listener)註冊
1 傳統註冊方式 1.1 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="