999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Struts2框架攔截器應用解析

2013-04-29 00:00:00林海菁
企業文化·中旬刊 2013年9期

摘 要:攔截器是Struts2框架的靈魂,它完成了Struts2框架的絕大部分功能。開發者既可以自由選擇內建攔截器隨意組合應用,又可以開發自定義的攔截器來實現特定的功能。本文較詳盡地解析了如何開發和配置攔截器。

關鍵詞:Struts2框架 攔截器 開發和配置 Interceptor接口

一、引言

在早期的Struts1框架中,很多基本的通用控制邏輯都固化在系統的核心控制器中,靈活性和擴展性都比較差。Struts2改變了這種做法,它把大部分核心控制器需要完成的工作按功能定義成一個個獨立的攔截器,開發者可以自由選擇,隨意組合,極大地提高了靈活性和擴展性。

攔截器體系是Struts2框架的一個重要組成部分,大量的內建攔截器完成了這個框架的大部分操作。Struts2的攔截器在使用上非常簡單方便,只要在配置文件中應用攔截器,就可以直接使用,不需要使用的時候在配置中取消即可。Struts2的攔截器由struts-default.xml、struts.xml等配置文件來管理,開發者可以很容易開發和配置自己的攔截器。

二、配置和使用攔截器

攔截器的定義過程很簡單,只需要在struts.xml文件中為攔截器類指定一個攔截器名。定義攔截器使用元素,其基本格式如下:

上述格式可以實現大多數情況下的攔截器配置。如果需要在配置攔截器時傳入參數,可以在元素中使用子元素。

此外,如果有多個攔截器常常一起使用,還可以將它們連在一起組成攔截器棧,使用時就可以直接調用這個攔截器棧。定義攔截器棧使用元素。

定義了攔截器(包含攔截器棧)之后,就可以使用這個攔截器來攔截Action了,在Action的execute方法執行之前將會先執行攔截器的攔截行為。

通過元素可以在Action內使用攔截器,配置語法與配置攔截器棧時引用攔截器的語法是一樣的。

系統中使用多個攔截器時,攔截器的執行順序與配置順序有很大的關系。通常認為,先配置的攔截器會先執行,但實際上,在Action的控制邏輯方法執行之前,位于攔截器鏈前面的攔截器將先發生作用,在Action的控制邏輯邏輯方法執行之后,位于攔截器鏈前面的攔截器將后發生作用。因此,開發時需要根據實際執行要求合理進行配置。

三、配置默認攔截器

配置一個包時,可以給它指定默認攔截器(棧),一經指定,如果該包中的Action沒有顯式指定攔截器,則默認的攔截器將會起作用。而一旦為該包中的Action顯式指定了某個攔截器,則默認的攔截器不會起作用,如果需要使用則必須手動配置。

配置默認攔截器使用元素,在子元素中使用,表明為該包下所有的Action配置默認的攔截器。每個包只能指定一個默認攔截器,如果想要使用多個攔截器,可以先把它們配置成一個攔截器棧。

四、實現攔截器類

雖然Struts2框架提供了大量的內置攔截器來實現Web應用的通用功能,但開發者在軟件開發時可能還有一些系統邏輯相關的通用功能需要通過自定義的攔截器來實現。開發者在定義自己的攔截器類時,需要實現Interceptor接口,該接口包含3個方法:

init方法主要用于初始化資源,在該攔截器被實例化之后執行攔截之前執行且只執行一次。destroy方法用于關閉或銷毀在init方法里打開的資源,在攔截器實例被銷毀之前執行。intercept方法是開發者需要實現的攔截操作,它返回一個字符串作為邏輯視圖。該方法的ActionInvocation參數包含了被攔截的Action的引用,通過調用該方法的invoke方法將控制權轉給下一個攔截器或Action的execute方法。這個參數可以獲得被攔截的Action實例,可以實現將HTTP請求中的參數解析出來,設置成Action屬性,也可以直接將HTTP請求中的HttpServletRequest實例和HttpServletResponse實例傳給Action。

五、攔截方法的攔截器

在默認情況下,如果某個Action定義了攔截器,這個攔截器會攔截該Action中的所有方法。如果不希望攔截所有方法,可以使用攔截器的方法過濾。

實現支持方法過濾的攔截器類,需要繼承MethodFilterInter-ceptor類。該類是AbstractInterceptor類的子類,它重寫了intercept方法,實現了對Action的攔截行為,但是只實現了方法的過濾,至于真正的攔截邏輯還需要開發者在另外提供的一個doIntercept方法中實現。

在MethodFilterInterceptor類中增加了兩個方法用來指定需要或不需要被攔截的方法:

1.setExcludeMethods方法:設置“不攔截名單”,所有在參數中列出的方法都不會被攔截。

2.setIncludeMethods方法:設置“攔截名單”,所有在參數中列出的方法都會被攔截。

由于MethodFilterInterceptor類包含了這兩個方法,所以它的子類也會獲得這兩個方法,可以在配置文件中指定需要攔截或不需要攔截的方法。

參考文獻:

[1]李剛.輕量級Java EE企業應用實戰——Struts2+Spring+ Hibernate整合開發.電子工業出版社,2010

[2]陳亞輝,繆勇.Struts2+Spring+Hibernate框架技術與項目實戰.清華大學出版社,2012

[3]清華大學計算機與信息管理中心.輕量級Java EE體系架構程序開發.中國鐵道出版社,2010

作者簡介:林海菁(1975-),女,江西南昌人,副教授,計算機應用專業碩士。

主站蜘蛛池模板: 91日本在线观看亚洲精品| 无码日韩精品91超碰| 青青青视频91在线 | 国产va在线观看免费| 9999在线视频| 天天色综网| 日日拍夜夜嗷嗷叫国产| 中文字幕亚洲电影| 欧美亚洲日韩中文| 国产亚洲视频中文字幕视频| 日韩成人免费网站| 99热这里只有精品免费| 精品91自产拍在线| 国产欧美高清| 亚洲欧洲天堂色AV| 国产拍揄自揄精品视频网站| 免费在线a视频| 蜜桃视频一区二区| 欧美日韩第二页| 青青草久久伊人| 免费99精品国产自在现线| 免费xxxxx在线观看网站| 国产一区二区三区日韩精品| 国产成人亚洲精品无码电影| 91成人在线观看| 丁香六月激情婷婷| 国产一在线观看| 亚洲国产精品日韩av专区| 亚洲床戏一区| 亚洲伊人久久精品影院| 国产sm重味一区二区三区| 欧洲极品无码一区二区三区| 国产午夜无码片在线观看网站| 婷婷色丁香综合激情| 久久久噜噜噜久久中文字幕色伊伊 | 青青青视频91在线 | 免费观看成人久久网免费观看| 国产精品99一区不卡| 一级毛片免费观看不卡视频| 日韩无码真实干出血视频| 好紧太爽了视频免费无码| 88国产经典欧美一区二区三区| 一区二区三区四区在线| 91久久国产热精品免费| 国产成人1024精品下载| 亚欧美国产综合| 97视频在线精品国自产拍| 亚洲丝袜第一页| 国产高清不卡视频| 天天综合网色| 国产亚洲男人的天堂在线观看| 久久精品最新免费国产成人| 欧美一区国产| 亚洲男人的天堂久久香蕉网| 久久久波多野结衣av一区二区| 国内毛片视频| 亚洲三级影院| 欧美一级高清片欧美国产欧美| 欧美一级夜夜爽www| 中文字幕天无码久久精品视频免费| 中文字幕久久波多野结衣| 国产精品30p| 成人另类稀缺在线观看| 国产大片黄在线观看| 毛片久久网站小视频| 综合久久五月天| 精品一区二区无码av| 久久精品国产国语对白| 欧美色99| 亚洲人成电影在线播放| 啪啪啪亚洲无码| 国产乱子伦手机在线| 中国一级毛片免费观看| 色综合热无码热国产| 亚洲精品色AV无码看| 亚洲av片在线免费观看| 国产一区二区在线视频观看| 久996视频精品免费观看| 香蕉视频国产精品人| 国产丝袜啪啪| 日韩精品视频久久| 黄色一级视频欧美|