package com.springboot.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.springboot.demo.interceptor.TestInterceptor1;
import com.springboot.demo.interceptor.TestInterceptor2;
@Configuration
public class TestConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TestInterceptor1()).addPathPatterns("/test1");
registry.addInterceptor(new TestInterceptor2()).addPathPatterns("/test1");
}
}
package com.springboot.demo.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class TestInterceptor1 extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("执行 TestInterceptor1 的 preHandle 方法!");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("执行 TestInterceptor1 的 postHandle 方法!");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("执行 TestInterceptor1 的 afterCompletion 方法!");
}
}
package com.springboot.demo.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class TestInterceptor2 extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("执行 TestInterceptor2 的 preHandle 方法!");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("执行 TestInterceptor2 的 postHandle 方法!");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("执行 TestInterceptor2 的 afterCompletion 方法!");
}
}
package com.springboot.demo.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@PostMapping(path="/test1")
@ResponseBody
public String test1() {
System.out.println("Hello test1!");
return "Hello test1!";
}
}
执行结果:
执行 TestInterceptor1 的 preHandle 方法!
执行 TestInterceptor2 的 preHandle 方法!
Hello test1!
执行 TestInterceptor2 的 postHandle 方法!
执行 TestInterceptor1 的 postHandle 方法!
执行 TestInterceptor2 的 afterCompletion 方法!
执行 TestInterceptor1 的 afterCompletion 方法!