SpringBoot defines the methods for filters listeners interceptors

  • 2020-07-21 07:52:52
  • OfStack

1. Custom filters

Create a filter that implements the ES3en.servlet.Filter interface and override the init, doFilter, and destory methods.


package com.example.filter; 
import java.io.IOException;  
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebFilter; 
/** 
 *  implementation javax.servlet.Filter, Covering the 3 A method of  
 * @author Administrator 
 * 
 */ 
@WebFilter(filterName="customFilter",urlPatterns="/*") 
public class CustomFilter implements Filter{ 
 
  @Override 
  public void destroy() { 
    System.out.println("CustomFilter Filter destruction "); 
     
  } 
 
  @Override 
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
      throws IOException, ServletException { 
    System.out.println("CustomFilter Specify filter operation ......"); 
    // Must be executed after the operation doFilter 
    chain.doFilter(request, response); 
  } 
 
  @Override 
  public void init(FilterConfig arg0) throws ServletException { 
    System.out.println("CustomFilter Initialize the ......"); 
  }     
} 

2. Custom listeners

Create a filter to implement the ServletContextListener interface


package com.example.listener;  
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 
import javax.servlet.annotation.WebListener; 
 
/** 
 *  implementation ServletContextListener , covering its two methods  
 * @author Administrator 
 * 
 */ 
@WebListener 
public class CustomListener implements ServletContextListener{ 
 
  @Override 
  public void contextDestroyed(ServletContextEvent servletContext) { 
    System.out.println("servletContext The destruction ......"); 
     
  } 
 
  @Override 
  public void contextInitialized(ServletContextEvent servletContext) { 
    System.out.println("servletContext Initialize the ......"); 
  } 
 
} 

Create 1 session listener and listen for the creation and destruction of session


package com.example.listener;  
import javax.servlet.annotation.WebListener; 
import javax.servlet.http.HttpSessionEvent; 
import javax.servlet.http.HttpSessionListener; 
 
/** 
 *  implementation HttpSessionListener Interface, monitoring session The dynamics of the  
 * @author Administrator 
 * 
 */ 
@WebListener 
public class SessionListener implements HttpSessionListener{ 
 
  @Override 
  public void sessionCreated(HttpSessionEvent session) { 
    System.out.println("session Creating a successful ......"); 
     
  } 
 
  @Override 
  public void sessionDestroyed(HttpSessionEvent session) { 
    System.out.println("session The destruction ......"); 
     
  } 
 
} 

3. Custom interceptors

Steps:

1. Create your own interceptor to implement HandlerInterceptor interface

2. Create your own interceptor chain, inherit WebMvcConfigurerAdapter class, and override addInterceptors method.

3. Instantiate your own interceptor and add it to the interceptor chain.

Interceptor 1:


package com.example.Interceptor;  
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.web.servlet.HandlerInterceptor; 
import org.springframework.web.servlet.ModelAndView; 
 
public class CustomInterceptor implements HandlerInterceptor { 
 
  @Override 
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, 
      Exception exception) throws Exception { 
    // Is called at the end of the entire request DispatcherServlet  Execute after rendering the corresponding view (mainly for resource cleaning)  
    System.out.println("3.  Called after the entire request is completed ......CustomInterceptor1......"); 
  } 
 
  @Override 
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view) 
      throws Exception { 
    //  It is called after the request is processed, but before the view is rendered  
    System.out.println("2.  It is called after the request is processed, but before the view is rendered ......CustomInterceptor1......"); 
  } 
 
  @Override 
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { 
    //  It is invoked before the request is processed  
    System.out.println("1.  It is invoked before the request is processed ......CustomInterceptor1......"); 
    //  Only the return true It's going to go down and return false Cancel current request  
    return true; 
  } 
 
} 

Interceptor 2:


package com.example.Interceptor; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.web.servlet.HandlerInterceptor; 
import org.springframework.web.servlet.ModelAndView; 
 
public class CustomInterceptor2 implements HandlerInterceptor { 
 
  @Override 
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, 
      Exception exception) throws Exception { 
    // Is called at the end of the entire request DispatcherServlet  Execute after rendering the corresponding view (mainly for resource cleaning)  
    System.out.println("3.  Called after the entire request is completed ......CustomInterceptor2......"); 
  } 
 
  @Override 
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view) 
      throws Exception { 
    //  It is called after the request is processed, but before the view is rendered  
    System.out.println("2.  It is called after the request is processed, but before the view is rendered ......CustomInterceptor2......"); 
  } 
 
  @Override 
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { 
    //  It is invoked before the request is processed  
    System.out.println("1.  It is invoked before the request is processed ......CustomInterceptor2......"); 
    //  Only the return true It's going to go down and return false Cancel current request  
    return true; 
  } 
 
} 

Custom interceptor chain and add custom interceptors


package com.example.adapter; 
 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
 
import com.example.Interceptor.CustomInterceptor; 
import com.example.Interceptor.CustomInterceptor2; 
 
/** 
 *  inheritance WebMvcConfigurerAdapter , copying addInterceptors methods  
 * @author Administrator 
 * 
 */ 
@Configuration 
public class WebAdapter extends WebMvcConfigurerAdapter{ 
 
  @Override 
  public void addInterceptors(InterceptorRegistry registry) { 
    // A number of interceptors are made up 1 Three interceptor chains  
    /** 
     *  Main Methods:  
     * addPathPatterns  Used to add intercepting rules  
     * excludePathPatterns  User exclusion interception  
     */ 
    registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/*"); 
    registry.addInterceptor(new CustomInterceptor2()).addPathPatterns("/*"); 
    super.addInterceptors(registry); 
  } 
} 

Related articles: