HandlerInterceptor拦截器在spring mvc中通常用于会员登录过滤,或简单的权限验证等,HandlerInterceptor拦截器是一个接口类,如果要使用它,就必须得新建一个类,实现HandlerInterceptor,并实现里面的方法。
例如当一个用户要访问admin后台时,我们要做一个判断,如果该用户没有登录,我们就要让他跳转到login登录界面,下面是spring mvc中HandlerInterceptor拦截器的使用方法,如下:
步骤一:先在springmvc.xml视图配置文件中加入<mvc:interceptors>拦截器配置,所有访问如http://ip/admin后台的请求,都要经过这个拦截器做一些处理,配置如下。
<mvc:interceptors> <!-- 配置登陆拦截器 --> <mvc:interceptor> <mvc:mapping path="/admin/**" /> <bean class="cn.com.xfweblogin.filter.LoginHandlerIntercepter"></bean> </mvc:interceptor> </mvc:interceptors>
步骤二:创建一个LoginHandlerIntercepter类,继承HandlerInterceptor拦截器接口,实现拦截器接口里面的三个方法,代码如下:
package com.tpyyes.filter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; /** * 登陆过滤 * */ public class LoginHandlerIntercepter implements HandlerInterceptor { //拦截器一,只有返回true,才会通过拦截器的验证,否则就会跳转到登录页 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; //假如登录时,用户已经存入session HttpSession session = request.getSession(); String username = (String) session.getAttribute("userId"); if (username != null) { return true; } else { response.sendRedirect(basePath + "/login"); return false; } } //拦截器二,上一个拦截器返回true,才会到这个拦截器,此拦截器可以通过ModelAndView向特定的页面传递参数或跳转页面等 @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } //拦截器三:当第一个拦截器返回true,才会执行此拦截器里面的方法 @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } }
HandlerInterceptor拦截器在spring mvc中的使用就是这么简单,其实它可以做很多事情,就看你怎么使用这个拦截器了。
如果有什么建议或意见,可以关注“太平洋学习网”微信公众号,与小编联系。