Spring MVC 面试题

2025年3月16日 | 阅读7分钟
Spring MVC Interview Questions

以下是一些最常问的Spring MVC 面试题及答案

1) MVC 是什么?

MVC (Model-View-Controller) 是一种软件架构设计模式。它将应用程序的功能分为三个相互关联的部分——模型 (Model)、视图 (View) 和控制器 (Controller)。这种方法促进了代码的重用和并行开发。


2) Spring MVC 是什么?

Spring MVC 是一个用于开发动态 Web 应用程序的 Java 框架。它实现了核心 Spring 框架的所有基本功能,如控制反转 (Inversion of Control) 和依赖注入 (Dependency Injection)。它遵循 Model-View-Controller 设计模式。

Spring MVC Tutorial

此处,

  • 模型 (Model) - 模型包含应用程序的数据。数据可以是一个单一对象,也可以是对象的集合。
  • 控制器 (Controller) - 控制器包含应用程序的业务逻辑。在这里,@Controller 注解用于将类标记为控制器。
  • 视图 (View) - 视图以特定格式表示提供的信息。因此,我们可以使用 JSP+JSTL、Apache Velocity、Thymeleaf 和 FreeMarker 等视图技术来创建视图页面。

3) Spring MVC 的前端控制器是什么?

前端控制器是 **DispatcherServlet** 类,位于 **org.springframework.web.servlet** 包中。它将请求分派给合适的控制器并管理应用程序的流程。需要在 web.xml 文件中指定 **DispatcherServlet** 类。


4) 解释 Spring MVC 的流程?

Spring MVC Tutorial
  • 一旦生成请求,它就会被作为前端控制器的 DispatcherServlet 拦截。
  • DispatcherServlet 从 XML 文件获取处理程序映射 (handler mapping) 的条目,并将请求转发给控制器。
  • 控制器返回一个 ModelAndView 对象。
  • DispatcherServlet 检查 XML 文件中的视图解析器 (view resolver) 条目,并调用指定的视图组件。

5) Spring MVC 框架有哪些优点?

Spring MVC 框架的优点如下:

  • 职责分离 - Spring MVC 将应用程序分为三个相互关联的层,每一层都有其职责。
  • 轻量级 - 它使用轻量级的 Servlet 容器来开发和部署您的应用程序。
  • 强大的配置 - 它为框架和应用程序类提供了强大的配置,包括上下文之间的轻松引用,例如从 Web 控制器到业务对象和验证器。
  • 快速开发 - Spring MVC 促进了快速并行开发。
  • 可重用的业务代码 - 它允许我们使用现有的业务对象,而不是创建新对象。
  • 灵活映射 - 它提供了特定的注解,可以轻松地重定向页面。

6) Spring MVC 应用程序中的额外配置文件包含什么?

Spring MVC 应用程序包含一个额外的配置文件,其中包含属性信息。该文件可以以 **XML** 文件或 **properties** 文件的形式创建。在此文件中,我们通常定义基础包 (base-package) 和视图解析器 (view resolver),**DispatcherServlet** 在其中搜索控制器类和视图组件的路径。但是,它也可以包含各种其他配置属性。


7) Spring MVC 中的 InternalResourceViewResolver 是什么?

InternalResourceViewResolver 是一个用于解析 Spring MVC 中内部视图的类。在这里,您可以定义前缀 (prefix) 和后缀 (suffix) 等属性,其中前缀包含视图页面的位置,后缀包含视图页面的扩展名。例如:


8) 如何将一个类声明为 Spring MVC 中的控制器类?

使用 @Controller 注解来声明一个类为控制器类。需要在类名上指定此注解。例如:


9) 如何将控制器类及其方法映射到 URL?

使用 **@RequestMapping** 注解来映射控制器类及其方法。您可以在类名和方法名上指定此注解,并附带一个代表请求页面路径的特定 URL。例如:


10) 用于处理不同类型的传入 HTTP 请求方法的注解有哪些?

以下注解用于处理不同类型的传入 HTTP 请求方法:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @PatchMapping
  • @DeleteMapping

11) @PathVariable 注解在 Spring MVC 中的作用是什么?

@PathVariable 注解用于提取 URI 模板的值。它在处理程序方法的参数中传递。

例如:


12) @ResponseBody 注解在 Spring MVC 中的作用是什么?

@ResponseBody 注解用于自动将返回的对象序列化为 JSON 并将其绑定到 HTTP 响应体。在这里,不需要调用模型。

例如:


13) Model 接口在 Spring MVC 中的作用是什么?

Model 接口充当一个容器,其中包含应用程序的数据。在这里,数据可以是任何形式,例如对象、字符串、数据库信息等。

点击此处了解更多详情


14) 您对 Spring MVC 中的 ModelAndView 有何理解?

ModelAndView 是一个类,它同时包含模型 (Model) 和视图 (View),其中模型代表数据,视图代表该数据的表示形式。此类在一个返回值中返回模型和视图。


15) Spring MVC 中的 ModelMap 是什么?

ModelMap 是一个提供 Map 实现的类。它继承自 LinkedHashMap 类。它方便地将一组值作为 Map 中的值进行传递。


16) 在 Spring MVC 中读取表单数据的有哪些方法?

读取表单数据的以下方法:

  • HttpServletRequest 接口 - HttpServletRequest 是 javax.servlet.http 包中存在的 Java 接口。与 Servlet 一样,您可以在 Spring 中使用 HttpServletRequest 来读取用户提供的 HTML 表单数据。
  • @RequestParam 注解 - @RequestParam 注解读取表单数据并自动将其绑定到提供的参数中。
  • @ModelAttribute 注解 - @ModelAttribute 注解将方法参数或其返回值绑定到命名模型属性。

17) 什么是 Spring MVC 表单标签库?

Spring MVC 表单标签可以看作是数据绑定感知的标签,它们可以自动将数据设置到 Java 对象/Bean 中,也可以从中检索。这些标签是 Web 页面的可配置且可重用的构建块。它提供了视图技术,方便开发、读取和维护数据。

点击此处了解更多详情


18) 您对 Spring MVC 中的验证有何理解?

验证是 Spring MVC 最重要的功能之一,用于限制用户输入。为了验证用户输入,需要使用 Spring 4 或更高版本以及 Bean Validation API。Spring 验证可以同时验证服务器端和客户端应用程序。


19) Bean Validation API 是什么?

Bean Validation API 是一个 Java 规范,用于通过注解对对象模型应用约束。在这里,我们可以验证长度、数字、正则表达式等。除此之外,我们还可以提供自定义验证。

由于 Bean Validation API 只是一个规范,它需要一个实现。因此,为此,它使用 Hibernate Validator。Hibernate Validator 是一个完全符合 JSR-303/309 标准的实现,允许表达和验证应用程序约束。


20) @Valid 注解在 Spring MVC 中的作用是什么?

@Valid 注解用于对提供的对象应用验证规则。


21) Spring MVC 验证中 BindingResult 的作用是什么?

BindingResult 是一个包含验证信息的接口。例如:


22) 如何在 Spring MVC 中验证用户输入的数字范围?

在 Spring MVC 验证中,我们可以使用以下注解来验证用户输入的数字范围:

  • @Min 注解 - 需要使用 @Min 注解传递一个整数值。用户输入必须等于或大于该值。
  • @Max 注解 - 需要使用 @Max 注解传递一个整数值。用户输入必须等于或小于该值。

点击此处了解更多详情


23) 如何在 Spring MVC 中按特定顺序验证用户输入?

Spring MVC 验证允许我们使用 @Pattern 注解按特定顺序验证用户输入。在这里,我们可以为 regexp 属性提供所需的正则表达式,并将其与注解一起传递。

点击此处了解更多详情


24) 自定义验证在 Spring MVC 中的作用是什么?

Spring MVC 框架允许我们执行自定义验证。在这种情况下,我们声明自己的注解。我们可以根据自己的业务逻辑执行验证。

点击此处了解更多详情


25) 您对 Spring MVC Tiles 有何理解?

Spring 提供与 Apache Tiles 框架的集成支持。因此,我们可以借助 Spring Tiles 支持来管理 Spring MVC 应用程序的布局。Tiles 支持在 Spring MVC 中的优点如下:

  • 可重用性:我们可以在多个页面中重用单个组件,例如页眉和页脚组件。
  • 集中控制:我们只需要一个模板页面即可控制页面的布局。
  • 易于更改布局:借助单个模板页面,我们可以随时更改页面布局。因此,您的网站可以轻松采用新技术,如 Bootstrap 和 jQuery。

点击此处了解更多详情