springmvc之自定义拦截器

1、在springmvc.xml配置文件中配置:

    <mvc:interceptors>
        <!-- 配置自定义的拦截器 -->
        <bean class="com.gong.springmvc.interceptors.FirstInterceptor"></bean>
    </mvc:interceptors>

2、定义拦截器类,需要继承HandlerInterceptor

package com.gong.springmvc.interceptors;

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

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

public class FirstInterceptor implements HandlerInterceptor{
    
    //该方法在目标方法之前被调用
    //如果返回true,则继续调用后续的拦截器和目标方法,若为false,则不会在调用后续的拦截器和目标方法
    //该方法可以考虑做权限、日志、事务等
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        System.out.println("[FirstInterceptor] preHandle");
        return true;
    }
    
    //调用目标方法之后,但在渲染视图之前被调用
    //可以修改请求域中的属性或视图做出修改
    @Override
    public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("[FirstInterceptor] postHandle");
    }

    //在渲染视图之后被调用
    //释放资源
    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("[FirstInterceptor] afterCompletion");
    }

}

需要注意每个方法调用的时机和顺序。

3、在发送请求后,在终端可以看到:

 

猜你喜欢

转载自www.cnblogs.com/xiximayou/p/12189328.html