作者:ssslinppp      

1. 拦截器简介及应用场景





2. 拦截器接口及拦截器适配器







3. 运行流程图



正常运行


中断流程







4. 程序实例



控制层:

@Controller
@RequestMapping(value = "/test")
public class TestController {
    
    @RequestMapping(value = "/interceptor12")
    public String interceptor12() {
        System.out.println("Controller层方法-interceptor12");
        return "index";
    }
    
    @RequestMapping(value = "/interceptor34")
    public String interceptor34() {
        System.out.println("Controller层方法-interceptor34");
        return "index";
    }

}  


总共定义了5个拦截器

每个拦截器中只是打印消息,各拦截器类似,程序如下:

public class MyInterceptor1 extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        System.out.println("MyInterceptor1-preHandle()");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object o, ModelAndView mav)
            throws Exception {
        System.out.println("MyInterceptor1-postHandle()");
    }
    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object o, Exception excptn)
            throws Exception {
        System.out.println("MyInterceptor1-afterCompletion()");
    }

}  


配置拦截器

<!-- 定义拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!-- 拦截指定请求 -->
            <mvc:mapping path="/test/interceptor12" />
            <bean class="com.ll.Interceptor.MyInterceptor1" />
        </mvc:interceptor>
        
        <!-- 拦截所有的请求 -->
        <mvc:interceptor>
            <mvc:mapping path="/test/*" />
            <bean class="com.ll.Interceptor.MyInterceptorAll" />
        </mvc:interceptor>
        
        <mvc:interceptor>
            <mvc:mapping path="/test/interceptor12" />
            <bean class="com.ll.Interceptor.MyInterceptor2" />
        </mvc:interceptor>
        
        <mvc:interceptor>
            <mvc:mapping path="/test/interceptor34" />
            <bean class="com.ll.Interceptor.MyInterceptor3" />
        </mvc:interceptor>
        
        <mvc:interceptor>
            <mvc:mapping path="/test/interceptor34" />
            <bean class="com.ll.Interceptor.MyInterceptor4" />
        </mvc:interceptor>

</mvc:interceptors>   


特别注意拦截器的配置顺序,如下:
  1. MyInterceptor1;
  2. MyInterceptorAll;
  3. MyInterceptor2;
  4. MyInterceptor3;
  5. MyInterceptor4;
其中,MyInterceptor1和MyInterceptor2拦截interceptor12请求,MyInterceptor3和MyInterceptor4拦截interceptor34请求,MyInterceptorAll拦截所有请求。







7. 其他


博客:
  淘宝-代做毕设:

附件列表

【Spring学习笔记-MVC-17】Spring MVC之拦截器的更多相关文章

  1. Spring学习笔记(四)--MVC概述

    一. 飞机 最近马来西亚航空370号班机事故闹得沸沸扬扬,情节整的扑朔迷离,连我在钻研springMVC平和的心情都间接的受到了影响.正当我在想这个MVC的处理过程可以怎样得到更好的理解呢?灰机,灰机 ...

  2. Spring学习笔记5—为Spring添加REST功能

    1 关于REST 我的理解,REST就是将资源以最合适的形式在服务端和客户端之间传递. 系统中资源采用URL进行标识(可以理解为URL路径中带参数) 使用HTTP方法进行资源的管理(GET,PUT,P ...

  3. java JDK8 学习笔记——第17章 反射与类加载器

    第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang ...

  4. EJB学习笔记六(EJB中的拦截器)

     1.前言 听到拦截器,预计都不陌生,尤其是在Servlet规范中,充分应用了拦截器的概念.EJB3也提供了拦截器的支持,本质上是轻量级的AOP实现.拦截器能够将多个业务方法中的通用逻辑从业务方法中抽 ...

  5. 【Spring学习笔记-MVC-16】Spring MVC之重定向-解决中文乱码

    概述 spring MVC框架controller间跳转,需重定向,主要有如下三种: 不带参数跳转:形如:http://localhost:8080/SpringMVCTest/test/myRedi ...

  6. 【Spring学习笔记-MVC-15】Spring MVC之异常处理

    作者:ssslinppp       1. 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理 ...

  7. 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问

    作者:ssslinppp       参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html  http://www.cnb ...

  8. 【Spring学习笔记-MVC-13】Spring MVC之文件上传

    作者:ssslinppp       1. 摘要 Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的.Spring使用Jakarta Co ...

  9. 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver

    场景 当我们设计程序界面的时候,中国人希望界面是中文,而美国人希望界面是英文. 我们当然希望后台代码不需改变,系统能够通过配置文件配置,来自己觉得是显示中文界面还是英文界面. 这是,Spring mv ...

随机推荐

  1. golang优先队列

    参考博客:https://studygolang.com/articles/13173 基本类型排序 package main import ( "fmt" "sort& ...

  2. 关于双网卡双宽带Http及Socks代理的配置

    1.[硬件环境] a, 1台宿主(win7)+几十台虚拟机(xp)(vm10的版本,估计可打开52台以上的虚拟机) b, 双网卡,其中一个网卡通过路由连接电信ADSL,一个直连集线器,可直接连接移动m ...

  3. tensorflow 模型保存后的加载路径问题

    import tensorflow as tf #保存模型 saver = tf.train.Saver() saver.save(sess, "e://code//python//test ...

  4. L1-022 奇偶分家

    给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000):第2行给出N个正整数,以空格分隔. 输出格式: 在一行中先后输出奇数的个数.偶数的个数.中间以1个空格 ...

  5. main方法原来只要放在public static类中就能跑,涨知识了

    接口中可以装在嵌套类对象. public interface ClassInterface { void howdy(); class Test implements ClassInterface { ...

  6. Uboot中start.S源码的指令级的详尽解析

    Uboot中start.S源码的指令级的详尽解析 https://www.crifan.com/files/doc/docbook/uboot_starts_analysis/release/html ...

  7. PyCharm 注释

    1.1 单行注释(行注释) 语法格式: #[空格]说明性文字信息 注:可放一行代码的后面进行说明 添加快捷键:  Ctrl+/ 取消快捷键:  同上 1.2 多行注释(块注释) 语法格式: " ...

  8. 小程序和ThinkPHP5结合实现登录状态(含代码)

    本篇文章给大家带来的内容是关于小程序和ThinkPHP5结合实现登录状态(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信小程序中,一般会涉及三种登录方式: 1. 使用微 ...

  9. 微信小程序插件开发

    小程序插件功能介绍 插件,是可被添加到小程序内直接使用的功能组件.开发者可以像开发小程序一样开发一个插件,供其他小程序使用.同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的 ...

  10. 重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源

    今天这篇文章我们打算来深度解读一下equal方法以及其关联方法hashCode(),我们准备从以下几点入手分析: 1.equals()的所属以及内部原理(即Object中equals方法的实现原理) ...