Spring中自定義攔截器的使用
1、創(chuàng)建自定義攔截器類(UserTokenInterceptor)并實(shí)現(xiàn)HandlerInterceptor 接口,再重寫方法,代碼如下:
public class UserTokenInterceptor implements HandlerInterceptor {
/**
* @description 訪問Controller之前執(zhí)行
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("進(jìn)入攔截器啦、、");
return true; // true即可放行,false則不放行
}
/**
* @description 請求訪問Controller之后,渲染視圖之前
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/**
* @description 請求訪問Controller之后,渲染視圖之后
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}2、配置Web攔截器(WebMvcConfig)并實(shí)現(xiàn)Spring的WebMvcConfigurer接口
在Spring Boot 1.5版本都是靠重寫WebMvcConfigurerAdapter的方法來添加自定義攔截器,消息轉(zhuǎn)換器等。SpringBoot 2.0 后,該類被標(biāo)記為@Deprecated(棄用)。官方推薦直接實(shí)現(xiàn)WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport,方式一實(shí)現(xiàn)WebMvcConfigurer接口(推薦)
復(fù)寫addInterceptors方法,添加自己的攔截器
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注冊攔截器
registry.addInterceptor(getUserTokenInterceptor()).addPathPatterns("/index/session");
// 一定要加
WebMvcConfigurer.super.addInterceptors(registry);
}
// @Bean
public UserTokenInterceptor getUserTokenInterceptor() {
return new UserTokenInterceptor();
}
}3、編寫測試Controller
@RestController
@RequestMapping("/index")
public class IndexController {
@Deprecated
@GetMapping("/session")
public Object getSession(HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("name", "lequal");
session.setMaxInactiveInterval(3600);
String name = (String) session.getAttribute("name");
System.out.println("獲取的名字是:" + name);
return name;
}
}4、訪問URL地址


如果preHandle方法中return false的話瀏覽器訪問是看不到返回的內(nèi)容的,因?yàn)楸粩r截住了,就相當(dāng)于卡在那里了。
到此這篇關(guān)于Spring中自定義攔截器的使用的文章就介紹到這了,更多相關(guān)Spring自定義攔截器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringIOC創(chuàng)建對象的四種方式總結(jié)
這篇文章主要介紹了基于SpringIOC創(chuàng)建對象的四種方式總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結(jié)果)
這篇文章主要介紹了MyBatis中一對多的xml配置方式(嵌套查詢/嵌套結(jié)果),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
詳解SpringBoot可執(zhí)行Jar包運(yùn)行原理
SpringBoot有一個很方便的功能就是可以將應(yīng)用打成可執(zhí)行的Jar,那么大家有沒想過這個Jar是怎么運(yùn)行起來的呢,本篇博客就來介紹下 SpringBoot可執(zhí)行Jar包的運(yùn)行原理,需要的朋友可以參考下2023-05-05
如何使用JDBC連接數(shù)據(jù)庫并執(zhí)行SQL語句
JDBC是Java數(shù)據(jù)庫連接的縮寫,是Java程序與數(shù)據(jù)庫進(jìn)行交互的標(biāo)準(zhǔn)API。JDBC主要包括Java.sql和javax.sql兩個包,通過DriverManager獲取數(shù)據(jù)庫連接對象Connection,并通過Statement或PreparedStatement執(zhí)行SQL語句2023-04-04
spring mvc DispatcherServlet之前端控制器架構(gòu)詳解
這篇文章主要為大家詳細(xì)介紹了spring mvc DispatcherServlet之前端控制器架構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
sqlite數(shù)據(jù)庫的介紹與java操作sqlite的實(shí)例講解
今天小編就為大家分享一篇關(guān)于sqlite數(shù)據(jù)庫的介紹與java操作sqlite的實(shí)例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
Java?MethodHandles介紹與反射對比區(qū)別詳解
這篇文章主要為大家介紹了Java?MethodHandles介紹與反射對比區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

