spring boot using HandlerInterceptorAdapter + WebMvcConfigurerAdapter interception

  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

Guess you like

Origin blog.csdn.net/weixin_34121304/article/details/93579866