使用Springmvc自定义拦截器实现登录的拦截
1、springmvc.xml的配置
<!-- 拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/company/**" />
<bean class="....LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
其mvc:interceptor下必须要有bean节点,表示应用自定义的拦截器类
2、自定义的拦截器实现类
public class LoginInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
/**
* 在调用handler之前调用
* 做权限
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
System.out.println("拦截器调试成功");
String username = (String)request.getSession().getAttribute("CurrentUser");
if(username == ""){
request.getRequestDispatcher("/login.jsp").forward(request, response);
return false;
}else
return true;
}
}
首先要实现HandlerInterceptor,并且重写其中的三个方法
1)preHandle
这个方法 该方法在目标方法之前被调用.
若返回值为 true, 则继续调用后续的拦截器和目标方法.
若返回值为 false, 则不会再调用后续的拦截器和目标方法.
可以考虑做权限. 日志, 事务等.
2)postHandle
调用目标方法之后, 但渲染视图之前.
可以对请求域中的属性或视图做出修改.
3)afterCompletion
渲染视图之后被调用. 释放资源