springmvc中拦截器的使用
拦截器的实现
1.编辑拦截器类实现HandlerInterceptor接口。
2.把拦截器注册到springmvc框架中。
3.配置拦截器的拦截规则
拦截器类:
public class LoginHandler implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } /** * 可以通过modelandview修改传递的内容和视图 */ @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } /** * 返回值表示是否需要将当前的请求拦截下来 * 参数arg2表示请求的目标对象 */ @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { if(arg0.getSession().getAttribute("name")==null){ arg0.getRequestDispatcher("login.jsp").forward(arg0, arg1); return false; }else{ return true; } } }
注册拦截器(注意xml文件的头部需要加的命名空间等内容):
<!--注册拦截器 --> <mvc:interceptors> <!-- <mvc:interceptor> <mvc:mapping path="/json.action"/> <bean class="filter.LoginHandler"></bean> </mvc:interceptor> --> <bean class="filter.LoginHandler"></bean> </mvc:interceptors>
通过上面的代码就可以实现,在发送请求时,如果没有登录的话(登录后会保存一个session,拦截规则就是判断session),会跳转到登录界面。