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精品久久久久久无码人妻| 视频二区亚洲精品| 国产乱子伦精品视频| 色老二精品视频在线观看| 欧美日韩一区二区在线免费观看| 国产综合网站| 亚洲精品成人7777在线观看| 青青操国产| 国产精品第三页在线看| 国产成人做受免费视频| 91成人在线免费视频| 国内精品久久久久鸭| 先锋资源久久| m男亚洲一区中文字幕| 福利国产微拍广场一区视频在线| 久久人午夜亚洲精品无码区| 性色生活片在线观看| 亚洲伊人久久精品影院| 免费可以看的无遮挡av无码| 国产真实乱子伦精品视手机观看| 韩日免费小视频| 国产精品无码AⅤ在线观看播放| 日韩欧美中文字幕在线精品| 无码一区18禁| 2020极品精品国产| 2021国产精品自拍| 精久久久久无码区中文字幕| 国产精品所毛片视频| 亚洲 欧美 日韩综合一区| 日韩午夜片| 国产天天色| 国产精品久线在线观看| 亚洲狼网站狼狼鲁亚洲下载| 国产香蕉在线视频| 精品欧美日韩国产日漫一区不卡| 国产精品网址你懂的| 秋霞国产在线| 无码一区二区波多野结衣播放搜索 | 中文字幕永久视频| 成人在线综合| 国产精品综合色区在线观看| 在线观看免费人成视频色快速| 中文字幕无码中文字幕有码在线| 久久综合色88| 免费一看一级毛片| 国产欧美日韩另类| 国产免费精彩视频| 亚洲无码视频一区二区三区| 国产偷国产偷在线高清| h视频在线播放| 色噜噜狠狠色综合网图区| 午夜高清国产拍精品| 国产一在线观看| 国产精品久久久久久久久| 欧美成人区| 久久精品国产免费观看频道| 亚洲视频免费在线看| 欧美成人精品一级在线观看| 日本91在线| 日韩欧美国产成人| 亚洲va视频| 中文字幕在线免费看| 不卡无码网| 日韩午夜伦| 国产情精品嫩草影院88av| 玖玖免费视频在线观看| 精品亚洲国产成人AV| 亚洲区视频在线观看| 老司机aⅴ在线精品导航| 美女免费黄网站| 国产av一码二码三码无码| 欧美一道本| 久视频免费精品6| 久久这里只有精品23| 重口调教一区二区视频| 999精品色在线观看| 午夜日本永久乱码免费播放片| 国产成人啪视频一区二区三区 | 强奷白丝美女在线观看| 久久精品国产一区二区小说|