最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springMVC 用戶登錄權(quán)限驗證實現(xiàn)過程解析

 更新時間:2019年11月08日 09:59:24   作者:crazyCodeLove  
這篇文章主要介紹了springMVC 用戶登錄權(quán)限驗證實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

通過上網(wǎng)搜資料顯示,使用filter和interceptor都可以實現(xiàn)。不過推薦使用interceptor.

下面就使用Interceptor實現(xiàn)用戶登錄權(quán)限驗證功能。

攔截器需要實現(xiàn)Inceptor攔截器接口的三個方法。

1.preHandle方法

顧名思義,該方法將在請求處理之前進行調(diào)用。SpringMVC 中的Interceptor 是鏈式的調(diào)用的,在一個應(yīng)用中或者說是在一個請求中可以同時存在多個Interceptor 。每個Interceptor 的調(diào)用會依據(jù)它的聲明順序依次執(zhí)行,而且最先執(zhí)行的都是Interceptor 中的preHandle 方法,所以可以在這個方法中進行一些前置初始化操作或者是對當(dāng)前請求的一個預(yù)處理,也可以在這個方法中進行一些判斷來決定請求是否要繼續(xù)進行下去。該方法的返回值是布爾值Boolean類型的,當(dāng)它返回為false 時,表示請求結(jié)束,后續(xù)的Interceptor 和Controller 都不會再執(zhí)行;當(dāng)返回值為true 時就會繼續(xù)調(diào)用下一個Interceptor 的preHandle 方法,如果已經(jīng)是最后一個Interceptor 的時候就會是調(diào)用當(dāng)前請求的Controller 方法。

2.postHandle風(fēng)法

由preHandle 方法的解釋我們知道這個方法包括后面要說到的afterCompletion 方法都只能是在當(dāng)前所屬的Interceptor 的preHandle 方法的返回值為true 時才能被調(diào)用。postHandle 方法,顧名思義就是在當(dāng)前請求進行處理之后,也就是Controller 方法調(diào)用之后執(zhí)行,但是它會在DispatcherServlet 進行視圖返回渲染之前被調(diào)用,所以我們可以在這個方法中對Controller 處理之后的ModelAndView 對象進行操作。postHandle 方法被調(diào)用的方向跟preHandle 是相反的,也就是說先聲明的Interceptor 的postHandle 方法反而會后執(zhí)行。

3.afterCompletion方法

該方法也是需要當(dāng)前對應(yīng)的Interceptor 的preHandle 方法的返回值為true 時才會執(zhí)行。顧名思義,該方法將在整個請求結(jié)束之后,也就是在DispatcherServlet 渲染了對應(yīng)的視圖之后執(zhí)行。這個方法的主要作用是用于進行資源清理工作的。

下面實現(xiàn)自己的攔截器

package com.huitong.util;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class StudentAuth implements HandlerInterceptor {
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    HttpSession session = request.getSession();
    Object stu = session.getAttribute("student");
    if( stu == null ){
      response.sendRedirect("/webapp1/index.jsp");
      return false;
    }
    return true;
  }
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  }
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  }
}

最后需要在spring-mvc.xml配置文件中進行攔截器配置,下面是配置片段

<mvc:interceptors>
    <mvc:interceptor>
      <!-- 先匹配所有路徑,然后排除不需要檢查的路徑 -->
      <mvc:mapping path="/**"/>

      <!-- 與登錄相關(guān)的請求 -->
      <mvc:exclude-mapping path="/*.jsp"/>
      <mvc:exclude-mapping path="/student/login.action"/>
      <mvc:exclude-mapping path="/student/register.action"/>

      <!-- 以下是靜態(tài)資源 -->
      <mvc:exclude-mapping path="/images/**" />
      <mvc:exclude-mapping path="/css/**" />
      <mvc:exclude-mapping path="/font/**" />
      <mvc:exclude-mapping path="/js/**" />
      <mvc:exclude-mapping path="/datepicker/**" />

      <!-- 用戶是否已經(jīng)登錄的檢查bean -->
      <bean class="com.huitong.util.StudentAuth"/>
        
    </mvc:interceptor>
  </mvc:interceptors>

最后可以測試使用了

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java集合之Map接口與實現(xiàn)類詳解

    Java集合之Map接口與實現(xiàn)類詳解

    這篇文章主要為大家詳細介紹了Java集合中的Map接口與實現(xiàn)類,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定的幫助,感興趣的可以了解一下
    2022-12-12
  • Spring 中使用Quartz實現(xiàn)任務(wù)調(diào)度

    Spring 中使用Quartz實現(xiàn)任務(wù)調(diào)度

    這篇文章主要介紹了Spring 中使用Quartz實現(xiàn)任務(wù)調(diào)度,Spring中使用Quartz 有兩種方式,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • SpringBoot項目打包成jar后獲取classpath下文件失敗的解決

    SpringBoot項目打包成jar后獲取classpath下文件失敗的解決

    這篇文章主要介紹了SpringBoot項目打包成jar后獲取classpath下文件失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java反射之類的實例對象的三種表示方式總結(jié)

    Java反射之類的實例對象的三種表示方式總結(jié)

    下面小編就為大家?guī)硪黄狫ava反射之類的實例對象的三種表示方式總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java通過 Socket 實現(xiàn) TCP服務(wù)端

    Java通過 Socket 實現(xiàn) TCP服務(wù)端

    這篇文章主要介紹了Java通過 Socket 實現(xiàn) TCP服務(wù)端的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Kafka日志清理實現(xiàn)詳細過程講解

    Kafka日志清理實現(xiàn)詳細過程講解

    這篇文章主要為大家介紹了Kafka日志清理實現(xiàn)詳細過程講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Java中==與equals的區(qū)別小結(jié)

    Java中==與equals的區(qū)別小結(jié)

    這篇文章主要介紹了Java中==與equals的區(qū)別小結(jié),本文總結(jié)結(jié)論:== 與 equals()比較的內(nèi)容是不同的,equals()方式是String類中的方法,它用于比較兩個對象引用所指的內(nèi)容是否相等,而 == 比較的是兩個對象引用的地址是否相等,需要的朋友可以參考下
    2015-06-06
  • SpringBoot監(jiān)控SQL運行情況的流程步驟

    SpringBoot監(jiān)控SQL運行情況的流程步驟

    Druid是Java語言中最好的數(shù)據(jù)庫連接池,雖然?HikariCP?的速度稍快,但是,Druid能夠提供強大的監(jiān)控和擴展功能?,也是阿里巴巴的開源項目,本文給大家介紹了SpringBoot監(jiān)控SQL運行情況的流程步驟,需要的朋友可以參考下
    2024-03-03
  • 在SpringBoot下讀取自定義properties配置文件的方法

    在SpringBoot下讀取自定義properties配置文件的方法

    這篇文章主要介紹了在SpringBoot下讀取自定義properties配置文件的方法,文中涉及到了Spring-boot中讀取config配置文件的兩種方式,需要的朋友可以參考下
    2017-12-12
  • Mybatis執(zhí)行update失敗的解決

    Mybatis執(zhí)行update失敗的解決

    這篇文章主要介紹了Mybatis執(zhí)行update失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

固阳县| 聊城市| 绥化市| 松阳县| 阜宁县| 乌什县| 宁化县| 芦溪县| 土默特右旗| 夹江县| 德州市| 巴南区| 天台县| 化州市| 西华县| 博爱县| 洞口县| 轮台县| 义乌市| 顺平县| 安远县| 江陵县| 尼木县| 民勤县| 阜新市| 沂源县| 黑山县| 锦屏县| 泰兴市| 林甸县| 泊头市| 荥经县| 邵阳县| 米泉市| 六盘水市| 瑞丽市| 伊金霍洛旗| 陇西县| 贵州省| 景德镇市| 旅游|