SpringMVC入門知識8

攔截器
攔截器的操作是基于aop的
攔截器的定義:
定義攔截器實(shí)現(xiàn)HandlerInteceptor接口,接口中三個(gè)方法:
preHandle:
進(jìn)入Handler方法之前執(zhí)行
用于身份認(rèn)證和身份授權(quán),登錄認(rèn)證和權(quán)限校驗(yàn)
比如身份認(rèn)證嗤练,如果認(rèn)證不通過饵骨,表示當(dāng)前用戶沒有登錄,需要此方法攔截不再向下執(zhí)行
return false表示攔截住,不往下執(zhí)行
postHandle
進(jìn)入Handler方法之后湿诊,返回ModelAndView之前返回
應(yīng)用場景:
從ModelAndView出發(fā),將公用的模型數(shù)據(jù)(比如菜單導(dǎo)航)在這里傳到視圖瘦材,也可以在這里統(tǒng)一指定視圖
afterCompletion
執(zhí)行Handler完成之后執(zhí)行此方法
統(tǒng)一的異常處理
統(tǒng)一的日志處理
攔截器的配置:
SpringMVC的攔截器是針對HandlerMapping進(jìn)行攔截設(shè)置
如果在某個(gè)HandlerMapping中配置攔截器厅须,經(jīng)過該HandlerMapping攔截成功的Handler最終才使用該攔截器
SpringMVC可以配置類似全局的攔截器,SpringMVC將配置的類似的全局的攔截器注入到每個(gè)HandlerMapping中
攔截器的全局配置:
<mvc:inteceptors>可以設(shè)置多個(gè)攔截器食棕,順序執(zhí)行朗和,/**攔截所有的url和所有的子url路徑
攔截器的編寫:
測試需求:
測試多個(gè)攔截器各個(gè)方法的執(zhí)行時(shí)機(jī)
攔截器的放行:
在第一個(gè)方法中設(shè)置return true
總結(jié):
1、當(dāng)兩個(gè)攔截器都放行的時(shí)候簿晓,preHandle方法順序執(zhí)行眶拉,postHandle、afterCompletion逆向執(zhí)行
2憔儿、攔截器1放行忆植,攔截器2的preHandle方法才會執(zhí)行,攔截器2的preHandler不放行谒臼,攔截器2的剩下的方法不執(zhí)行
3朝刊、只要有一個(gè)攔截器不放行,post方法就都不會執(zhí)行
兩個(gè)攔截器均不放行:
只執(zhí)行第一個(gè)攔截器的preHandle方法蜈缤,剩下的所有的都不執(zhí)行
小結(jié):
根據(jù)測試結(jié)果對攔截器進(jìn)行應(yīng)用拾氓,比如統(tǒng)一的日志處理,需要該攔截器的preHandle方法一定要放行底哥,并且要放在攔截器鏈的第一個(gè)位置
登錄認(rèn)證的攔截器咙鞍,放在攔截器鏈的第一個(gè)位置,權(quán)限校驗(yàn)攔截器叠艳,需要放在登錄認(rèn)證攔截器之后(因?yàn)榈卿浲ㄟ^后才校驗(yàn)權(quán)限)
攔截器的應(yīng)用:
登錄認(rèn)證的攔截器:
需求:
1奶陈、用戶請求url
2易阳、攔截器進(jìn)行攔截校驗(yàn):
如果請求的url是公開地址(無需登錄附较,即可訪問的地址),放行
如果用戶session不存在潦俺,跳轉(zhuǎn)到登錄頁面
如果用戶session存在拒课,那么放行,繼續(xù)操作
登錄的controller方法:
設(shè)置輸入用戶名和密碼登錄事示,在形參里面定義session形參
在session中保存用戶身份信息:
session.setAttribute("arg0",arg1);
重定向到其他的頁面
退出的controller方法:
退出清除session即可:
session.invalidate();
登錄攔截器的實(shí)現(xiàn):

                //獲取請求的url
                String url = request.getRequestURI();
                //判斷url是否是公開地址(實(shí)際使用時(shí)將公開地址配置到配置文件中)
                //這里的公開地址是登錄提交的地址
                if(url.indexOf("login.action")>=0){
                    //如果要進(jìn)行登錄提交早像,放行
                    return true;
                }
                //判斷session
                HttpSession session = request.getSession();
                String username = (String)session.getAttribute("username");
                //判斷身份信息
                //身份信息存在,放行
                if(username!=null){
                    return true;
                }
                //如果執(zhí)行到這里肖爵,表示用戶身份需要認(rèn)證
                //跳轉(zhuǎn)到登錄界面
                request.getRequestDisptcher("").forword(request,response);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卢鹦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子劝堪,更是在濱河造成了極大的恐慌冀自,老刑警劉巖揉稚,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熬粗,居然都是意外死亡搀玖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門驻呐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灌诅,“玉大人,你說我怎么就攤上這事含末〔率埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵答渔,是天一觀的道長关带。 經(jīng)常有香客問我,道長沼撕,這世上最難降的妖魔是什么宋雏? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮务豺,結(jié)果婚禮上磨总,老公的妹妹穿的比我還像新娘。我一直安慰自己笼沥,他們只是感情好蚪燕,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奔浅,像睡著了一般馆纳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汹桦,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天鲁驶,我揣著相機(jī)與錄音,去河邊找鬼舞骆。 笑死钥弯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的督禽。 我是一名探鬼主播脆霎,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狈惫!你這毒婦竟也來了睛蛛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忆肾,沒想到半個(gè)月后菠红,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡难菌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年试溯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郊酒。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遇绞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出燎窘,到底是詐尸還是另有隱情摹闽,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布褐健,位于F島的核電站付鹿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚜迅。R本人自食惡果不足惜舵匾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谁不。 院中可真熱鬧坐梯,春花似錦、人聲如沸刹帕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偷溺。三九已至蹋辅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挫掏,已是汗流浹背侦另。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砍濒,地道東北人淋肾。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓硫麻,卻偏偏與公主長得像爸邢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子拿愧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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

  • 一、攔截器入門(工程springmvc-mybatis10) 1.1 攔截器的定義 HandlerIntercep...
    yjaal閱讀 1,146評論 1 8
  • 1.定義 定義攔截器,實(shí)現(xiàn)HandlerInterceptor接口,接口中實(shí)現(xiàn)三個(gè)方法. 2.攔截器配置 針對Ha...
    王子也寂寞閱讀 485評論 0 0
  • 從三月份找實(shí)習(xí)到現(xiàn)在券敌,面了一些公司唾戚,掛了不少,但最終還是拿到小米待诅、百度叹坦、阿里、京東卑雁、新浪募书、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,184評論 11 349
  • 姓名: 李小娜 [嵌牛導(dǎo)讀]: SpringMVC 中的Interceptor 攔截器也是相當(dāng)重要和相當(dāng)有用的测蹲,...
    n184閱讀 3,147評論 0 4
  • 站在最前面的這只狗狗叫排骨 它是星光公園收養(yǎng)的第一只流浪狗 我已經(jīng)記不清第一次見到它的時(shí)候 它是什么樣子 但是 當(dāng)...
    D2董閱讀 170評論 0 0