轻轻松松学习SpringBoot2:第二十三篇: Spring Boot 拦截器 - Go语言中文社区

轻轻松松学习SpringBoot2:第二十三篇: Spring Boot 拦截器


拦截器,顾名思义就是拦截的一种器械,是在访问某个Action或Action的某个方法的之前或之后实施拦截

我们举个简单的例子,我们需要拦截访问链接以/test为第一个访问路径的链接,从而做一些操作


一)之前的工程上新建一个控制器   testC

package com.example.smybatis.controller;

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

@RestController
public class testC {
    @GetMapping(value="/test")
    public Integer test(){
        return 111;
    }
}

二)新建拦截器配置文件类     testInterceptorConfig

package com.example.smybatis.configurer;

import com.example.smybatis.interceptors.testInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class testInterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加一个拦截器,拦截以/test为前缀的 url路径
        registry.addInterceptor(new testInterceptor()).addPathPatterns("/test/**");
    }
}

三)新建拦截器实现类    testInterceptor

package com.example.smybatis.interceptors;

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

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

public class testInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 这里写各种判断逻辑
        // 如果没有………………,可以使用 reponse.send() 跳转页面。后面要跟return false,否则无法结束;

        // 为了测试,打印一句话
        System.out.println(request.getRequestURI());
        System.out.println(request.getRequestURL().toString());
        System.out.println("访问了test下url路径。");

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

浏览器输入http://localhost:1234/test/

我们看一下打印日志


ok,说明我们的拦截器生效了

下一个篇章我们讲过滤器,大家拭目以待


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/stronglyh/article/details/80980070
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:47:31
  • 阅读 ( 923 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢