<SpringMvc>入门七 拦截器

什么是拦截器

1.SpringMVC框架中的拦截器用于 对处理器 进行预处理和后处理的技术。

2.可以定义拦截器链,按照顺序执行。

3.拦截器和过滤器功能类似,区别在

拦截器 过滤器
过滤器是Servlet规范的一部分,任何框架都可以使用过滤技术。 而拦截器是SpringMVC框架独有的
过滤器配置了/*,可以拦截任何资源 拦截器只对controller中的方法进行拦截

4.拦截器也是AOP思想的一种实现方式

5.想要定义拦截器,需要实现HandlerInterceptor接口

怎么使用拦截器

1.编写拦截类 实现HandlerInterceptor

2.配置拦截器

package org.maple.interceptor;

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

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

/**
 * @author mapleins
 * @Date 2018-12-18 16:47
 * @Desc 自定义拦截器
 **/
public class MyInterceptor implements HandlerInterceptor {

    /**
     * 预处理,controller方法执行前
     * @return true表示放行,执行下一个拦截器,如果没有,就执行controller方法
     *          false表示不放行,通过servletAPI跳转到其他页面中
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器执行了...前");
        return true;
    }

    /**
     * controller执行之后,jsp执行之前
     * 如果在这里面配置了页面跳转,就不会跳转到之前controller配置的视图页面里了
     *         request.getRequestDispatcher().forward();
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器执行了...后");
    }

    /**
     * 在页面执行后再执行
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截器执行了...在页面执行后执行");
    }
}
    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--要拦截的具体方法-->
            <mvc:mapping path="/interceptor/*"/>
            <!--不要拦截的方法-->
            <!--<mvc:exclude-mapping path=""/>-->
            <!--配置拦截器对象-->
            <bean class="org.maple.interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

猜你喜欢

转载自www.cnblogs.com/mapleins/p/10138756.html
今日推荐