• SpringMVC拦截器的使用(入门)


    拦截器简介

    Spring Web MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。

    拦截器执行流程

    入门案例

    使用拦截器需要实现HandlerInterceptor接口,它有三个方法

    preHandler:预处理方法,返回值true表示继续执行,false表示流程中断

    postHandler:后处理方法

    afterCompletion:请求处理完毕后执行的回调方法

    //拦截器
    public class FirstInterceptor implements HandlerInterceptor {
        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
            System.out.println("first preHandler");
            return true;
        }
    
        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
            System.out.println("first postHandler");
        }
    
        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
            System.out.println("first afterCompletion");
        }
    }
    

      

    处理器代码

    @Controller
    public class FirstController {
        
        @RequestMapping("/first")
        public String doFirst(){
            System.out.println("doFirst");
            return "index";
        }
    }

      

    配置Springxml文件

      <!--:参数方法名解析器-->
       <bean id="methodNameResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
           <property name="prefix" value="/"/>
           <property name="suffix" value=".jsp"/>
       </bean>
        <!--扫描包下所有的被标注的类-->
        <context:component-scan base-package="day17Interceptor"/>
    
       <!--配置拦截器-->
        <mvc:interceptors>
            <!--配置第一个拦截器-->
            <mvc:interceptor>
                <!--拦截所有请求-->
                <mvc:mapping path="/**"/>
                <!--配置自定义拦截器-->
                <bean class="day17Interceptor.FirstInterceptor"/>
            </mvc:interceptor>
        </mvc:interceptors>
    
        <!--配置注解驱动-->
        <mvc:annotation-driven/>
    

      

    访问:http://localhost:8080/first

    结果:

    如果需要定义多个拦截器就需要在<mvc:Interceptors>节点中在添加一个<mvc:Interceptor>子节点,例如

    <!--配置拦截器-->
        <mvc:interceptors>
            <!--配置第一个拦截器-->
            <mvc:interceptor>
                <!--拦截所有请求-->
                <mvc:mapping path="/**"/>
                <!--配置自定义拦截器-->
                <bean class="day17Interceptor.FirstInterceptor"/>
            </mvc:interceptor>
    
            <!--配置第二个拦截器-->
            <mvc:interceptor>
                <!--拦截所有请求-->
                <mvc:mapping path="/**"/>
                <!--配置自定义拦截器-->
                <bean class="day17Interceptor.SecondInterceptor"/>
            </mvc:interceptor>
        </mvc:interceptors>
    

      

  • 相关阅读:
    zabbix
    amoeba 读写分离
    部署MySQL-主从异步复制
    MySQL 基本操作
    mysql 完整备份和恢复
    正则匹配表达式各个符文表达的意义
    Include和require的区别
    nosql和Mysql的区别
    Git与SVN的区别
    mongodb与mysql区别
  • 原文地址:https://www.cnblogs.com/xuchangqi1/p/8694589.html
Copyright © 2020-2023  润新知