拦截器,顾名思义就是拦截的一种器械,是在访问某个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,说明我们的拦截器生效了
下一个篇章我们讲过滤器,大家拭目以待