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中的使用就是这么简单,其实它可以做很多事情,就看你怎么使用这个拦截器了。
如果有什么建议或意见,可以关注“太平洋学习网”微信公众号,与小编联系。