在SSM中使用拦截器Interceptor
1、在springmvc中配置拦截器信息
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有mvc控制器 -->
<mvc:mapping path="/**"/>
<!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
<mvc:exclude-mapping path="/"/>
<bean class="com.xxx.interceptor.AllInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
2、在web.xml中配置信息
指定使用默认的servlet对静态资源进行拦截
<!-- 放行静态资源 ,配合SpringMVC拦截器使用-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
3、创建一个类,并继承HandlerInterceptor
重写preHandle、postHandle、afterCompletion
preHandle:返回值为true放行,为false拦截
执行顺序:先执行preHandle,在执行postHandle,最后执行afterCompletion
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author JngKang
* @date 2022-05-28 07:42
*/
public class AllInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("AllInterceptor.preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("AllInterceptor.postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("AllInterceptor.afterCompletion");
}
}