【问题记录】mvc配置拦截器xml生效而配置类不生效
问题是使用xml配置生效,但是代码配置失效,找了很久,基本上没看到这个问题,有也没有解决方案,唉。
先记录一下xml的方式,后续再查查。
1.创建登录拦截器
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
System.out.println("requestURI: " + requestURI);
//检测此时的登录状态 session
HttpSession session = request.getSession();
Object client = session.getAttribute("client");//获取登录状态 如果没有登录
if (client == null) {
response.setStatus(401);
return false;
}
//如果存在
BaseContext.setCurrentClient((Client) client);
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
BaseContext.removeClient();
}
}
2.在xml中注册
网上好多让去掉<mvc:annotation-driven>的,这个可万万不能去掉啊。
<!--开启springmvc-->
<mvc:annotation-driven/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/client/login"/>
<mvc:exclude-mapping path="/client/register"/>
<bean class="com.qcby.config.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>