SpringMVC攔截器實(shí)現(xiàn)監(jiān)聽session是否過期詳解
本文主要向大家介紹了SpringMVC攔截器實(shí)現(xiàn):當(dāng)用戶訪問網(wǎng)站資源時(shí),監(jiān)聽session是否過期的代碼,具體如下:
一、攔截器配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/user/login"/> <!-- 不攔截登錄請(qǐng)求 -->
<mvc:exclude-mapping path="/user/logout"/> <!-- 不攔截注銷請(qǐng)求 -->
<mvc:exclude-mapping path="*.jsp"/>
<mvc:exclude-mapping path="*.html"/>
<mvc:exclude-mapping path="*.js"/>
<mvc:exclude-mapping path="*.css"/>
<bean class="org.huaxin.interceptor.AccessInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
二、攔截器編碼
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object obj) throws Exception {
System.out.println("[AccessInterceptor]:preHandle執(zhí)行");
HttpSession session = request.getSession();
ServletContext application = session.getServletContext();
if(application.getAttribute(session.getId()) == null){ //未登錄
PrintWriter out = response.getWriter();
StringBuffer sb = new StringBuffer("<script type=\"text/javascript\" charset=\"UTF-8\">");
sb.append("alert(\"你的賬號(hào)被擠掉,或者沒有登錄,或者頁(yè)面已經(jīng)過期,請(qǐng)重新登錄\")");
sb.append("window.location.href='/user/logout';");
sb.append("</script>");
out.print(sb.toString());
out.close();
return false;
}else{ //已經(jīng)登錄
return true;
}
}
三、總結(jié)
1.注意這里使用的攔截器是HandlerInterceptor,你的攔截器需要實(shí)現(xiàn)這個(gè)接口
2.在你的登錄handler里面,要將session保存到application中,方便根據(jù)sessionId來判斷是否存在session
3.sb.append("window.location.href='/user/logout';"); 這行代碼是說,執(zhí)行注銷操作,在你的/user/logout 這個(gè)handler里面得把頁(yè)面解析到登錄頁(yè),方便重新登錄
以上就是本文關(guān)于SpringMVC攔截器實(shí)現(xiàn)監(jiān)聽session是否過期詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助,感興趣的朋友可以繼續(xù)參閱本站:Java監(jiān)聽器的作用及用法代碼示例、SpringMVC開發(fā)restful API之用戶查詢代碼詳解、springmvc接收jquery提交的數(shù)組數(shù)據(jù)代碼分享等,如有不足之處,歡迎留言指出。小編會(huì)及時(shí)進(jìn)行更改,感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java實(shí)現(xiàn)單機(jī)版五子棋游戲的示例代碼
五子棋是世界智力運(yùn)動(dòng)會(huì)競(jìng)技項(xiàng)目之一,是一種兩人對(duì)弈的純策略型棋類游戲,是世界智力運(yùn)動(dòng)會(huì)競(jìng)技項(xiàng)目之一。本文將用java語(yǔ)言實(shí)現(xiàn)單機(jī)版五子棋游戲,感興趣的可以了解一下2022-09-09
java學(xué)生信息管理系統(tǒng)設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了java學(xué)生信息管理系統(tǒng)設(shè)計(jì),學(xué)生信息添加進(jìn)入數(shù)據(jù)庫(kù)的事務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Java基于Rest?Assured自動(dòng)化測(cè)試接口詳解
Rest Assured 是一個(gè)基于 Java 的流行的用于測(cè)試 RESTful API 的庫(kù)。這篇文章主要介紹了Java如何基于Rest?Assured實(shí)現(xiàn)自動(dòng)化測(cè)試接口,需要的可以參考一下2023-03-03
SpringBoot自定義Redis實(shí)現(xiàn)緩存序列化詳解
Spring提供了一個(gè)RedisTemplate來進(jìn)行對(duì)Redis的操作,但是RedisTemplate默認(rèn)配置的是使用Java本機(jī)序列化。如果要對(duì)對(duì)象操作,就不是那么的方便。所以本文為大家介紹了另一種SpringBoot結(jié)合Redis實(shí)現(xiàn)序列化的方法,需要的可以參考一下2022-07-07
一文帶你掌握J(rèn)ava8中函數(shù)式接口的使用和自定義
函數(shù)式接口是?Java?8?引入的一種接口,用于支持函數(shù)式編程,下面我們就來深入探討函數(shù)式接口的概念、用途以及如何創(chuàng)建和使用函數(shù)式接口吧2023-08-08
SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟
本文主要介紹了SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Springboot實(shí)現(xiàn)多數(shù)據(jù)源切換詳情
這篇文章主要介紹了Springboot實(shí)現(xiàn)多數(shù)據(jù)源切換詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2022-09-09
Java long 轉(zhuǎn)成 String的實(shí)現(xiàn)
這篇文章主要介紹了Java long 轉(zhuǎn)成 String的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09

