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>

其次拦截器里的方法顺序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java基础学习笔记之数组详解

    Java基础学习笔记之数组详解

    这篇文章主要介绍了Java基础学习笔记之数组,结合实例形式详细分析了java的基本概念、定义、迭代、输出、反转、排序等常用操作技巧,需要的朋友可以参考下
    2019-08-08
  • JAVA最容易忽视的数据类型之枚举详解

    JAVA最容易忽视的数据类型之枚举详解

    这篇文章主要给大家介绍了关于JAVA最容易忽视的数据类型之枚举的相关资料,Java中的枚举类型是一种特殊的类型,它允许程序员定义一个固定的值集合,并为每个值分配一个名称,枚举类型提供了一种简单、安全和可读性强的方式来表示一组相关的常量,需要的朋友可以参考下
    2023-10-10
  • Spring Cloud Eureka(全面解析) 大白话

    Spring Cloud Eureka(全面解析) 大白话

    这篇文章主要介绍了Spring Cloud Eureka(全面解析) 大白话,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析

    详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析

    这篇文章主要介绍了详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Java判断数字位数的方法总结

    Java判断数字位数的方法总结

    本文给大家整理了Java判断数字位数的两种常用方法,对此有兴趣的可以跟着小编一起学习下。
    2018-02-02
  • 使用JPA自定义VO类型转换(EntityUtils工具类)

    使用JPA自定义VO类型转换(EntityUtils工具类)

    这篇文章主要介绍了使用JPA自定义VO类型转换(EntityUtils工具类),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解

    利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解

    这篇文章主要给大家介绍了关于利用Spring MVC+Mybatis实现Mysql分页数据查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Java读写txt文件代码实例

    Java读写txt文件代码实例

    这篇文章主要给大家介绍了关于Java读写txt文件的相关资料,近期处理的数据规模比较大,正好又是统计合并的事情,想着借助excel就可以完成了,然后就了解了下java读取excel的事情,需要的朋友可以参考下
    2023-09-09
  • Java利用Selenium操作浏览器的示例详解

    Java利用Selenium操作浏览器的示例详解

    本文主要介绍如何使用java代码利用Selenium操作浏览器,某些网页元素加载慢,如何操作元素就会把找不到元素的异常,此时需要设置元素等待,等待元素加载完,再操作,感兴趣的可以了解一下
    2023-01-01
  • 细数Java接口的概念、分类及与抽象类的区别

    细数Java接口的概念、分类及与抽象类的区别

    下面小编就为大家带来一篇细数Java接口的概念、分类及与抽象类的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11

最新评论