Spring中自定义拦截器的使用

网友投稿 209 2022-08-28


Spring中自定义拦截器的使用

1、创建自定义拦截器类(UserTokenInterceptor)并实现HandlerInterceptor 接口,再重写方法,代码如下:

public class UserTokenInterceptor implements HandlerInterceptor {

/**

* @description 访问Controller之前执行

*/

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

log.info("进入拦截器啦、、");

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)并实现Spring的WebMvcConfigurer接口

在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐)

复写addInkhCryterceptors方法,添加自己的拦截器

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的话http://浏览器访问是看不到返回的内容的,因为被拦截住了,就相当于卡在那里了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python之__del__()魔方方法:销毁对象,内存回收(python del删除对象)
下一篇:python 的内存回收 || 及深浅Copy详解(python怎么读)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~