spring mvc配置拦截器
编写拦截器
public class DemoInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.err.println("拦截前 do something !");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.err.println("----------拦截后 do something !");
}
}
配置使拦截器生效
@Configuration
@EnableWebMvc
@ComponentScan({"com.sky.springmvctest"})
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
@Bean
public DemoInterceptor demoInterceptor() {
return new DemoInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(demoInterceptor());
}
}
注意:访问静态资源不拦截
拦截前 do something !
index
----------拦截后 do something !
配置Filter
spring mvc配合Filter使用有两种方式
方法一:@WebFilter
缺点:不能指定Filter的执行顺序
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
@WebFilter(filterName = "myFilter", urlPatterns = "/*")
public class MyFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String requestURI = request.getRequestURI();
System.err.println("myFilter_uri:" + requestURI);
chain.doFilter(request, response);
}
}
方法二:FilterRegistrationBean
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
public class MyFilter2 implements Filter {
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String requestURI = request.getRequestURI();
System.err.println("myFilter2_uri:" + requestURI);
chain.doFilter(request, response);
}
}
@Configuration
public class MyWebConfig implements WebMvcConfigurer {
@Bean
public FilterRegistrationBean<MyFilter2 > filterRegistration() {
FilterRegistrationBean<MyFilter2 > registration = new FilterRegistrationBean<>();
registration.setFilter(new MyFilter2 ());
registration.addUrlPatterns("/*");
registration.setName("myFilter2");
registration.setOrder(1);
return registration;
}
}