更新時(shí)間:2024年01月24日10時(shí)52分 來源:傳智教育 瀏覽次數(shù):
如果想對(duì)包下的Action使用相同的攔截器,則需要為該包中的每個(gè)Action都重復(fù)指定同一個(gè)攔截器,這樣寫顯然過于頻繁。為了解決此問題,Struts2中支持使用默認(rèn)攔截器,它可以對(duì)其指定的包中的所有Action都起到攔截作用。一旦為某一個(gè)包指定了默認(rèn)攔截器,并且該包中的Action未顯示指定攔截器,則會(huì)使用默認(rèn)攔截器。反之,若此包中的Action顯示的指定了某個(gè)攔截器,則該默認(rèn)攔截器將會(huì)被屏蔽。此時(shí),如果還想使用默認(rèn)攔截器,則需要用戶手動(dòng)配置該默認(rèn)攔截器的引用。
配置默認(rèn)攔截器需要使用:
<default-interceptor-ref>
元素,此元素為:
<package>
元素的子元素。其語法格式如下所示:
<default-interceptor-ref name="攔截器(棧)的名稱"/>
在上述語法格式中,name屬性的值必須是已經(jīng)存在的攔截器或攔截器棧的名稱。下面用該語法格式配置一個(gè)默認(rèn)攔截器,示例代碼如下所示:
<package name="default" namespace="/" extends="struts-default"> <!--聲明攔截器--> <interceptors> <interceptor name="interceptor1" class="interceptorClass"/> <interceptor name="interceptor2" class="interceptorClass"/> <!--定義一個(gè)攔截器棧myStack,該攔截器棧包含兩個(gè)攔截器和一個(gè)攔截器棧--> <interceptor-stack name="myStack"> <interceptor-ref name="interceptor1"/> <interceptor-ref name="interceptor2"/> <interceptor-ref name="defaultStack"/> </interceptors> <!--配置包下的默認(rèn)攔截器,既可以是攔截器,也可以是攔截器棧--> <default-interceptor-ref name="myStack"/> <action name="login" class="com.ithiema.aciton.LoginAction"> <result name="input">/login.jsp</result> </aciton> </package>
在上述代碼中,指定了包下面的默認(rèn)攔截器為一個(gè)攔截器棧,該攔截器棧將會(huì)作用于包下所有的Action。
注意:每一個(gè)包下只能定義一個(gè)默認(rèn)攔截器,如果需要多個(gè)攔截器作為默認(rèn)攔截器,則可以將這些攔截器定義為一個(gè)攔截器棧,再將這個(gè)攔截器棧作為默認(rèn)攔截器即可。
Java培訓(xùn):Hibernate3項(xiàng)目開發(fā)所需的常見JAR包
2023-12-29Java培訓(xùn):模型驅(qū)動(dòng)方式處理請(qǐng)求參數(shù)
2023-12-28Java培訓(xùn):詳解RequestDispatcher接口
2023-12-27Java培訓(xùn):Collection接口的常用方法有哪些?
2023-12-26Java培訓(xùn):Out對(duì)象與Servlet引擎的關(guān)系
2023-12-25Java培訓(xùn):Struts2的默認(rèn)結(jié)果類型是什么?
2023-12-22北京校區(qū)