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>
即可。
相關文章
- 兩種include方式及filter中的dispatcher解析Filter
- javaweb之Filter詳解(轉)JavaWebFilter
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- JSP簡單標籤標籤庫開發JS
- 20160331javaweb之JSP 標籤技術JavaWebJS
- JavaWeb開發之PrintWriter亂碼JavaWeb
- JavaWeb開發之 / 斜槓用法JavaWeb
- 【HTML5】開發之meta標籤的viewport使用說明HTMLView
- JavaWeb開發之頁面傳值JavaWeb
- Android UI 開發之實現底部切換標籤AndroidUI
- CSS之A標籤CSS
- HTML標記之a標籤HTML
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- 後端開發:【JavaWeb開發之Servlet的兩種配置方式】後端JavaWebServlet
- FusionChartsFree的JSP標籤開發薦JS
- 谷歌 Web 開發最佳實踐手冊(2.1.1):標籤中的影象谷歌Web
- scrum敏捷開發工具leangoo標籤Scrum敏捷Go
- JavaWeb開發之load-on-startup用法JavaWeb
- php.ini中開啟短標籤PHP
- HTML中的標籤的使用HTML
- ViewPager之標籤的自定義Viewpager
- 求助:如何中斷jsf中多個自定義標籤中的其他標籤JS
- HTML之常用標籤HTML
- JS 之 script標籤JS
- HTML之框架標籤HTML框架
- HTML之表格標籤HTML
- WordPress開發入門05:模板標籤
- JavaWeb開發Servlet之getParameter和getAttribute的區別,JavaWebServlet
- Jstl中標籤的使用JS
- HTML中的script標籤研究HTML
- html中的其他的常用標籤HTML
- ecshop 二次開發及模板標籤
- 菜鳥學Java(三)——JSTL標籤之核心標籤JavaJS
- JavaWeb三大元件(Servlet、Filter、Listener)JavaWeb元件ServletFilter
- Envoy原始碼分析之Dispatcher原始碼
- JavaWeb開發之Eclipse中jsp自動匯入類路徑JavaWebEclipseJS
- django-模板之標籤Django
- HTML之表單標籤HTML