Struts攔截器實(shí)現(xiàn)攔截未登陸用戶實(shí)例解析
本文研究的主要是Struts攔截器實(shí)現(xiàn)攔截未登陸用戶,具體實(shí)現(xiàn)如下。
首先建立一個(gè)工具類:
checkPrivilegeInterceptor:這個(gè)類繼承interceptor,這是一個(gè)接口,要實(shí)現(xiàn)三個(gè)方法,要是覺得比較多的話,可以繼承他的實(shí)現(xiàn)類AbstractInterceptor,繼承這個(gè)類以后只需要重寫一個(gè)方法,就是在這個(gè)方法里面控制,是否登錄,登錄以后有哪些權(quán)限,等等,代碼如下;
package com.cjdx.utils; import javax.annotation.Resource; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.cjdx.domain.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; //檢查是否有權(quán)限,這里只檢查知否登錄 public class CheckPrivilegeInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { User user = (User) ActionContext.getContext().getSession().get("user"); String nameSpace = invocation.getProxy().getNamespace(); String actionName = invocation.getProxy().getActionName(); String privilegeUrl = nameSpace + actionName; if (user == null) { // 如果用戶沒有登錄 if (privilegeUrl.startsWith("/user_login")) { //如果用戶準(zhǔn)備去登錄,則放行 return invocation.invoke(); } { return "loginUI"; //如果用戶不是去登錄,又沒有登錄,則轉(zhuǎn)到登錄頁面 } } else { return invocation.invoke(); //如果用戶已經(jīng)登錄,則執(zhí)行相應(yīng)的方法 } } }
然后再配置struts2.xml里:
<!-- 登錄攔截器的聲明 --> <interceptors> <!-- 聲明你已經(jīng)寫好的攔截器 --> <interceptor name="checkPrivilege" class="com.cjdx.utils.CheckPrivilegeInterceptor"></interceptor> <!-- 將已經(jīng)聲明的攔截器加到默認(rèn)的攔截器里面去 --> <!-- 這個(gè)攔截器的名字就叫做defaultStack,這樣就直接覆蓋了原來的defaultStack --> <!-- 如果不這樣寫,還可以在像注釋這樣添加 --> <interceptor-stack name="defaultStack"> <interceptor-ref name="checkPrivilege"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> <!-- <interceptor-stack name="myStack"> <interceptor-ref name="checkPrivilege"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> <interceptor-stack name="defaultStack"> <interceptor-ref name="myStack"></interceptor-ref> </interceptor-stack> --> </interceptors>
總結(jié)
以上就是本文關(guān)于Struts攔截器實(shí)現(xiàn)攔截未登陸用戶實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java Jackson之ObjectMapper常用用法總結(jié)
這篇文章主要給大家介紹了關(guān)于Java Jackson之ObjectMapper常用用法的相關(guān)資料,ObjectMapper是一個(gè)Java庫,用于將JSON字符串轉(zhuǎn)換為Java對(duì)象或?qū)ava對(duì)象轉(zhuǎn)換為JSON字符串,需要的朋友可以參考下2024-01-01Java實(shí)現(xiàn)redis分布式鎖的三種方式
本文主要介紹了Java實(shí)現(xiàn)redis分布式鎖的三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS
這篇文章主要介紹了Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07springMVC幾種頁面跳轉(zhuǎn)方式小結(jié)
本篇文章主要介紹了springMVC 幾種頁面跳轉(zhuǎn)方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02Java二分查找算法實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Java二分查找算法實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11zuul集成Sentinel,完成對(duì)path映射的限流操作
這篇文章主要介紹了zuul集成Sentinel,完成對(duì)path映射的限流操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06將Java對(duì)象序列化成JSON和XML格式的實(shí)例
下面小編就為大家分享一篇將Java對(duì)象序列化成JSON和XML格式的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12