亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Struts2學習教程之攔截器機制與自定義攔截器

2024-07-14 08:40:35
字體:
來源:轉載
供稿:網友

前言

攔截器體系是Struts2框架的重要組成部分,不夸張的說,沒有攔截器體系,也就沒有這么好用的Struts2框架了。在Struts2框架中,大量的攔截器完成了很多基礎的功能,比如,params攔截器負責解析HTTP請求的參數,并設置Action的屬性;servlet-config攔截器直接將HTTP請求中的HttpServletRequest實例和HttpServletResponse實例傳給Action;fileUpload攔截器則負責解析請求參數中的文件域,并將一個文件域設置成Action的三個屬性......這一切的一切都是由內建的攔截器來完成的。所以,掌握了Struts2中攔截器的使用原理與方式,也就把握住了Struts2框架的“命脈”。

但是學習Struts2到現在,除了在web.xml中配置了一個StrutsPrepareAndExecuteFilter過濾器外,還沒有接觸其它的什么攔截器,那為什么我們的應用能夠很好的運行呢?實際上,Struts2已經默認啟用了大量通用的攔截器,只要配置Action的package繼承了struts-default包,這些攔截器就會起作用。下面來看看Struts2內建的攔截器。

Struts2內建的攔截器

在Struts2框架中有很多內建的攔截器,這些攔截器幾乎完成了Struts2框架70%的工作,包括解析請求參數,將請求參數賦值給Action屬性等,Struts2這種靈巧的設計,很大程度上得益于攔截器的設計;當需要擴展Struts2功能時,只需要提供對應攔截器,并將它配置在Struts2容器中即可。

這些內建的攔截器以name-class對的形式配置在struts-default.xml文件中,其中name是攔截器名字,就是以后使用該攔截器的唯一標識;class則指定了該攔截器的實現類。對于這些內建的攔截器的詳細介紹,請參見官方文檔。

配置攔截器

在Struts.xml文件中定義攔截器只需為攔截器類指定一個攔截器名,就完成了攔截器定義。定義攔截器使用<interceptor.../>,例如:

<!-- 通過指定攔截器名和攔截器實現類來定義攔截器 --><interceptor name="攔截器名" class="攔截器實現類">  <param name="參數名">參數值</param></interceptor>

除此之外,還可以把多個攔截器連在一起組成攔截器棧,在攔截器中使用<interceptor-ref .../>來定義攔截器引用。例如:

<interceptor-stack name="攔截器棧一">  <interceptor-ref name="攔截器一"/>  <interceptor-ref name="攔截器二"/>  ...</interceptor-stack>

從程序結構上來看,攔截器棧由多個攔截器組成;但是從程序功能上來說,攔截器棧和攔截器是一樣的,它們包含的方法都會在Action的execute方法執行之前自動執行。所以,我們完全可以把攔截器棧當成一個更大的攔截器。

由于攔截器棧和攔截器是一致的,所以攔截器棧中又可以包含攔截器棧,例如:

<interceptor-stack name="攔截器棧二">  <interceptor-ref name="modelDriven"/>  <interceptor-ref name="攔截器棧一"/></interceptor-stack>

使用攔截器

一旦定義了攔截器棧和攔截器后,就可以使用這個攔截器?;驍r截器來攔截Action了,攔截器的攔截行為將會在Action的execute方法執行之前被執行。

通過使用<interceptor-ref .../>元素可以在Action內使用攔截器,在Action中使用攔截器的配置語法與配置攔截器棧時引用攔截器的語法完全一樣。例如:

<action name="login" class="com.jellythink.practise.LoginAction">  <result name="error">/error.jsp</result>  <result name="success">/welcome.jsp</result>  <!-- 攔截器棧 -->  <interceptor-ref name="defaultStack"/>  <!-- 攔截器 -->  <interceptor-ref name="test1"/>  <!-- 帶參數的攔截器 -->  <interceptor-ref name="test2">    <param name="key">動態參數</param>  </interceptor-ref></action>

這樣配置完成以后,在執行DownloadAction之前,這三個攔截器都會起作用。

配置默認攔截器

當配置一個包時,可以為其指定默認攔截器。一旦為某個包指定了默認的攔截器,如果該包中的Action沒有顯式指定攔截器,則默認的攔截器將會起作用。但是,一旦我們為該包中的Action顯式應用了某個攔截器,則默認的攔截器不會起作用;如果該Action需要使用該默認攔截器,則必須手動配置該攔截器的引用。

只有當Action中沒有顯式應用攔截器時,該Action所在包的默認攔截器才會生效。

配置默認攔截器使用<default-interceptor-ref.../>元素,該元素作為<package.../>元素的子元素使用,為該包下的所有Action配置默認的攔截器。例如:

<default-interceptor-ref name="默認攔截器"/>

也可以為默認攔截器指定參數,例如:

<default-interceptor-ref name="默認攔截器">  <param name="參數名">參數值</param></default-interceptor-ref>

在struts-default.xml文件中,配置了一個名為struts-default的抽象包,在該包中定義了名為defaultStack的默認攔截器引用。當我們定義的包繼承struts-default包時,也繼承了它的默認攔截器棧:defaultStack,這也意味著,如果我們不為Action顯式地應用攔截器,則defaultStack攔截器棧會自動生效。

自定義攔截器

1>.添加一個類,讓它繼承AbstractInterceptor類,或者實現Interceptor接口

public class TimeInterceptor extends AbstractInterceptor {/*** 攔截器的核心方法intercept的返回值是一個字符串*/@Overridepublic String intercept(ActionInvocation invocation) throws Exception {// TODO Auto-generated method stubreturn "login";}}

2>.在struts.xml的package中添加interceptors子節點,并在它下面添加Interceptor節點

<package name="goods" namespace="/goods" extends="common-pkg"><interceptors><interceptor name="timeInterceptor" class="com.wskj.struts2.interceptor.TimeInterceptor"></interceptor></interceptors></package>

3>.在想被攔截的action節點下添加子節點interceptor-ref

<action name="list_Category" class="com.wskj.struts2.controller.CategoryAction" method="list"><interceptor-ref name="timeInterceptor"></interceptor-ref><result name="list" type="dispatcher">/pages/Category/list.jsp</result></action>

總結

這篇文章對Stuts2中的核心——攔截器進行了一個初步的總結,在后面的文章中,我們會實現一個我們自己的攔截器,并將這篇文章中總結的知識點進行運用。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区高清在线观看| 国产91色在线免费| 国产精品男人的天堂| 精品久久久久久中文字幕大豆网| 在线视频日本亚洲性| 国产视频亚洲视频| 91久久精品一区| 最近2019年好看中文字幕视频| 91亚洲精品久久久久久久久久久久| 精品人伦一区二区三区蜜桃网站| 福利一区视频在线观看| 国产黑人绿帽在线第一区| 国产成人精品视频在线观看| 91在线播放国产| 国产精品黄色av| 久久久www成人免费精品张筱雨| 欧美日韩久久久久| 日韩暖暖在线视频| 国产精品黄页免费高清在线观看| 欧美成人免费小视频| 日韩精品黄色网| 国产日韩专区在线| 午夜精品蜜臀一区二区三区免费| 国产综合色香蕉精品| 91在线观看免费高清完整版在线观看| 两个人的视频www国产精品| 欧美成年人在线观看| 欧美日韩免费区域视频在线观看| 亚洲三级免费看| 国产精品精品视频一区二区三区| 日韩精品视频三区| 亚洲国产成人精品久久久国产成人一区| 国产丝袜一区视频在线观看| 日韩在线观看免费高清| 亚洲视频在线观看免费| 日韩精品丝袜在线| 亚洲a成v人在线观看| 日韩电影大全免费观看2023年上| 亚洲国产精品成人va在线观看| 尤物yw午夜国产精品视频| 日韩高清欧美高清| 午夜精品一区二区三区在线播放| 色噜噜狠狠狠综合曰曰曰| 欧美性猛交丰臀xxxxx网站| 欧美肥婆姓交大片| 亚洲娇小xxxx欧美娇小| 夜色77av精品影院| 亚洲精品成人网| 欧美性xxxx极品高清hd直播| 欧美成人激情视频| 久久久久久一区二区三区| 中文字幕亚洲一区二区三区五十路| 国产精品99一区| 波霸ol色综合久久| 操91在线视频| 亚洲18私人小影院| 国产精品99蜜臀久久不卡二区| 亚洲网站在线观看| 日韩在线观看网址| 国产91精品高潮白浆喷水| 欧美日韩在线免费| 欧美激情亚洲激情| 国产69精品久久久久99| 国产ts人妖一区二区三区| 日韩高清电影免费观看完整| 亚洲精品久久久一区二区三区| 国产91免费观看| 亚洲综合大片69999| 国外视频精品毛片| 91精品国产高清久久久久久91| 国产视频精品免费播放| 亚洲国产天堂网精品网站| 国产精品6699| 一本大道久久加勒比香蕉| 日韩av最新在线观看| 日韩免费视频在线观看| 国产视频一区在线| 国产亚洲视频中文字幕视频| 欧美www在线| 精品视频偷偷看在线观看| 欧美激情一区二区三区成人| 欧美成年人视频网站| 久久久久久尹人网香蕉| 成人a级免费视频| 欧美大片va欧美在线播放| 久久久国产一区二区| 日韩精品免费在线| 亚洲欧美一区二区三区在线| 性欧美暴力猛交69hd| 日韩精品视频观看| 91久久精品日日躁夜夜躁国产| 日韩欧美在线中文字幕| 亚洲黄色在线看| 日韩精品视频免费专区在线播放| 国产视频精品va久久久久久| 欧美日韩人人澡狠狠躁视频| 乱亲女秽乱长久久久| 久久久久久久久久久久久久久久久久av| 欧美日韩中国免费专区在线看| 亚洲精品久久久久久久久久久久| 日韩欧美在线观看视频| 美女福利精品视频| 一区二区三区高清国产| 成人免费视频在线观看超级碰| 国产偷国产偷亚洲清高网站| 精品无码久久久久久国产| 在线亚洲欧美视频| 国产网站欧美日韩免费精品在线观看| 亚洲人成77777在线观看网| 欧美一级电影免费在线观看| 欧美国产日韩精品| 97在线视频免费播放| 欧美多人乱p欧美4p久久| 日韩av在线免费观看一区| 亚洲精品97久久| 97精品视频在线观看| www国产精品com| 国内精品久久久久伊人av| 热久久美女精品天天吊色| 亚洲欧美在线x视频| 成人性生交大片免费看视频直播| 成人在线视频福利| 亚洲福利视频免费观看| 国产日韩欧美在线看| 国产中文日韩欧美| 日韩欧美在线视频| 国产精品69久久| 亚洲一区二区免费| 久久久久九九九九| 中文字幕av一区二区三区谷原希美| 色综合影院在线| 国产97色在线|日韩| 91高清在线免费观看| 深夜福利国产精品| 日韩电影第一页| 国产97色在线| 久久久精品视频成人| 国产一区二区成人| 欧美精品第一页在线播放| 欧美噜噜久久久xxx| 另类天堂视频在线观看| 日韩精品亚洲元码| 亚洲久久久久久久久久| 欧美电影在线播放| 欧美激情视频一区| 高清一区二区三区四区五区| 日韩精品中文字幕在线| 欧美丰满少妇xxxxx| 久久精品久久久久| 欧美激情在线观看视频| 国产精品久久久久久亚洲调教| 国产精品久久久久av免费| 亚洲欧美综合精品久久成人| 91午夜在线播放| 国产深夜精品福利| 日韩电影中文字幕在线观看| 欧美电影免费观看网站| 精品国产乱码久久久久久天美| 国产日韩精品在线播放| 久久激情五月丁香伊人| 亚洲伊人久久大香线蕉av| 欧美性猛交xxxx偷拍洗澡| 亚洲欧美激情在线视频| 精品国产一区二区三区久久久狼|