拦截器的介绍

那么拦截器Inteceptinon中是如何实现拦截的呢

其实主要还是上面说的首先在Inteception链中增加多个拦截器(也就是上面的addInterceptions方法过滤的多个Intecepter)然后去执行三个方法

1、preHandle(controler执行前执行,返回false标示后面的拦截器不用再执行,已经执行完毕)  

2、postHandle(controler执行后,modelView渲染前)

3、aftercomlication(modelView渲染后  主要作用是清理资源)

package com.ryc.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 Interceptor  implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("        1在请求之前,  被执行");

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
            System.out.println("    1在完成业务之后 ,试图解析之前 执行");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
            System.out.println("    1再完成视图解析之后");
    }
}


以及 xml 配置 :

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/*"/>
            <bean id="" class="com.ryc.interceptor."
        </mvc:interceptor>
    </mvc:interceptors>

猜你喜欢

转载自blog.csdn.net/weixin_54255580/article/details/123192117