• 023 SpringMVC拦截器


    一:拦截器的HelloWorld

    1.首先自定义拦截器

      只要实现接口就行。

     1 package com.spring.it.interceptors;
     2 
     3 import javax.servlet.http.HttpServletRequest;
     4 import javax.servlet.http.HttpServletResponse;
     5 
     6 import org.springframework.web.servlet.HandlerInterceptor;
     7 import org.springframework.web.servlet.ModelAndView;
     8 
     9 public class FirstInterceptor implements HandlerInterceptor{
    10 
    11     @Override
    12     public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
    13             throws Exception {
    14         System.out.println("afterCompletion");
    15         
    16     }
    17 
    18     @Override
    19     public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    20             throws Exception {
    21         System.out.println("postHandle");
    22         
    23     }
    24 
    25     @Override
    26     public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
    27         System.out.println("preHandle");
    28         return true;
    29     }
    30 }

    2.自定义拦截器

    1 <mvc:interceptors>
    2         <!-- 配置自定义拦截器 -->
    3         <bean class="com.spring.it.interceptors.FirstInterceptor"></bean>
    4     
    5         <!-- 配置LocaleChangeInterceter拦截器 -->
    6         <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
    7     </mvc:interceptors>

    3.效果

      重启,然后随便点一个链接

      

    4.说明

      preHandler:如果返回true,则继续调用后续的拦截器和目标方法

            如果返回false,则不再进行调用后续的拦截器和目标方法

            可以考虑做权限,日志,事务

      postHandler:调用目标方法之后,但是在渲染视图之前

            可以对请求域中的属性或者视图做出修改。

      dftercompletion:渲染视图之后被调用

              释放资源。

    5.调用顺序

      

    二:拦截器的配置

    1.配置拦截器的作用路径

     1    <mvc:interceptors>
     2         <!-- 配置自定义拦截器 -->
     3         <bean class="com.spring.it.interceptors.FirstInterceptor"></bean>
     4         <!-- 配置拦截器的作用路径 -->
     5         <mvc:interceptor>
     6             <mvc:mapping path="/emps"/>
     7             <bean class="com.spring.it.interceptors.SecondInterceptor"></bean>
     8         </mvc:interceptor>
     9     
    10         <!-- 配置LocaleChangeInterceter拦截器 -->
    11         <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
    12     </mvc:interceptors>

    2.效果

      

    三:拦截器的执行顺序

    1.图说明

      

    2.注意点

      如果second中的preHandler中返回false。

      虚线中的都不再执行。

      

  • 相关阅读:
    C# 根据年月日获取星期几方法
    C# 程序实现功能目录
    json字符串转泛型集合对象
    mongoDB基本操作
    Mac下安装mongoDB
    Mac下安装redis
    Mac下安装Scrapy
    beautiful Soup实现抓取图片素材
    python os模块常用方法
    转载---关于Spring的69个面试问答
  • 原文地址:https://www.cnblogs.com/juncaoit/p/8850058.html
Copyright © 2020-2023  润新知