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

SpringBoot攔截器原理解析及使用方法

 更新時間:2020年04月27日 10:16:58   作者:小伍2013  
這篇文章主要介紹了SpringBoot攔截器原理解析及使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

攔截器簡介

攔截器通常通過動態(tài)代理的方式來執(zhí)行。

攔截器的生命周期由IoC容器管理,可以通過注入等方式來獲取其他Bean的實例,使用更方便。

攔截器配置使用方式

實現(xiàn)攔截器接口:

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

private class AuthenticationInterceptor implements HandlerInterceptor {
	// 在請求處理之前進行調(diào)用(Controller方法調(diào)用之前)
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException{
  	System.out.println(request.getRequestURL());
  	User user = (User)request.getSession().getAttribute("USER");
    if(user != null){
    	return true;
    }else {
    	System.out.println("no login...");
    	// request.getRequestDispatcher("/index.html").forward(request, response);
    	response.sendRedirect(request.getContextPath()+"login.html");
    	return false;
    }
    return false;
  }
  
  // 在請求處理之后視圖被渲染之前進行調(diào)用(Controller方法調(diào)用之后)
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    System.out.println("postHandle...");
  }

	// 在請求結(jié)束之后、也就是視圖被渲染之后進行調(diào)用(主要是用于進行資源清理工作)
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    System.out.println("afterCompletion...");
  }
}

將攔截器加入到配置中:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebSecurityConfig implements WebMvcConfigurer{
  @Override
  public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new AuthenticationInterceptor())
    		//所有路徑都被攔截
    		.addPathPatterns("/**")
    		//添加不攔截的路徑
    		.excludePathPatterns("/userLogin", "/css/**", "/images/**", "/js/**", "/login.html");
    registry.addInterceptor(new OtherInterceptor())
        .addPathPatterns("/**");
  }
}

備注:

由于 preHandle、postHandle、afterCompletion 是不同的方法,如果在這些方法之間使用共享變量來儲存值,會存在線程安全問題。而使用過濾器實現(xiàn)則不存在此問題。

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

相關(guān)文章

  • JAVA實現(xiàn)掃描線算法(超詳細)

    JAVA實現(xiàn)掃描線算法(超詳細)

    掃描線算法就是從Ymin開始掃描,然后構(gòu)建出NET,之后根據(jù)NET建立AET。接下來本文通過代碼給大家介紹JAVA實現(xiàn)掃描線算法,感興趣的朋友一起看看吧
    2019-10-10
  • spring?@Transactional注解中常用參數(shù)詳解

    spring?@Transactional注解中常用參數(shù)詳解

    這篇文章主要介紹了spring?@Transactional注解中常用參數(shù)詳解,事物注解方式:?@Transactional,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Java多態(tài)性定義與用法實例詳解

    Java多態(tài)性定義與用法實例詳解

    這篇文章主要介紹了Java多態(tài)性定義與用法,較為詳細的分析了多態(tài)的概念、功能以及java定義與實現(xiàn)面向?qū)ο蠖鄳B(tài)性的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 如何更好的使用Java8中方法引用詳解

    如何更好的使用Java8中方法引用詳解

    在Java8中,我們可以直接通過方法引用來簡寫lambda表達式中已經(jīng)存在的方法,這種特性就叫做方法引用(Method Reference)。下面這篇文章主要給大家介紹了關(guān)于如何更好的使用Java8中方法引用的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • 基于mybatis?plus實現(xiàn)數(shù)據(jù)源動態(tài)添加、刪除、切換,自定義數(shù)據(jù)源的示例代碼

    基于mybatis?plus實現(xiàn)數(shù)據(jù)源動態(tài)添加、刪除、切換,自定義數(shù)據(jù)源的示例代碼

    這篇文章主要介紹了基于mybatis?plus實現(xiàn)數(shù)據(jù)源動態(tài)添加、刪除、切換,自定義數(shù)據(jù)源,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 如何將Object類轉(zhuǎn)換為實體類

    如何將Object類轉(zhuǎn)換為實體類

    這篇文章主要介紹了如何將Object類轉(zhuǎn)換為實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • IDEA?Reformat?Code?格式化代碼(詳解)

    IDEA?Reformat?Code?格式化代碼(詳解)

    平時使用Ctrl+Alt+L可以格式化代碼,idea幫你整理空格,換行等,讓代碼看起來更整潔,今天通過本文給大家分享IDEA?Reformat?Code?格式化?的過程,感興趣的朋友一起看看吧
    2023-11-11
  • 使用Maven打包、發(fā)布、配置版本號命令

    使用Maven打包、發(fā)布、配置版本號命令

    在軟件開發(fā)過程中,打包和發(fā)布是關(guān)鍵步驟,本文介紹了如何在打包和發(fā)布時跳過測試,如何指定項目版本號,以及如何指定配置文件,提供了實用的技巧和方法,希望對開發(fā)者有所幫助
    2024-09-09
  • 如何利用Retrofit+RxJava實現(xiàn)網(wǎng)絡(luò)請求的異常處理

    如何利用Retrofit+RxJava實現(xiàn)網(wǎng)絡(luò)請求的異常處理

    這篇文章主要介紹了如何利用Retrofit+RxJava實現(xiàn)網(wǎng)絡(luò)請求的異常處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • 簡單了解Spring中的事務(wù)控制

    簡單了解Spring中的事務(wù)控制

    這篇文章主要介紹了簡單了解Spring中的事務(wù)控制,事務(wù)是一組操作的執(zhí)行單元,下面我們來簡單學(xué)習(xí)一下吧
    2019-05-05

最新評論