struts2攔截器及其應(yīng)用

一垮抗、struts2簡介

Struts2是一個(gè)基于MVC設(shè)計(jì)模式的Web應(yīng)用框架虏束,它本質(zhì)上相當(dāng)于一個(gè)servlet洪添,在MVC設(shè)計(jì)模式中绅项,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互曲尸。也就是說赋续,struts2可以實(shí)現(xiàn)代碼的MVC分離,而傳統(tǒng)的servlet在面對(duì)龐大的工程時(shí)解耦不是很好另患。在團(tuán)隊(duì)協(xié)作里面纽乱,struts2的配置文件是聯(lián)系不同模塊之間的關(guān)鍵,方便解耦柴淘。

不過迫淹,Struts2曾曝出2個(gè)高危安全漏洞秘通,一個(gè)是使用縮寫的導(dǎo)航參數(shù)前綴時(shí)的遠(yuǎn)程代碼執(zhí)行漏洞,另一個(gè)是使用縮寫的重定向參數(shù)前綴時(shí)的開放式重定向漏洞敛熬。這些漏洞可使黑客取得網(wǎng)站服務(wù)器的“最高權(quán)限”肺稀,從而使企業(yè)服務(wù)器變成黑客手中的“肉雞”。所以有觀點(diǎn)認(rèn)為SpringMVC將逐步吞并struts2应民,不過本人沒有學(xué)習(xí)過SpringMVC话原,所以無法對(duì)以上觀點(diǎn)做出評(píng)判。

二诲锹、struts2攔截器介紹

攔截器是面向切面編程的實(shí)例繁仁,它將多個(gè)模塊的共同代碼模塊提取出來,靈活地插入各個(gè)模塊之中归园,減少了系統(tǒng)的重復(fù)代碼黄虱,確保業(yè)務(wù)對(duì)象的整潔。

面向切面編程(AOP)舉例:一個(gè)工程當(dāng)中多個(gè)類需要在執(zhí)行之后打印日志信息庸诱,“打印日志信息”這一功能并不是某個(gè)特定模塊獨(dú)有的功能捻浦,如果在每個(gè)模塊都加入這部分代碼,就會(huì)導(dǎo)致代碼重用性降低桥爽,所以就有了面向切面編程編程朱灿,將打印日志信息這部分代碼提取出來,靈活的嵌入各個(gè)模塊钠四。

struts2攔截器體現(xiàn)了AOP思想盗扒,它可以在指定action的代碼執(zhí)行前后加入攔截器類的代碼,不需要的時(shí)候缀去,只需要在配置文件中刪除攔截器侣灶,同時(shí)可以保留攔截器的代碼。

三缕碎、攔截器的使用例子

此處使用struts2攔截器實(shí)現(xiàn)登錄驗(yàn)證功能來介紹攔截器的使用炫隶。

功能描述:網(wǎng)站的某部分內(nèi)容在用戶沒登錄之前是不能訪問的,最簡單的做法就是在每個(gè)展現(xiàn)內(nèi)容的action中加入幾句判斷用戶是否登錄的代碼阎曹,但如果涉及的action比較多,開發(fā)者就不得不復(fù)制粘貼同樣的代碼到不同的類中煞檩,而修改的時(shí)候也需要到各個(gè)類修改处嫌,比較麻煩。

struts2攔截器將代碼實(shí)現(xiàn)和AOP的配置分開來斟湃,配置信息集中在struts2.xml中熏迹,比較方便修改。此外代碼只有一份凝赛,可以做到一次修改注暗,造福全局坛缕。

流程如下(登錄之后才能訪問的網(wǎng)頁放在WEB-INF下):

登錄->action1->驗(yàn)證成功->跳轉(zhuǎn)到頁面1->點(diǎn)擊某個(gè)按鈕->調(diào)用action2->使用登錄后才能用的頁面2.

通常action1不用攔截器,因?yàn)楸旧硎堑卿涷?yàn)證部分捆昏,而action2則需要赚楚,所以需要在“”使用登錄后才能用的頁面2”前添加攔截器,變?yōu)椋?/p>

登錄->action1->驗(yàn)證成功->跳轉(zhuǎn)到頁面1->點(diǎn)擊某個(gè)按鈕->調(diào)用action2->攔截器驗(yàn)證當(dāng)前是否登錄->使用登錄后才能用的頁面2.

代碼:

1骗卜、配置web.xml宠页,使用struts2

圖片發(fā)自簡書App

2、jsp頁面

圖片發(fā)自簡書App

圖片發(fā)自簡書App

圖片發(fā)自簡書App


3寇仓、編寫對(duì)應(yīng)的action

圖片發(fā)自簡書App

圖片發(fā)自簡書App

4举户、編寫攔截器

圖片發(fā)自簡書App

5、配置struts2.xml

圖片發(fā)自簡書App

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遍烦,一起剝皮案震驚了整個(gè)濱河市俭嘁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌服猪,老刑警劉巖供填,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔓姚,居然都是意外死亡捕虽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門坡脐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泄私,“玉大人,你說我怎么就攤上這事备闲∩味耍” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵恬砂,是天一觀的道長咧纠。 經(jīng)常有香客問我,道長泻骤,這世上最難降的妖魔是什么漆羔? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮狱掂,結(jié)果婚禮上演痒,老公的妹妹穿的比我還像新娘。我一直安慰自己趋惨,他們只是感情好鸟顺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著器虾,像睡著了一般讯嫂。 火紅的嫁衣襯著肌膚如雪蹦锋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天欧芽,我揣著相機(jī)與錄音莉掂,去河邊找鬼。 笑死渐裸,一個(gè)胖子當(dāng)著我的面吹牛巫湘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昏鹃,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼尚氛,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了洞渤?” 一聲冷哼從身側(cè)響起阅嘶,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎载迄,沒想到半個(gè)月后讯柔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡护昧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年魂迄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惋耙。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捣炬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绽榛,到底是詐尸還是另有隱情湿酸,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布灭美,位于F島的核電站推溃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏届腐。R本人自食惡果不足惜铁坎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犁苏。 院中可真熱鬧厢呵,春花似錦、人聲如沸傀顾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽短曾。三九已至寒砖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫉拐,已是汗流浹背哩都。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婉徘,地道東北人漠嵌。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像盖呼,于是被迫代替她去往敵國和親儒鹿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1几晤、struts2工作流程 Struts 2框架本身大致可以分為3個(gè)部分: 核心控制器FilterDispatch...
    重山楊閱讀 1,515評(píng)論 0 38
  • 攔截器是Struts2框架的核心约炎,它主要完成解析請(qǐng)求參數(shù)、將請(qǐng)求參數(shù)賦值給Action屬性蟹瘾、執(zhí)行數(shù)據(jù)校驗(yàn)圾浅、文件上傳...
    重山楊閱讀 3,936評(píng)論 2 13
  • 標(biāo)簽 如果要配置的標(biāo)簽,那么必須要先配置標(biāo)簽憾朴,代表的包的概念狸捕。 包含的屬性 name包的名稱,要求是唯一的众雷,管理a...
    偷偷得路過閱讀 1,333評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理灸拍,服務(wù)發(fā)現(xiàn),斷路器报腔,智...
    卡卡羅2017閱讀 134,638評(píng)論 18 139
  • 你是否還記得我們第一次的相遇纯蛾? 你是否還記得曾經(jīng)的我們無話不談纤房? 人與人之間總是充滿著一開...
    婷Kitty閱讀 221評(píng)論 0 0