首页 > 代码库 > SpringMVC中拦截器的简单使用
SpringMVC中拦截器的简单使用
SpringMVC的处理器拦截器类似于过滤器Filter,用于对处理器进行预处理和后处理。
例如做登录验证,日志,性能检测等。
一、编写拦截器,使其实现HandlerInterceptor接口
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.xxx.xxxx.pojo.User; public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { User user = (User) request.getSession().getAttribute("currentUser"); if(user == null){ request.getRequestDispatcher("/jsp/signin.jsp").forward(request, response); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
preHandle:预处理回调方法,实现处理器的登录检查,第三个参数为响应的处理器(Controller)
返回值:true表示继续流程(如调用下一个拦截器或处理器);
false表示流程中断,不会继续调用其他的拦截器或处理器;
postHandle:后处理回调方法,实现处理器的后处理、渲染视图之前,可以通过modelAndView对模型数据进行处理或对视图进行处理,modelAndView也可能为null。
afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion。
二、SpringMVC配置文件中配置该拦截器
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/user/login"/> <!-- 登录请求 --> <mvc:exclude-mapping path="/user/register"/> <!-- 注册请求 --> <mvc:exclude-mapping path="/resources/**"/> <!-- 资源 --> <bean class="com.tfyc.vipsystem.interceptors.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors>
其中 exclude-mapping 中的请求是不拦截的
SpringMVC中拦截器的简单使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。