全部学科
Python全栈
python
NodeJS全栈
nodejs

拦截器原理与实战专项测试

20 题 45 分钟 难度:★★

考察知识点

  • HandlerInterceptor接口方法
  • preHandle前置拦截处理
  • postHandle后置拦截处理
  • afterCompletion完成回调
  • 拦截器配置与路径匹配
  • 拦截器链执行顺序
💡 参考答案在文末
判断题
1

实现HandlerInterceptor接口时,必须实现所有三个方法(preHandle、postHandle、afterCompletion)。

A

B

2

SpringMVC拦截器是AOP(面向切面编程)思想在Web层的具体应用。

A

B

3

afterCompletion方法是拦截器执行流程中最后执行的方法,适合进行资源清理和异常日志记录。

A

B

4

当Controller方法使用@ResponseBody或@RestController返回JSON数据时,postHandle方法中的ModelAndView参数为null。

A

B

5

在preHandle方法中,可以通过handler参数获取Controller类名和方法名等详细信息。

A

B

单选题
6

实现SpringMVC拦截器需要实现哪个接口?

A

Filter接口

B

HandlerInterceptor接口

C

WebMvcConfigurer接口

D

Interceptor接口

7

拦截器的postHandle方法在哪个时机执行?

A

Controller执行之前

B

Controller执行之后,视图渲染之前

C

视图渲染之后

D

响应返回之后

8

SpringMVC拦截器的主要作用是什么?

A

处理HTTP请求和响应

B

在Controller方法执行前后进行拦截处理

C

直接操作数据库

D

配置静态资源映射

9

在InterceptorRegistry中配置拦截器时,addPathPatterns方法的作用是?

A

设置不需要拦截的路径

B

设置需要拦截的路径

C

设置拦截器的执行顺序

D

设置拦截器的名称

10

当拦截器的preHandle方法返回false时,会发生什么?

A

请求继续执行到Controller

B

请求直接返回响应,不再执行后续流程

C

抛出异常

D

跳转到下一个拦截器

11

在SpringMVC中使用Java配置方式注册拦截器,需要实现哪个接口的方法?

A

HandlerInterceptor接口的addInterceptor方法

B

WebMvcConfigurer接口的addInterceptors方法

C

Filter接口的init方法

D

Servlet接口的init方法

12

在preHandle方法中实现登录验证,当用户未登录时,最合适的处理方式是?

A

返回false并设置response状态码为401

B

返回true让Controller处理未登录请求

C

返回false并使用response.sendRedirect()重定向到登录页

D

抛出RuntimeException异常

13

HandlerInterceptor接口的三个方法中,哪个方法需要返回boolean值来决定是否继续执行后续流程?

A

preHandle方法

B

postHandle方法

C

afterCompletion方法

D

所有三个方法

14

拦截器(Interceptor)和过滤器(Filter)的主要区别是什么?

A

拦截器是Servlet组件,过滤器是Spring组件

B

拦截器只能拦截Controller请求,过滤器可以拦截所有请求

C

过滤器可以访问Spring容器中的Bean,拦截器不能

D

拦截器执行在过滤器之前

15

拦截器的afterCompletion方法有什么特点?

A

只有请求成功时才执行

B

只有请求失败时才执行

C

无论请求是否抛出异常都会执行

D

可以修改响应内容

多选题
16

以下关于拦截器和过滤器的对比,哪些描述是正确的?

A

过滤器是Servlet规范定义的组件

B

拦截器是SpringMVC框架定义的组件

C

过滤器执行时机早于拦截器

D

拦截器可以访问Spring容器中的Bean和Service

E

过滤器和拦截器都可以拦截静态资源请求

填空题
17

postHandle方法签名:

Java
void postHandle(
    !!1_HttpServletRequest!! request,
    !!2_HttpServletResponse!! response,
    !!3_Object!! handler,
    ModelAndView modelAndView
) throws Exception;

可以通过修改modelAndView对象来添加通用视图数据或修改视图名称。

18

afterCompletion方法签名:

Java
void afterCompletion(
    !!1_HttpServletRequest!! request,
    !!2_HttpServletResponse!! response,
    !!3_Object!! handler,
    Exception ex
) throws Exception;

参数ex表示请求处理过程中抛出的异常,如果没有异常则为null。

19

HTTP请求的处理流程中,各组件的执行顺序为:

  1. ____________(Filter):Servlet容器级别的拦截
  2. ____________:SpringMVC核心控制器
  3. ____________(Interceptor):SpringMVC级别拦截
  4. Controller:业务处理控制器
20

HandlerInterceptor接口的preHandle方法签名:

Java
boolean preHandle(
    !!1_HttpServletRequest!! request,
    !!2_HttpServletResponse!! response,
    !!3_Object!! handler
) throws Exception;

其中handler参数表示即将执行的Controller方法(Handler对象)。

参考答案
1.错误 2.正确 3.正确 4.正确 5.正确 6.B 7.B 8.B 9.B 10.B 11.B 12.C 13.A 14.B 15.C 16.A;B;C;D 17.HttpServletRequest;HttpServletResponse;Object 18.HttpServletRequest;HttpServletResponse;Object 19.过滤器;DispatcherServlet;拦截器 20.HttpServletRequest;HttpServletResponse;Object
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 常用注解基础使用专项测试
下一套试卷 → 数据校验与格式化专项测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码