spring mvc 的原理

1. 请求分发(DispatcherServlet)

在Spring MVC中,DispatcherServlet是前端控制器(Front Controller),负责捕获请求并将其分发给相应的处理器(Controller)。DispatcherServlet是整个流程的核心,它主要负责以下任务:

  • 捕获请求:拦截进入应用程序的所有Web请求。

  • 路由请求:根据请求的URL和配置的映射规则,将请求分发给合适的处理器(Controller)。

  • 处理请求:调用相应的处理器方法处理请求,并将结果返回给DispatcherServlet

  • 选择视图:根据处理器的返回信息选择适当的视图进行渲染。

  • 渲染视图:将模型数据传递给视图,并渲染最终的响应返回给客户端。

2. 处理器映射(Handler Mapping)

处理器映射(Handler Mapping)组件负责将请求URL映射到相应的处理器(Controller)和方法上。Spring MVC提供了多种处理器映射实现,如RequestMappingHandlerMapping,它支持使用@RequestMapping注解来定义URL到控制器的映射。

3. 处理器适配器(Handler Adapter)

处理器适配器(Handler Adapter)负责调用实际处理请求的处理器方法。不同的处理器可能需要不同的适配器来执行,例如,对于使用了@RequestMapping注解的方法,需要RequestMappingHandlerAdapter来处理。

4. 视图解析(View Resolver)

视图解析器(View Resolver)负责将逻辑视图名解析为具体的视图实现,如JSP、Thymeleaf等。Spring MVC提供了多种视图解析器,如InternalResourceViewResolver用于解析JSP视图。

5. 控制器(Controller)

控制器(Controller)是请求处理的核心部分,负责执行具体的业务逻辑。在Spring MVC中,控制器通常通过使用@Controller注解标识,并通过@RequestMapping等注解定义请求的映射。控制器可以返回一个视图名、一个ModelAndView对象或者直接返回一个HTTP响应体。

6. 模型(Model)和视图(View)

模型(Model)包含了应用程序的数据。视图(View)负责渲染模型数据并生成响应。在Spring MVC中,模型通常是一个Map对象,包含了要传递给视图的属性。视图可以是JSP、Thymeleaf模板、FreeMarker模板等。

7. 数据绑定和验证

Spring MVC还支持自动的数据绑定和验证功能,可以将请求参数绑定到命令或表单对象上,并使用验证框架(如Hibernate Validator)来验证这些对象。

 

 

SpringMVC九大组件
1. DispatcherServlet
作用:
前端控制器,是整个 Spring MVC 的控制中心。用户请求到达前端控制器后,由前端控制器分发请求至后端控制器。
DispatchServlet中核心调度方法:doDispatch()
配置:通常在 web.xml 中配置 DispatcherServlet。
 

2. HandlerMapping
作用:
处理器映射器,负责根据用户请求找到 Handler(处理器),即 Controller。
通过HandlerMapping获取HandlerAdapter对象
类型:包括 BeanNameUrlHandlerMapping、DefaultAnnotationHandlerMapping、RequestMappingHandlerMapping 等。
 

3. HandlerAdapter
作用:
处理器适配器,按照特定规则(HandlerAdapter 要求的规则)去执行 Handler。
通过HandlerAdapter调用Controller中相应方法
类型:包括 SimpleControllerHandlerAdapter、HttpRequestHandlerAdapter、AnnotationMethodHandlerAdapter 等。
 

4. Handler(Controller)

  • 作用:处理器,是后端控制器,在 MVC 模型中负责处理具体的业务逻辑。
  • 注解:通常使用 @Controller 注解标记一个类为 Controller。

5. ModelAndView
作用:封装了 Model 和 View 的信息。Controller 处理完用户请求后返回一个 ModelAndView 对象,其中包含了模型数据和视图信息。
结构:包含一个 Map 对象(用于存放模型数据)和一个 View 或视图名称(用于指定视图)。
 

6. ViewResolver
作用:视图解析器,根据逻辑视图名解析成真正的视图 View(如 JSP、Thymeleaf 等)。
类型:包括 InternalResourceViewResolver、FreeMarkerViewResolver、ThymeleafViewResolver 等。
 

. View
作用:视图,负责将结果显示给用户。视图可以是 JSP、HTML、PDF 等任何形式的页面。
实现:通常由 ViewResolver 解析得到。
8. ExceptionHandler
作用:异常处理器,用于处理 Controller 中抛出的异常。
注解:使用 @ExceptionHandler 注解标记一个方法为异常处理器。
9. Interceptor
作用:拦截器,类似于 Servlet 中的 Filter,用于在请求到达 Controller 之前或之后执行一些预处理或后处理操作。
配置:在 Spring MVC 配置文件中配置拦截器链。
 

 

posted @ 2025-06-16 14:10  KLAPT  阅读(12)  评论(0)    收藏  举报