拦截器注册:
package org.example.interceptor_hz.config;
import org.example.interceptor_hz.interceptor.FirstHandlerInterceptor;
import org.example.interceptor_hz.interceptor.SecondHandlerInterceptor;
import org.example.interceptor_hz.service.IndexService;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer
{
@Override
public void addInterceptors(InterceptorRegistry registry)
{
FirstHandlerInterceptor firstHandlerInterceptor = new FirstHandlerInterceptor(new IndexService());
registry.addInterceptor(firstHandlerInterceptor).addPathPatterns("/**");
SecondHandlerInterceptor secondHandlerInterceptor = new SecondHandlerInterceptor();
registry.addInterceptor(secondHandlerInterceptor).addPathPatterns("/**");
}
}
IndexService
package org.example.interceptor_hz.service;
import org.springframework.stereotype.Service;
@Service
public class IndexService {
public void testIndex()
{
System.out.println("执行service");
}
}
拦截器一:
package org.example.interceptor_hz.interceptor;
import org.example.interceptor_hz.service.IndexService;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstHandlerInterceptor implements HandlerInterceptor {
private IndexService indexService;
public FirstHandlerInterceptor(IndexService indexService){
this.indexService = indexService;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("FirstHandlerInterceptor正在执行preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
indexService.testIndex();
System.out.println("FirstHandlerInterceptor正在执行postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("FirstHandlerInterceptor正在执行afterCompletion");
}
}
拦截器二:
package org.example.interceptor_hz.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondHandlerInterceptor implements HandlerInterceptor
{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{
System.out.println("SecondHandlerInterceptor正在执行preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
{
System.out.println("SecondHandlerInterceptor正在执行postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
{
System.out.println("SecondHandlerInterceptor正在执行afterCompletion");
}
}
过滤器:
package org.example.interceptor_hz;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")
public class IndexFilter implements Filter
{
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
System.out.println("IndexFilter已执行");
filterChain.doFilter(servletRequest, servletResponse);//放行
}
}
访问:
package org.example.interceptor_hz.web;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController
{
@RequestMapping("/interceptorIndex")
public String index()
{
System.out.println("执行index");
return "welcome to my site";
}
}
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan({"org.example.webFilter","org.example.interceptor_hz"})
public class HelloWorldApplication
{
public static void main(String[] args)
{
SpringApplication.run(HelloWorldApplication.class, args);
}
}