spring-mvc-8拦截器

一. 第一个拦截器例子

  1. FirstInterceptor 需要实现 org.springframework.web.servlet.HandlerInterceptor 接口
package com.atguigu.springmvc.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**    
 * springMVC下第一个拦截器学习   
 * @author lxf
 *
 */
public class FirstInterceptor implements HandlerInterceptor{

    /**
     * 在渲染视图之后被调用, 释放资源
     */
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("FirstInterceptor afterCompletion");  
    }
    /**
     * 调用目标方法之后但渲染视图之前被调用
     * 可以对请求域中的属性修改
     */
    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("FirstInterceptor postHandle");
    }
    /**
     * 在目标方法调用之前被调用
     * 若返回值为true, 则继续调用后续的拦截器和目标方法
     * 若返回值为false, 则不会调用后续的拦截器和目标方法
     */
    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        System.out.println("FirstInterceptor preHandle");
        return true;
    }
}
  1. 配置 springmvc.xml 配置文件
     
        
        
     
  1. 在访问任何一个控制器的目标方法的时候, 该自定义的拦截器都会先后执行, 执行顺序图解:


    spring-mvc-8拦截器_第1张图片
    Paste_Image.png
  2. 还可以实现指定目标方法的拦截, springmvc.xml配置如下:

         
        
        
            
            
                
     

以上配置说明 SecondInterceptor 拦截器只拦截 /emp 目标方法

5.多个拦截器的执行顺序


spring-mvc-8拦截器_第2张图片
Paste_Image.png
spring-mvc-8拦截器_第3张图片
Paste_Image.png

点击查看代码练习

你可能感兴趣的:(spring-mvc-8拦截器)