Recently doing the examination system, a micro-channel small program pages are there to do the front-end, back-end interface to back-end data are natural tones on the use of the interceptor. Bit pressed for time, this is just about to write a structure, later supplemented.
1.HandlerInterceptorAdapter
preHandle service processor processing service is called before the pretreatment.
postHandle call after business processing, post-processing,
afterCompletion after being completely finished processing the request DispatcherServlet call, can be used to clean up resources. Whether an abnormality has occurred it may be null if judged according to ex.
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author suwan */ public class LoginInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String url = request.getRequestURI().toString(); System.out.println("preHandle:" + url); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { String url = request.getRequestURI().toString(); System.out.println("postHandle:" + url); super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion:" + ex); super.afterCompletion(request, response, handler, ex); } }
2.WebMvcConfigurerAdapter add interceptors
addInterceptors achieve a required interceptor instance HandlerInterceptor interface
addPathPatterns path filter rule for setting the interceptor
excludePathPatterns: used to set filtering rules do not need to intercept
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * @author suwan */ @Configuration public class InterceptorConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor()).addPathPatterns("/login/**").excludePathPatterns("/hello/**"); } @Bean public LoginInterceptor loginInterceptor(){return new LoginInterceptor();} }
3. Test Set interceptor path
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author suwan */ @RestController @RequestMapping("/login") public class UserController { @GetMapping("/test") public void test(){ System.out.println("loginTest"); } }
Browser requests: HTTP: // localhost: 8080 / the Login / the Test
输出: preHandle:/login/test loginTest postHandle:/login/test afterCompletion:null
4. Test intercept path not provided
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author suwan * @date 2019/6/13 */ @RestController @RequestMapping("/hello") public class HelloController { @GetMapping("/test") public void test(){ System.out.println("helloTest"); } }
Browser requests: HTTP: // localhost: 8080 / the Hello / the Test
Output:
helloTest
Reproduced in: https: //www.cnblogs.com/suwan1125/p/11016971.html