SpringMVC拦截器配置及运行流程解析
更新时间:2020年06月11日 10:47:46 作者:shouyaya
这篇文章主要介绍了SpringMVC拦截器配置及运行流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.与过滤器filter的区别

2.springMVC中拦截器的必须实现的三个方法:


3. 拦截器类的编写:
package com.imooc.core;
import com.imooc.bean.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
//在业务处理器被调用前的方法,若是返回false则不会继续进入业务处理器
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
User user = (User)request.getSession().getAttribute("session_user");
if(user==null) {
response.sendRedirect(request.getContextPath()+"/login");
return false;//会终止所有的请求
}
return true;
}
//在业务处理器被调用后,dispatcher响应客户端前的方法,一般用于生成日志文件时调用
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
//dispatcher响应客户端后的方法,一般用于资源的清理
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
4.在spring的配置文件中注册拦截器:
<!-- 拦截器的注册 -->
<mvc:interceptors>
<mvc:interceptor>
<!--**表示往后的所有子目录也包括进来-->
<mvc:mapping path="/user/**"></mvc:mapping>
<!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
<!--即以下的方法不会被拦截-->
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
<!--填写之前配置好的拦截器-->
<bean class="com.imooc.core.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
注意:要是有多个拦截器执行顺序以spring的配置文件中的注册拦截器顺序执行:
<!-- 拦截器的注册 -->
<mvc:interceptors>
<!--先注册先执行-->
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<bean class="com.imooc.core.LogInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/user/**"></mvc:mapping>
<!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
<bean class="com.imooc.core.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
其次拦截器里的方法顺序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
这篇文章主要介绍了详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-07-07
使用JPA自定义VO类型转换(EntityUtils工具类)
这篇文章主要介绍了使用JPA自定义VO类型转换(EntityUtils工具类),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解
这篇文章主要给大家介绍了关于利用Spring MVC+Mybatis实现Mysql分页数据查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。2017-08-08


最新评论