springmvc拦截器

springmvc拦截器

配置springmvc

    <mvc:interceptors>
        <!-- 使用 bean声明定义一个Interceptor,但是如果是直接定义在 mvc:interceptors 下面的 Interceptor将会拦截所有的请求 -->
        <!--<bean class="com.xxx.xxx.AuthorityInterceptor"/> -->
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.xieli.liu.interceptor.HandleInterceptor1"/>
        </mvc:interceptor>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.xieli.liu.interceptor.HandleInterceptor2"/>
        </mvc:interceptor>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.xieli.liu.interceptor.HandleInterceptor3"/>
        </mvc:interceptor>
    </mvc:interceptors>

创建拦截器实现类

package com.xieli.liu.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2019-12-06.
 */
public class HandleInterceptor1 implements HandlerInterceptor{
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("HandleInterceptor1"+"...............preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("HandleInterceptor1"+"...............postHandle");

    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("HandleInterceptor1"+"...............afterCompletion");

    }
}

package com.xieli.liu.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2019-12-06.
 */
public class HandleInterceptor2 implements HandlerInterceptor{

    //handle执行前,常用权限验证
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("HandleInterceptor2"+"...............preHandle");

        return true;
    }
   //handlef返回之前,对ModelAndView处理
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("HandleInterceptor2"+"...............postHandle");

    }
    //handle执行后,常用同一异常处理,同一日志处理
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("HandleInterceptor2"+"...............afterCompletion");

    }
}

package com.xieli.liu.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2019-12-06.
 */
public class HandleInterceptor3 implements HandlerInterceptor{

    //handle执行前,常用权限验证
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("HandleInterceptor3"+"...............preHandle");

        return true;
    }
   //handlef返回之前,对ModelAndView处理
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("HandleInterceptor3"+"...............postHandle");

    }
    //handle执行后,常用同一异常处理,同一日志处理
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("HandleInterceptor3"+"...............afterCompletion");

    }
}

测试

测试所有拦截器放行时
在这里插入图片描述
结论:preHandle顺序执行,postHandle和afterCompletion逆序执行

拦截器3不放行
在这里插入图片描述
结论:所有postHandle都不执行,拦截器3 afterCompletion不执行
拦截器1不放行
在这里插入图片描述
结论:只有拦截器1 preHandle执行
拦截器应用
1.同一日志处理:放在第一个拦截器并且一定要放行。
2.登陆认证:放在第一个拦截。
3.权限校验:放在登陆认证拦截器的后面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桀骜浮沉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值