Spring 面试题, 介绍下 Spring MVC 的核心组件?
Spring 面试题, 介绍下 Spring MVC 的核心组件?
QA
Step 1
Q:: 什么是Spring MVC?
A:: Spring MVC是Spring框架中的一个模块,提供了一种基于Java的实现模型-视图-控制器(Model-View-Controller,
MVC)设计模式的Web应用程序开发框架。它帮助开发者构建可扩展的、灵活的Web应用程序,通过分离业务逻辑、表示层和导航逻辑来增强代码的模块化和可维护性。
Step 2
Q:: Spring MVC的核心组件有哪些?
A:: Spring MVC的核心组件包括以下几个部分:
1.
DispatcherServlet:中央控制器,负责接收HTTP请求并将其分发到相应的处理器。
2.
HandlerMapping:负责将请求映射到处理器。
3.
Controller:处理请求的组件,包含业务逻辑。
4.
ViewResolver:负责解析视图名称并将其映射到具体的视图实现。
5.
ModelAndView:在Controller中使用,用于返回模型数据和视图名称。
6.
HandlerInterceptor:拦截器,用于处理器方法执行前后的逻辑,如认证、日志记录等。
Step 3
Q:: 什么是DispatcherServlet?它在Spring MVC中的作用是什么?
A:: DispatcherServlet是Spring MVC的核心组件之一,被称为前端控制器(Front Controller)。它的主要作用是接收HTTP请求,然后根据配置的HandlerMapping将请求转发给相应的Controller处理器。处理完请求后,DispatcherServlet再根据ViewResolver的配置解析视图并返回给客户端。
Step 4
Q:: 如何配置和使用Spring MVC中的Controller?
A:: 在Spring MVC中,Controller是一个普通的Java类,通过使用@Controller注解标记。Controller类中的每个方法都可以使用@
RequestMapping注解来映射到一个特定的URL请求路径。Controller方法可以返回一个字符串作为视图名称,也可以返回一个ModelAndView对象来携带数据和视图信息。
例如:
@Controller
public class MyController {
@RequestMapping("/greeting")
public String greeting(Model model) {
model.addAttribute("message", "Hello, World!");
return "greeting";
}
}
Step 5
Q:: Spring MVC中的ViewResolver如何工作?
A:: ViewResolver接口定义了一个resolveViewName方法,用于将逻辑视图名称解析为具体的视图实现。常用的实现类包括InternalResourceViewResolver(用于解析JSP视图)和ThymeleafViewResolver(用于解析Thymeleaf模板)。ViewResolver的配置通常在Spring的配置文件中完成,例如:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
Step 6
Q:: Spring MVC中的数据绑定是如何实现的?
A:: Spring MVC提供了强大的数据绑定机制,将HTTP请求参数自动绑定到Controller方法的参数上。数据绑定是通过WebDataBinder完成的,它可以将请求参数转换为Java对象,同时支持自定义格式化和验证。Spring还提供了@
InitBinder注解,用于在Controller中配置数据绑定的初始化逻辑。
Step 7
Q:: Spring MVC中的HandlerInterceptor如何使用?
A:: HandlerInterceptor是Spring MVC中的拦截器,用于在请求到达Controller之前和处理完后执行一些逻辑。可以通过实现HandlerInterceptor接口来定义自定义拦截器,并在配置文件或注解中进行配置。例如,可以在拦截器中实现认证、日志记录或性能监控等功能。