springboot实现拦截器

你首先需要一个搭建好的springboot项目,具体怎么搭建我还没有相应的随笔可以交给你,可以自己上网上看一下,学习一下,之后我要是总结出来的话,这里面我会通知的

首先这个项目的目录结构是这样子的

首先在Controller里面写上你想要展示的内容

package com.example.springBoot;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Controller {
    @RequestMapping(value="/")
    public String Hello(){
        return "hello";
    }
}

然后自定义一个拦截器

package com.example.springBoot;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InterceptorUtil implements HandlerInterceptor {
    /**
     * todo : 在请求处理之前调用,此处当userId==lx时才能正常进入控制器,否则被拦截
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        String userId = httpServletRequest.getParameter("userId");//接收一个userId的参数
        if("lx".equals(userId))
            return  true;
        else
            return false;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("执行postHandle方法");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("执行afterCompletion方法");
    }
}
preHandle:请求之前调用,返回值为boolean类型,然后返回true的时候执行下面的两个方法,返回false则不执行
postHandle:请求之后视图渲染之前调用

afterCompletion:视图渲染之后调用

然后写MyWebAppConfigurer,将上述拦截器注入bean中
package com.example.springBoot;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * 注册拦截器
 * @author lixue
 *
 */
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
    @Bean   //把拦截器注入为bean
    public HandlerInterceptor getMyInterceptor(){
        return new InterceptorUtil();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getMyInterceptor()).addPathPatterns("/**");
        super.addInterceptors(registry);
    }
}

然后运行Application

package com.example.springBoot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
右键

然后访问

控制台打印了postHandle    afterCompletion这两个方法的输出语句

接下来换一下

什么都没有,控制台也没有继续打印(这是上面操作userId=lx打印出来的userId=lx1并没有打印)

这样就实现了一个简单的拦截器

原文地址:https://www.cnblogs.com/cuteCoderSnow/p/10280846.html

时间: 2024-10-11 09:02:24

springboot实现拦截器的相关文章

springboot+springmvc拦截器做登录拦截

springboot+springmvc拦截器做登录拦截 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration 实现 WebMvcConfigurer 接口,注册拦截器 ResourceBundle 加载 properties文件数据,配置不进行拦截的路径 LoginInterceptor package com.ytkj.smart_sand.system.interceptor; import com.

Idea基于springBoot的拦截器的简单实现

一.创建SpringBoot项目二.配置文件:1.启动文件InterceptortestApplication.java package com.jane.interceptortest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.

SpringBoot 的拦截器

首先注册我们要有完整的一个可以开始的开发环境 先自己创建一个配置类 InterceptorConfig, 实现springboot自带的拦截器接口 WebMvcConfigurer. 1 package com.example.demo.TestInterceptor; 2 3 import org.springframework.context.annotation.Configuration; 4 import org.springframework.web.servlet.config.a

27.Spring-Boot中拦截器中静态资源的处理(踩过坑)以及Spring mvc configuring拓展介绍

一.springboot中对静态资源的处理 默认情况下,springboot提供存放放置静态资源的文件夹: /static /public /resources /META-INF/resources 对于maven项目即就是存在src/main/resources 文件夹下. ? 如图:static文件夹就是springboot中默认的文件夹 在页面中这样写路径<link href="themes/bootstrap.min.css" rel="stylesheet&

springboot集成拦截器

一.首先对HandlerInterceptor进行封装,封装为MappingInterceptor.封装的方法里添加拦截器起作用的路径addPathPatterns(),及需要排除路径的方法excludePathPatterns() public interface MappingInterceptor extends HandlerInterceptor { String[] addPathPatterns(); String[] excludePathPatterns(); int orde

springboot的拦截器中注入redisTemplate为null的解决办法

原因:拦截器加载于IOC之前,所以这个时候注入RedisTemplate时是null 在SpringBoot配置类中做出如下调整,将自定义拦截器也加入到配置中,在拦截器执行的时候实例化拦截器Bean 原文地址:https://www.cnblogs.com/zj-mxcz/p/12422953.html

spring-boot 加入拦截器Interceptor

1.spring boot拦截器默认有 HandlerInterceptorAdapter AbstractHandlerMapping UserRoleAuthorizationInterceptor LocaleChangeInterceptor ThemeChangeInterceptor 2.配置spring mvc的拦截器WebMvcConfigurerAdapter public class WebAppConfig extends WebMvcConfigurerAdapter 3

SpringBoot配置拦截器

[配置步骤] 1.为类添加注解@Configuration,配置拦截器 2.继承WebMvcConfigurerAdapter类 3.重写addInterceptors方法,添加需要拦截的请求 @Configuration public class WebMvcConfigurer extends WebMvcConfigurerAdapter{ @Override public void addInterceptors(InterceptorRegistry registry) { //表示拦

SpringBoot的拦截器中依赖注入报空指针问题

原因:拦截器加载的时间点在springcontext之前,所以在拦截器中注入自然为null : 解决方法:配置拦截器链的类中先注入这个拦截器,示例: @Configuration public class WebConfig extends WebMvcConfigurerAdapter { //注入拦截器类 @Bean public LocaleInterceptor localeInterceptor  () { return new LocaleInterceptor(); } publi