轻轻松松学习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,说明我们的拦截器生效了

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


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值