Servlet與Filter的執行原理 面試回答

2021-09-27 12:14:02 字數 870 閱讀 3484

web容器中存在兩個map,這兩個map的key均為servlet註冊時的的值,但其value是不同的。

第乙個map的value是servlet例項物件的引用,第二個map的value為的值,即servlet類的全限定性類名。

當對servlet的請求到達servlet容器時,會先對請求進行解析,使用解析出的uri,作為比較物件,從第乙個map中查詢是否有匹配的key。

若存在匹配的key,那麼讀取其value,即servlet物件的引用,執行該servlet的service()方法。不再向後查詢了。 

若不存在匹配的key,那麼再從第二個map中查詢是否有匹配的key.若存在,則讀取其value,即要訪問的servlet的全限定性類             名。然後使用反射機制建立該servlet例項,並將該例項寫入到第乙個map中,然後再執行該servlet的service()方法。

反射機制:class.forname(全限定性類名).newinstance()建立物件

若第二個map中也沒有找到匹配的key,那麼跳轉到系統錯誤處理頁面404.

servlet是訪問時建立的,filter應用啟動時建立的

乙個map: map的key為的值,value為filter例項物件的引用

乙個陣列: 存放著與請求相匹配的所有filter

當對某資源的請求到達web容器時,會先對請求進行解析,使用解析出的uri作為比較物件,從map中查詢是否存在相匹配的key. 若存在,那麼讀取其value,即filter物件的引用,將該引用存入到陣列中。然後繼續向後查詢,直到將該map查詢完畢。這樣在陣列中就會存在按照查詢順序排好序的filter引用。

陣列初始化完畢後,開始按照陣列元素順序進行執行。所有陣列中的filter全部執行完畢後,再跳轉到請求的目標資源。

Java中Filter與Servlet的區別和聯絡

filter servlet介面 實現filter介面 實現servlet介面 使用步驟 1 建立類,繼承介面 2 實現方法 init dofilter destroy 3 配置web inf web.xml 1 建立類,繼承介面 2 實現方法 init service destroy getser...

servlet與filter的載入順序詳解

情況1 servlet沒加情況 web.xml配置順序 first filter,second filter,third filter,first servlet,second servlet,third servlet html view plain copy 初始化tomcat時 this is...

Filter與Servlet的區別和聯絡

filter servlet介面 實現filter介面 實現servlet介面 使用步驟 1 建立類,繼承介面 2 實現方法 init dofilter destroy 3 配置web inf web.xml 1 建立類,繼承介面 2 實現方法 init service destroy getser...