欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot攔截器的使用

 更新時間:2021年11月15日 10:51:18   作者:久曲鍵  
這篇文章主要給大家分享的是SpringBoot攔截器的使用,攔截器通常通過動態(tài)代理的方式來執(zhí)行。攔截器的生命周期由IoC容器管理,可以通過注入等方式來獲取其他Bean的實例,使用更方便,下面文章的詳細(xì)內(nèi)容,需要的朋友可以參考一下

一、攔截器簡介

攔截器通常通過動態(tài)代理的方式來執(zhí)行。
攔截器的生命周期由IoC容器管理,可以通過注入等方式來獲取其他Bean的實例,使用更方便。

二、攔截器配置使用方式

1、過濾器攔截器作用范圍

2、攔截器的使用

示例代碼如下:

 package com.rongrong.wiki.interceptor;

 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;

 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 /**
  * 攔截器:Spring框架特有的,常用于登錄校驗,權(quán)限校驗,請求日志打印 /login
  */
 @Component
 public class LogInterceptor implements HandlerInterceptor {

     private static final Logger LOG = LoggerFactory.getLogger(LogInterceptor.class);

     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         // 打印請求信息
         LOG.info("------------- LogInterceptor 開始 -------------");
         LOG.info("請求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
         LOG.info("遠(yuǎn)程地址: {}", request.getRemoteAddr());

         long startTime = System.currentTimeMillis();
         request.setAttribute("requestStartTime", startTime);
         return true;
     }

     @Override
     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
         long startTime = (Long) request.getAttribute("requestStartTime");
         LOG.info("------------- LogInterceptor 結(jié)束 耗時:{} ms -------------", System.currentTimeMillis() - startTime);
     }
 }

將攔截器加入到配置中,示例代碼如下:

package com.rongrong.wiki.config;

import com.rongrong.wiki.interceptor.LogInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {

    @Resource
    LogInterceptor loginInterceptor;

    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/**")
                .excludePathPatterns("/login");
    }
}

重新編譯啟動,查看結(jié)果如下:

三、知識點總結(jié)

1、攔截器的使用

  • 返回true會往后執(zhí)行
  • 返回false會結(jié)束,可以利用這點來做權(quán)限攔截
  • addPathPatterns() ,要攔截請求
  • excludePathPatterns() ,排除請求,不攔截

2、攔截器和過濾器的相同與不同

  • 都可以用來統(tǒng)一處理請求,比如:打印日志、權(quán)限控制
  • 過濾器依賴于servlet容器,攔截器依賴Spring框架
  • 過濾器不用注入其它類,攔截器可注入其它類,基于這一點,建議能用攔截器的都用攔截器

到此這篇關(guān)于SpringBoot攔截器的使用的文章就介紹到這了,更多相關(guān)SpringBoot攔截器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中的Io(input與output)操作總結(jié)(一)

    java中的Io(input與output)操作總結(jié)(一)

    所謂IO,也就是Input與Output的縮寫。在java中,IO涉及的范圍比較大,這里主要討論針對文件內(nèi)容的讀寫,感興趣的朋友可以了解下
    2013-01-01
  • java8到j(luò)ava15的新功能簡介

    java8到j(luò)ava15的新功能簡介

    這篇文章主要介紹了java8到j(luò)ava15的新功能的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-12-12
  • java如何實現(xiàn)socket連接方法封裝

    java如何實現(xiàn)socket連接方法封裝

    這篇文章主要介紹了java實現(xiàn)socket連接方法封裝教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Java中Period類的使用方法

    詳解Java中Period類的使用方法

    Period類通過年、月、日相結(jié)合來描述一個時間量,最高精度是天。本文將通過示例詳細(xì)為大家講講Period類的使用,需要的可以參考一下
    2022-05-05
  • 手把手帶你用java搞定青蛙跳臺階

    手把手帶你用java搞定青蛙跳臺階

    這篇文章主要給大家介紹了關(guān)于Java青蛙跳臺階問題的解決思路與代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • SpringBoot 如何實現(xiàn)異步編程

    SpringBoot 如何實現(xiàn)異步編程

    在SpringBoot的日常開發(fā)中,一般都是同步調(diào)用的,但實際中有很多場景非常適合使用異步來處理,本文就詳細(xì)的介紹一下SpringBoot 如何實現(xiàn)異步編程 ,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • SpringBoot中多環(huán)境啟動配置的教程詳解

    SpringBoot中多環(huán)境啟動配置的教程詳解

    在SpringBoot項目的生命周期中,存在不同的環(huán)境,我們就需要針對不同環(huán)境制定不同名稱的配置文件,里面放置不同環(huán)境下所需的配置項,下面小編就來和大家詳細(xì)講講SpringBoot如何進(jìn)行多環(huán)境啟動配置的吧
    2024-02-02
  • Java中實現(xiàn)文件預(yù)覽的功能(實例代碼)

    Java中實現(xiàn)文件預(yù)覽的功能(實例代碼)

    大家都知道word,Excel,PPT實現(xiàn)在線預(yù)覽常用的方式就是先轉(zhuǎn)換成pdf,然后在進(jìn)行預(yù)覽,下面給大家介紹Java中如何實現(xiàn)文件預(yù)覽的功能,需要的朋友可以參考下
    2023-05-05
  • 淺談java對象結(jié)構(gòu) 對象頭 Markword

    淺談java對象結(jié)構(gòu) 對象頭 Markword

    這篇文章主要介紹了淺談java對象結(jié)構(gòu) 對象頭 Markword,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • @Scheduled fixedDelayString 加載properties配置方式

    @Scheduled fixedDelayString 加載properties配置方式

    這篇文章主要介紹了@Scheduled fixedDelayString 加載properties配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論