1. 程式人生 > >web.xml中dispatcher標籤詳解

web.xml中dispatcher標籤詳解

一、概念(RequestDispatcher)

RequestDispatcher提供兩個方法forward和include區別

都表示要跳轉到其他資源,不同的是,如果使用forward跳轉則後面的response輸出則不會執行,而用include來跳轉,則include的servlet執行完後,再返回到原來的servlet執行response的輸出(如果有)。

如:
servlet A
RequestDispatcher disp = request.getRequestDispatcher("B");
disp.forward(request, response);
System.out.println("servlet A completed");
PrintWriter pw = response.getWriter();
pw.println("servlet A");

servlet B
PrintWriter pw = response.getWriter();
pw.println("servlet B");

輸出結果:
控制檯:servlet A completed
頁面:servlet B
如果將forward換成include的話,則結果為:
控制檯:servlet A completed
頁面:servlet B servlet A
PS:如果在servlet B裡吧pw給close掉了的話,那servlet A 這裡就無法輸出了,則結果就和第一個一樣。

二、<dispatcher>元素

2.4版本的servlet規範在部屬描述符中新增加了一個<dispatcher>元素,這個元素有四個可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一個<filter-mapping>元素中加入任意數目的<dispatcher>,使得filter將會作用於直接從客戶端過來的request,通過forward過來的request,通過include過來的request和通過<error-page>過來的request。如果沒有指定任何< dispatcher >元素,預設值是REQUEST。

可以通過下面幾個例子來輔助理解。
例1:

Xml程式碼

<filter-mapping>   
<filter-name>Logging Filter</filter-name>   
<url-pattern>/products/*</url-pattern>   
</filter-mapping>

這種情況下,過濾器將會作用於直接從客戶端發過來的以/products/…開始的請求。因為這裡沒有制定任何的< dispatcher >元素,預設值是REQUEST。

例2:

Xml程式碼

<filter-mapping>   
<filter-name>Logging Filter</filter-name>   
<servlet-name>ProductServlet</servlet-name>   
<dispatcher>INCLUDE</dispatcher>   
</filter-mapping>

這種情況下,如果請求是通過request dispatcher的include方法傳遞過來的對ProductServlet的請求,則要經過這個過濾器的過濾。其它的諸如從客戶端直接過來的對ProductServlet的請求等都不需要經過這個過濾器。
指定filter的匹配方式有兩種方法:直接指定url-pattern和指定servlet,後者相當於把指定的servlet對應的url-pattern作為filter的匹配模式
filter的路徑匹配和servlet是一樣的,都遵循servlet規範中《SRV.11.2 Specification of Mappings》一節的說明

例3:

Xml程式碼

<filter-mapping>   
<filter-name>Logging Filter</filter-name>   
<url-pattern>/products/*</url-pattern>   
<dispatcher>FORWARD</dispatcher>   
<dispatcher>REQUEST</dispatcher>   
</filter-mapping>

在這種情況下,如果請求是以/products/…開頭的,並且是通過request dispatcher的forward方法傳遞過來或者直接從客戶端傳遞過來的,則必須經過這個過濾器。

相關推薦

web.xmldispatcher標籤

一、概念(RequestDispatcher)RequestDispatcher提供兩個方法forward和include區別都表示要跳轉到其他資源,不同的是,如果使用forward跳轉則後面的response輸出則不會執行,而用include來跳轉,則include的ser

Mybatis mapper.xml常用標籤

一、SQL語句標籤: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "

面試題:J2EEweb.xml配置文件

ppi targe nor tag 2.4 -type exti tab 標簽 一、web.xml是什麽 web.xml學名叫部署描述符文件,是在Servlet規範中定義的,是Web應用的配置文件,是Web應用的基礎。 二、web.xml加載流程 總的來說:Servle

mybatis之mybatis-config.xml 配置標籤

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-con

Mybatis的mapper檔案trim標籤

0、背景 parameterType引數型別student是別名,裡面的欄位有id,name,age,sex被封裝成bean物件,跟資料庫中student表中欄位一一對應,以下案例只為一個SQL語句。(初入SSM坑,請多多指教) update student set name='

mavenscope標籤

scope的分類 compile(編譯範圍) 預設就是compile,什麼都不配置也就是意味著compile。compile表示被依賴專案需要參與當前專案的編譯,當然後續的測試, 執行週期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去。 test(測試範圍

jsp頁面jstl標籤 包括< c:choose>

JSLT標籤庫,是日常開發經常使用的,也是眾多標籤中效能最好的。把常用的內容,放在這裡備份一份,隨用隨查。儘量做到不用查,就可以隨手就可以寫出來。這算是Java程式設計師的基本功吧,一定要紮實。JSTL全名為JavaServer Pages Standard Tag Library,目前最新的版本為1.1版。

log4j2.x配置檔案標籤

log4j2.0以後我們通常在log4j2.xml中配置相關引數,在配置的時候我們需要理解這些引數的具體含義,下面列出了這些引數的解釋。 1、Logger 完成日誌資訊的處理 <logger name="com.srd.ljzd" level="I

WEB應用的classpath

WEB應用中的classpath指向哪裡 JavaEE中classpath與系統環境變數中的classpath不一樣,WEB應用中的classpath專指專案WEB-INF/class和WEB-INF/lib,web容器在啟動時會對這兩個目錄下的class檔案,配置檔案以及jar檔案進

Java jsp頁面jstl標籤

JSLT標籤庫,是日常開發經常使用的,也是眾多標籤中效能最好的。把常用的內容,放在這裡備份一份,隨用隨查。儘量做到不用查,就可以隨手就可以寫出來。這算是Java程式設計師的基本功吧,一定要紮實。 JSTL全名為JavaServer Pages Standard Tag Library,目前最新的版本為1.

Tomcat web.xml配置參數

.html diff fig .org 參數 www net ati gui Apache Tomcat Configuration Reference - The Context Containerhttps://tomcat.apache.org/tomcat-5.5-

web.xml標籤的作用

1.啟動一個WEB專案的時候,容器(如:Tomcat)會去讀它的配置檔案web.xml.讀兩個節點: <listener></listener> 和 <context-param></context-param> 2.緊接著,容器建立一個ServletCont

史上最全web.xml配置檔案元素

一、web.xml配置檔案常用元素及其意義預覽 1 <web-app> 2 3 <!--定義了WEB應用的名字--> 4 <display-name></display-name>

史上最全web.xml配置檔案元素(轉載防丟)

web.xml配置檔案常用元素及其意義預覽 1 <web-app> 2 3 <!--定義了WEB應用的名字--> 4 <display-name></display-name> 5

---Filter ( 三 ) web.xmldispatcher節點的作用

Filter的作用 Filter的目的就是在請求和響應之間攔截檢查請求相應的內容。主要是對請求和相應的處理。 指定 Filter攔截型別 web.xml配置: <filter> <filter-name>

web.xmltaglib標籤報錯問題解決方案

<taglib>標籤在web.xml檔案中報錯解決方法配置web.xml檔案時,taglib標籤報錯,但不會影響程式的執行,web.xml 如下:< xml version="1.0" encoding="UTF-8" ><web-app id

Web開發基礎常識-Js,JSP,tomcat,Servlet,web是幹什麼的?

關於Servlet開發的詳解  http://blog.csdn.net/hejingyuan6/article/details/30273879http://www.cnblogs.com/xdp-gacl/p/3760336.html一、Js 是 javascript 的

web應用的入口:web.xml核心配置檔案

前言:如果要了解web專案的底層實現,web.xml配置檔案,是必須要掌握的。web.xml配置檔案,是web專案的核心,web專案的啟動,從這裡開始。 為了方便大家理解,我們從最常見的配置開始著手來說明。一,contextConfigLocation contextCo

mybatis配置檔案conf.xml的environment

在這篇文章中,我們接著前文繼續往下看其他的配置元素,今天的主角就是我們的<environments>元素,該元素用於對我們需要訪問的資料庫配置進行設定,我們先來看一下配置: <environments default="development"

Spring XML配置Bean標籤

前段時間回顧Spring的一些技術和資訊,自己去試著配置框架進行練習,這裡就分享一下Spring bean配置的各種標籤方便自己去配置資訊, beans: 整個配置檔案的根節點,包含一個或多個Bean元素。在該標記中可配置名稱空間與schema的裝載路徑,還可以通過