日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Spring Boot 攔截器

作者:Xiangning_Nie 更新時間: 2022-08-13 編程語言

Spring Boot 攔截器

Spring Boot 攔截器是 AOP 的一種實(shí)現(xiàn),專門攔截對控制層的請求,主要應(yīng)用于判斷用戶權(quán)限,攔截webSocket請求

在 Spring Boot 項目中,使用攔截器功能通常需要以下 2 步:

  1. 創(chuàng)建攔截器;
  2. 配置攔截器,指定攔截規(guī)則(如果是攔截所有,靜態(tài)資源也會被攔截)。

第一步:創(chuàng)建攔截器
創(chuàng)建的類實(shí)現(xiàn) HandlerInterceptor 接口,即可成為攔截器類
HandlerInterceptor 接口中定義以下 3 個方法,如下表所示。
在這里插入圖片描述

實(shí)例:

/**
 * 自定義攔截器類
 */
public class MyInterceptor implements HandlerInterceptor {// 實(shí)現(xiàn)HandlerInterceptor接口
	/**
	 * 訪問控制器方法前執(zhí)行
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println(new Date() + "--preHandle:" + request.getRequestURL());
		return true;
	}

	/**
	 * 訪問控制器方法后執(zhí)行
	 */
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println(new Date() + "--postHandle:" + request.getRequestURL());
	}

	/**
	 * postHandle方法執(zhí)行完成后執(zhí)行,一般用于釋放資源
	 */
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println(new Date() + "--afterCompletion:" + request.getRequestURL());
	}
}

注意:MyInterceptor 中的方法執(zhí)行順序為 preHandle – Controller 方法 – postHandle – afterCompletion ,所以攔截器實(shí)際上可以對 Controller 方法執(zhí)行前后進(jìn)行攔截監(jiān)控。

第二步:配置攔截器

/**
 * Web配置類
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
	/**
	 * 添加Web項目的攔截器
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 對所有訪問路徑,都通過MyInterceptor類型的攔截器進(jìn)行攔截
		registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**")
		.excludePathPatterns("/", "/login", "/index.html", "/user/login", "/css/**", "/images/**", "/js/**", "/fonts/**");
		 //放行登錄頁,登陸操作,靜態(tài)資源
	}
}

在指定攔截器攔截規(guī)則時,調(diào)用了兩個方法,這兩個方法的說明如下:
addPathPatterns:該方法用于指定攔截路徑,例如攔截路徑為“/**”,表示攔截所有請求,包括對靜態(tài)資源的請求。
excludePathPatterns:該方法用于排除攔截路徑,即指定不需要被攔截器攔截的請求。

原文鏈接:https://blog.csdn.net/someday____/article/details/126308356

欄目分類
最近更新