spring mvc (3) 拦截器

本文介绍了SpringMVC拦截器的原理、如何自定义实现HandlerInterceptor接口,并详细讲解了配置多个拦截器的步骤。重点强调了preHandle方法的重要性。同时,对比了拦截器与过滤器的区别,涉及技术领域包括AOP、反射和容器依赖性。
摘要由CSDN通过智能技术生成

spring mvc 拦截器

拦截器

SpringMVC提供了拦截器机制,允许运行目标方法之前进行一些拦截工作或者目标方法运行之后进行一下其他相关的处理。自定义的拦截器必须实现HandlerInterceptor接口。

自定义拦截器

注意事项,preHandle方法,一定要返回true,否则不能往下执行。

package com.hww.interceptor;

import org.aopalliance.intercept.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 MyInterceptor implements HandlerInterceptor {

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println(this.getClass().getName()+"------------------preHandle");
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println(this.getClass().getName()+"------------------postHandle");

    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(this.getClass().getName()+"------------------afterCompletion");
    }
}

配置拦截器interceptor

    <mvc:interceptors>
        <bean id="interceptor" class="com.hww.interceptor.MyInterceptor"></bean>
    </mvc:interceptors>

 

 

配置多个拦截器

    <mvc:interceptors>
        <bean id="interceptor" class="com.hww.interceptor.MyInterceptor"></bean>
        <bean id="interceptor2" class="com.hww.interceptor.MyInterceptor2"></bean>
    </mvc:interceptors>

 

拦截器的执行

perHandler 顺序执行,然后执行业务程序,然后执行逆序执行postHandler,最后afterCompletion逆序执行

 

拦截器和过滤器的区别

 

1、过滤器是基于函数回调的,而拦截器是基于java反射的。 

2、过滤器依赖于servlet容器,而拦截器不依赖与Servlet容器。

3、过滤器几乎对所有的请求都起作用,而拦截器只能对action请求起作用

4、拦截器可以访问action的上下文,而过滤器不可以

5、在action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化的时候调用一次

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值