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);
}
}