淘先锋技术网

首页 1 2 3 4 5 6 7

拦截器,顾名思义就是拦截的一种器械,是在访问某个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 {@Overridepublic 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 {@Overridepublic 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;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

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

我们看一下打印日志


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

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