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接口(推荐)

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

到此这篇关于Spring中自定义拦截器的使用的文章就介绍到这了,更多相关Spring自定义拦截器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot自定义mybatis拦截器实现扩展

    前言 相信大家对拦截器并不陌生,对mybatis也不陌生. 有用过pagehelper的,那么对mybatis拦截器也不陌生了,按照使用的规则触发sql拦截,帮我们自动添加分页参数 . 那么今天,我们的实践 自定义mybatis拦截器也是如此, 本篇文章实践的效果: 针对一些使用 单个实体类去接收返回结果的 mapper方法,我们拦截检测,如果没写 LIMIT 1 ,我们将自动帮忙填充,达到查找单条数据 效率优化的效果. ps: 当然,跟着该篇学会了这个之后,那么可以扩展的东西就多了,大家按照自

  • SpringBoot添加自定义拦截器的实现代码

    在Controller层时,往往会需要校验或验证某些操作,而在每个Controller写重复代码,工作量比较大,这里在Springboot项目中 ,通过继承WebMvcConfigurerAdapter,添加拦截器. 1.WebMvcConfigurerAdapter源码 /* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the

  • 解决SpringBoot自定义拦截器和跨域配置冲突的问题

    目录 SpringBoot自定义拦截器和跨域配置冲突 技术栈 问题引出 原代码 新代码 SpringBoot 拦截器和addCorsMappings冲突 SpringBoot自定义拦截器和跨域配置冲突 技术栈 vue-cli3,springboot 2.3.2.RELEASE 问题引出 在做毕业设计过程中用到了自定义拦截器验证登录.同时在springboot配置类中设置了跨域问题,出现跨域失败的情况. 原代码 @Configuration public class WebConfig exten

  • springboot自定义拦截器的方法

    拦截器应该分属于web框架的组件,每个框架提供的自己的支持,实现方式也就不同.例如Struts和Spring,以下是Spring 的拦截器总结,它是基于动态代理(反射)实现的. Spring 中声明拦截器需要实现 HandlerInterceptor 接口,当然也可以通过继承HandlerInterceptorAdapter 抽象类,HandlerInterceptorAdapter也是实现了HandlerInterceptor 接口. 拦截器中有四个方法: preHandle:在Control

  • SpringMVC自定义拦截器登录检测功能的实现代码

    目录 一.定义登录控制器 二.自定义登录拦截器 一.定义登录控制器 目录结构 代码: 1.创建TUser类 package com.demo.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class TUser { private String name;

  • Spring中自定义拦截器的使用

    1.创建自定义拦截器类(UserTokenInterceptor)并实现HandlerInterceptor 接口,再重写方法,代码如下: public class UserTokenInterceptor implements HandlerInterceptor { /** * @description 访问Controller之前执行 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletR

  • Spring MVC中自定义拦截器的实例讲解

    1. 引言 拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似于Servlet的Filter. 我们可以让普通的Bean实现HandlerIntercpetor接口或继承HandlerInterceptorAdapter类来实现自定义拦截器. 通过重写WebMvcConfigurerAdapter的addIntercetors方法来注册一个计算每一次请求的处理时间的拦截器. 2. 自定义拦截器的实现 2.1 定义拦截器 新建LogInterceptor类,并继承Ha

  • spring boot中interceptor拦截器未生效的解决

    目录 interceptor拦截器未生效 开始用的spring boot版本为1.5.6 解决方案 HandlerInterceptor实现登录失效拦截等 首先写一个实现HandlerInterceptor的类 然后把这个拦截器注册到spring中 interceptor拦截器未生效 搭建项目时发现拦截器未生效 开始用的spring boot版本为1.5.6 代码如下: @Configuration public class WebConfig extends WebMvcConfigurerA

  • Spring Boot配置拦截器及实现跨域访问的方法

    拦截器功能强大,能够深入方法前后,常应用于日志记录.权限检查和性能检测等,几乎是项目中不可或缺的一部分,本文就来实现Spring Boot自定义拦截器的配置. 理论指导 问:Spring Boot怎么配置拦截器? 答:配置一个拦截器需要两步完成. 自定义拦截器,实现HandlerInterceptor这个接口.这个接口包括三个方法,preHandle是请求执行前执行的,postHandler是请求结束执行的,但只有preHandle方法返回true的时候才会执行,afterCompletion是

  • Spring Boot项目中定制拦截器的方法详解

    这篇文章主要介绍了Spring Boot项目中定制拦截器的方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Servlet 过滤器属于Servlet API,和Spring关系不大.除了使用过滤器包装web请求,Spring MVC还提供HandlerInterceptor(拦截器)工具.根据文档,HandlerInterceptor的功能跟过滤器类似,但拦截器提供更精细的控制能力:在request被响应之前.request被响应之后.视

  • spring boot的拦截器简单使用示例代码

    1.spring boot拦截器默认有: HandlerInterceptorAdapter AbstractHandlerMapping UserRoleAuthorizationInterceptor LocaleChangeInterceptor ThemeChangeInterceptor 其中 LocaleChangeInterceptor 和 ThemeChangeInterceptor 比较常用. 2.实现自定义拦截器只需要3步: 1).创建我们自己的拦截器类并实现 Handler

  • Mybatis自定义拦截器和插件开发详解

    前言 在Spring中我们经常会使用到拦截器,在登录验证.日志记录.性能监控等场景中,通过使用拦截器允许我们在不改动业务代码的情况下,执行拦截器的方法来增强现有的逻辑.在mybatis中,同样也有这样的业务场景,有时候需要我们在不侵入原有业务代码的情况下拦截sql,执行特定的某些逻辑.那么这个过程应该怎么实现呢,同样,在mybatis中也为开发者预留了拦截器接口,通过实现自定义拦截器这一功能,可以实现我们自己的插件,允许用户在不改动mybatis的原有逻辑的条件下,实现自己的逻辑扩展. 本文将按

  • SSM项目中使用拦截器和过滤器的实现示例

    一.拦截器概述 Spring MVC 也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定 的功能,自定义的拦截器必须实现 HandlerInterceptor 接口 preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理.如果程序员决定该拦截器对请求进行拦截处理后还要调用其他 的拦截器,或者是业务处理器去进行处理,则返回 true:如果程序员决定不需要 再调用其他的组件去处理请求,则返回 false. postHandle(

  • SpringBoot整合Mybatis自定义拦截器不起作用的处理方案

    目录 SpringBoot整合Mybatis自定义拦截器不起作用 1. 原始的读取mybatis-config.xml文件 2. 与SpringBoot容器整合 2.1 mybatis的自动装载 3. 在mybatis-config.xml配置又放入Spring容器 SpringBoot 自定义Mybatis拦截器 第一种 第二种 第三种 SpringBoot整合Mybatis自定义拦截器不起作用 Mybatis插件生效的方式: 1. 原始的读取mybatis-config.xml文件 该方式和

随机推荐