我是靠谱客的博主 勤恳嚓茶,最近开发中收集的这篇文章主要介绍SpringMVC 拦截器1 拦截器简介2 定义拦截器 3.创建拦截器4  定义全局拦截器5 多拦截器执行顺序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

1 拦截器简介

1.1什么是拦截器

1.2拦截器执行流程

1.3拦截器和过滤器的区别

2 定义拦截器

2.1.1 preHandle 方法

 2.1.2 postHandle 方法

2.1.3 afterCompletion 方法

3.创建拦截器

3.1 编写拦截器代码

3.2 编写拦截器配置文件

4  定义全局拦截器

4.1 拦截器代码(略)

4.2 编写全局拦截器配置

5 多拦截器执行顺序


1 拦截器简介

1.1什么是拦截器

Spring MVC 的拦截器( Interceptor )与 Servlet 的过滤器( Filter )类似,它主要用于拦
截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否
登录等功能上。

1.2拦截器执行流程

1.3拦截器和过滤器的区别

 拦截器 SpringMVC 组件,而过滤器是 Servlet 组件。
 拦截器不依赖容器,过滤器依赖容器。
 拦截器只能对控制器请求起作用,而过滤器则可以对所有的请求起作用。
 拦截器可以获取 IOC 容器中的各个 bean ,而过滤器就不太方便。

2 定义拦截器

HandlerInterceptor 接口中包含了三个抽象方法,分别表示拦截的时间点。

2.1.1 preHandle 方法

该方法在控制器的处理请求方法前执行,其返回值表示是否中断后续操作,返回 true
表示继续向下执行,返回 false 表示中断后续操作

 2.1.2 postHandle 方法

该方法在控制器的处理请求方法执行之后、视图解析之前执行,可以通过此方法对请求
域中的模型和视图做进一步的修改。

2.1.3 afterCompletion 方法

该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此
方法实现一些资源清理、记录日志信息等工作。

3.创建拦截器

3.1 编写拦截器代码

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 {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("PreHandle: 在处理请求的目标方法执行之前");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle: 目标方法执行后,视图解析器处理视图之前");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion: 为客户端产生响应之前。");
    }
}

3.2 编写拦截器配置文件

需要在 SpringMVC 的配置文件中,通过 <mvc:interceptors> 标签配置拦截器
<!-- 配置拦截器 -->
< mvc :interceptors >
< mvc :interceptor >
<!-- mapping: 配置拦截器的作用路径 -->
< mvc :mapping path ="/**" />
<!-- 配置不需要拦截的作用路径 -->
< mvc :exclude-mapping path ="/user/getUsers" />
< bean class ="com.star.interceptor.MyInterceptor" />
</ mvc :interceptor >
</ mvc :interceptors >

 定义全局拦截器

全局拦截器是指可以拦截所有被控制器所处理 URL 。作用等同于 /**

4.1 拦截器代码(略)

和普通拦截器一样,只是配置不同

4.2 编写全局拦截器配置

<!-- 配置拦截器 -->
< mvc :interceptors >
<!-- 配置全局拦截器 -->
< bean class ="com.star.interceptor.GlobalInterceptor" /> < mvc :interceptor >
<!-- mapping: 配置拦截器的作用路径 -->
< mvc :mapping path ="/**" />
<!-- 配置不需要拦截的作用路径 -->
<!--<mvc:exclude-mapping path="/user/getUsers"/>-->
< bean class ="com.star.interceptor.MyInterceptor" />
</ mvc :interceptor >
</ mvc :interceptors >

多拦截器执行顺序

如果一个 URL 能够被多个拦截器所拦截,全局拦截器最先执行,其他拦截器根据配置
文件中配置的上下顺序来决定执行顺序的。先配置谁, 谁就先执行。

最后

以上就是勤恳嚓茶为你收集整理的SpringMVC 拦截器1 拦截器简介2 定义拦截器 3.创建拦截器4  定义全局拦截器5 多拦截器执行顺序的全部内容,希望文章能够帮你解决SpringMVC 拦截器1 拦截器简介2 定义拦截器 3.创建拦截器4  定义全局拦截器5 多拦截器执行顺序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部