網站首頁 編程語言 正文
介紹
攔截器和過濾器的功能都差不多,攔截器是SpringBoot的,而且過濾器是Servlet的
SpringBoot過濾器
攔截器-過濾器 執行順序
發起請求-》過濾器-》攔截器-》接口
創建攔截器
實現HandlerInterceptor 的接口,并且實現他都三個方法
- preHandle: 進入controller前執行 true放行 false不放行
- postHandle: controller運行完成后執行
- afterCompletion: 視圖渲染完畢后執行 最后執行的方法
三個方法都默認實現,按要求保留即可
@Component //交給IOC容器管理
public class RequestInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//進入controller前執行 true放行 false不放行
//攔截到執行的操作
// return HandlerInterceptor.super.preHandle(request, response, handler);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//controller運行完成后執行
// HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//視圖渲染完畢后執行 最后執行的方法
// HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
注冊攔截器(配置類)
配置類繼承接口WebMvcConfigurer ,并實現他都addInterceptors方法,
@Configuration //表示該類為配置類
public class WebConfig implements WebMvcConfigurer {
@Autowired
private RequestInterceptor interceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(interceptor).addPathPatterns("/**");
//攔截所有的請求
// registry.addInterceptor(interceptor)
// .addPathPatterns("/user")//需要攔截的請求
// .excludePathPatterns("/login");//不需要攔截的請求
}
}
攔截路徑的配置
- /*: 攔截所有一級路徑,如:/login 或 /user …
- /**: 攔截任意路徑,如:/login 或 /user/1 或 /deletes/user/1
- /user/*: 攔截/user的任意一級路徑 如:/user/login,不可以攔截二級如:/user/deletes/2
- /user/**: 攔截/user下的任意路徑
原文鏈接:https://blog.csdn.net/dpc5201314/article/details/136046965
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2023-02-10 docker容器間互相訪問(docker?bridge網絡)_docker
- 2022-04-18 taro 中設計稿尺寸相關問題,以及自適應頁面寫法
- 2023-06-16 GO語言中Chan實現原理的示例詳解_Golang
- 2022-02-24 golang:日期與時間戳相互轉換
- 2022-04-25 在?Python?中進行?One-Hot?編碼_python
- 2022-05-22 關于VS2022不能使用<bits/stdc++.h>的解決方案(萬能頭文件)_C 語言
- 2024-03-28 mac vscode 命令行啟動命令安裝 別名設置方法
- 2022-07-13 查看nginx連接數
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支