JavaWeb開發之Filter中的dispatcher標籤
dispatcher元素
2.4版本的servlet規範在部屬描述符中新增加了一個<dispatcher>
元素,這個元素有四個可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一個<filter-mapping>
元素中加入任意數目的<dispatcher>
,使得filter將會作用於直接從客戶端過來的request(REQUEST),通過forward過來的request(FORWARD),通過include過來的request(INCLUDE)和通過<error-page>
過來的request(ERROR)。如果沒有指定任何< dispatcher >
元素,預設值是REQUEST。
注意:<dispatcher></dispatcher>
必須寫在filter-mapping的最後。dispatcher的前提條件當然是要先滿足url-pattern,然後dispatcher有四種可能的屬性:
1、REQUEST
只要發起的操作是一次HTTP請求,比如請求某個URL、發起了一個GET請求、表單提交方式為POST的POST請求、表單提交方式為GET的GET請求。一次重定向則前後相當於發起了兩次請求,這些情況下有幾次請求就會走幾次指定過濾器。
2、FOWARD只有噹噹前頁面是通過請求轉發轉發過來的情形時,才會走指定的過濾器
3、INCLUDE只要是通過<jsp:include page="xxx.jsp" />
,嵌入進來的頁面,每嵌入的一個頁面,都會走一次指定的過濾器。
<error-page></error-page>
:<error-page>
<error-code>400</error-code>
<location>/filter/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/filter/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/filter/error.jsp</location>
</error-page>
意思是HTTP請求響應的狀態碼只要是400、404、500三種狀態碼之一,容器就會將請求轉發到error.jsp下,這就觸發了一次error,走進了配置的DispatchFilter。需要注意的是注意一點的是,雖然把請求轉發到error.jsp是一次forward的過程,但是配置成<dispatcher>FORWARD</dispatcher>
並不會走DispatchFilter這個過濾器。
這四種dispatcher方式可以單獨使用,也可以組合使用,配置多個<dispatcher></dispatcher>
即可。
相關文章
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- JavaWeb開發之PrintWriter亂碼JavaWeb
- JavaWeb開發之 / 斜槓用法JavaWeb
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- JavaWeb開發之load-on-startup用法JavaWeb
- JavaWeb開發之頁面傳值JavaWeb
- scrum敏捷開發工具leangoo標籤Scrum敏捷Go
- JavaWeb開發Servlet之getParameter和getAttribute的區別,JavaWebServlet
- JS 之 script標籤JS
- HTML之常用標籤HTML
- HTML之表格標籤HTML
- HTML之框架標籤HTML框架
- JavaWeb開發之Eclipse中jsp自動匯入類路徑JavaWebEclipseJS
- Envoy原始碼分析之Dispatcher原始碼
- Chrome 開發者工具 performance 標籤頁的用法ChromeORM
- HTML中的標籤的使用HTML
- WordPress開發入門05:模板標籤
- JavaWeb三大元件(Servlet、Filter、Listener)JavaWeb元件ServletFilter
- HTML之簡單標籤HTML
- HTML之表單標籤HTML
- django-模板之標籤Django
- HTML標籤(基本標籤的使用)HTML
- HarmonyOS NEXT應用開發之Tab元件實現增刪Tab標籤元件
- pom中repositories標籤
- a標籤href與onclick之間的碰撞
- JavaWeb開發技巧之裝飾器設計模式JavaWeb設計模式
- script標籤中的async和defer
- html中在span標籤裡面可以放那些標籤?HTML
- JavaWEB開發03——JSJavaWebJS
- NLP標籤/關鍵詞-提取工具-java開發Java
- ci3+smarty模仿開發出dedecms標籤
- elementplus中標籤頁操作
- Android之去掉文字內容的HTML標籤AndroidHTML
- html中p標籤內為何不能巢狀div標籤?HTML巢狀
- 【024期】JavaWeb面試題(五):Filter和ListenerJavaWeb面試題Filter
- 說一說 HTML 中的 script 標籤HTML
- AbutionGraph中的多標籤/多維度
- java去除xml檔案中的標籤JavaXML