0
点赞
收藏
分享

微信扫一扫

【Spring学习笔记-MVC-17】Spring MVC之拦截器

作者:ssslinppp      

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

【Spring学习笔记-MVC-17】Spring MVC之拦截器_spring【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC拦截器_02



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

【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC拦截器_03【Spring学习笔记-MVC-17】Spring MVC之拦截器_拦截器_04【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC_05

【Spring学习笔记-MVC-17】Spring MVC之拦截器_拦截器_06【Spring学习笔记-MVC-17】Spring MVC之拦截器_拦截器_07


【Spring学习笔记-MVC-17】Spring MVC之拦截器_spring_08


3. 运行流程图

正常运行

【Spring学习笔记-MVC-17】Spring MVC之拦截器_spring_09


中断流程

【Spring学习笔记-MVC-17】Spring MVC之拦截器_拦截器_10


【Spring学习笔记-MVC-17】Spring MVC之拦截器_spring_11

【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC拦截器_12

【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC_13【Spring学习笔记-MVC-17】Spring MVC之拦截器_拦截器_14

【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC拦截器_15

【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC拦截器_16


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个拦截器

【Spring学习笔记-MVC-17】Spring MVC之拦截器_拦截器_17

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

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拦截所有请求。



5. 测试

http://localhost:8080/SpringMVCTest/test/interceptor12 

【Spring学习笔记-MVC-17】Spring MVC之拦截器_spring_18

​​http://localhost:8080/SpringMVCTest/test/interceptor34​​  【Spring学习笔记-MVC-17】Spring MVC之拦截器_代做毕设_19


6. 其他应用举例-登录检测

【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC_20




【Spring学习笔记-MVC-17】Spring MVC之拦截器_Spring MVC拦截器_21【Spring学习笔记-MVC-17】Spring MVC之拦截器_spring_22【Spring学习笔记-MVC-17】Spring MVC之拦截器_代做毕设_23



举报

相关推荐

0 条评论