栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring MVC框架中的拦截器详细使用过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring MVC框架中的拦截器详细使用过程

加油,新时代打工人!

Spring MVC详细环境配置和入门
Spring MVC 响应数据和结果视图
SpringMVC实现三种文件上传的方式
Spring MVC的异常处理和友好页面

实现之前把Spring MVC环境配置完成,参考以上文章

SpringMVC框架中的拦截器
  • 1. 拦截器的概述
  • 2.自定义拦截器
    • springmvc.xml配置拦截器
  • 3. usercontroller控制器
    • 一个拦截器执行过程
  • 4.配置第二个拦截器
    • 在springmvc.xml在配置一个拦截器
    • 两个拦截器执行过程:
  • 5.运行截图
  • 6.github源码地址

目录结构

1. 拦截器的概述
  1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
  2. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链
    中的拦截器会按着定义的顺序执行。
  3. 拦截器和过滤器的功能比较类似,有区别
    1. 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
    2. 拦截器是SpringMVC框架独有的。
    3. 过滤器配置了 public class MyInterceptor1 implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor执行了1,,,,前111"); // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("MyInterceptor1执行了,,,,后111"); // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("MyInterceptor1执行了,,,,最后运行111"); } } springmvc.xml配置拦截器
          
          
              
                  
          @RequestMapping("/interecptor")
          public String interecptor() {
              System.out.println("interecptor方法执行了...");
              return "success";
          }
      }
      
      
      一个拦截器执行过程

      1.首先请求页面经过拦截器,自定义类MyInterceptor1的preHandle方法返回ture,后面执行UserController,若放回false,则不执行后面UserController
      2.postHandle方法是在UserController 执行完成后执行
      3.afterCompletion方法在所有页面执行完成后执行,也就是最后执行,可以释放资源,比如流(stream)等

      4.配置第二个拦截器

      把自定义拦截器在复制一份即可

      package com.itboy.interceptor;
      
      import org.springframework.web.servlet.HandlerInterceptor;
      import org.springframework.web.servlet.ModelAndView;
      
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      
      public class MyInterceptor2 implements HandlerInterceptor{
          
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
              System.out.println("MyInterceptor2执行了,,,,前222");
            // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
              return true;
          }
      
          
          @Override
          public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
              System.out.println("MyInterceptor2执行了,,,,后222");
            //  request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
          }
      
          
          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
              System.out.println("MyInterceptor2执行了,,,,最后运行222");
          }
      }
      
      
      在springmvc.xml在配置一个拦截器
        
          
              
                  
                  
                  
                  
                  
                  
              
      
      两个拦截器执行过程:

      1.先执行第一个拦截器的preHandle(),在执行第二个preHandle()
      2.然后执行控制器的方法
      3. 执行第二个拦截器postHandle (),在执行第一个postHandle ()
      4. 在执行第二个拦截器afterCompletion (),在执行第一个afterCompletion()

      5.运行截图

      6.github源码地址

      https://github.com/itboywh/springmvc_day02_04_Interceptor

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号