springmvc总流程

SpringMVC的原理和工作流程

1,用户发送恳求,url为http://localhost:8080/hello

这是用户的开始动作,他发送了一个HTTP恳求,并将其URL指向你的应用程序。URL是一种标识资源的方式 ,它能够告知应用程序用户想拜访哪个页面或履行哪个功用。

SpringMVC的原理和工作流程

2,DispatcherServlet前端控制器接纳而且阻拦恳求,传url给HandlerMapping

DispatcherServlet 是 SpringMVC 中的前端控制器,所有的恳求都会先经过它进行处理。“阻拦”指的是 DispatcherServlet 是首先捕获并处理恳求的才能,在此进程中还会处理前端逻辑。一旦 DispatcherServlet 捕获了恳求,它就会把恳求中包含的 URL 传递给后续的 HandlerMapping 进行处理映射。

SpringMVC的原理和工作流程

3,HandlerMapping为处理映射器,接纳url而且依据url查找Handler

HandlerMapping 调用 URL 映射策略来查找和匹配用户恳求对应的处理器(Handler)目标。也能够了解为,在 MVC 架构中,HandlerMapping 的效果是协助用户恳求找到相应的处理器。

SpringMVC的原理和工作流程

4,HanderExecution为详细的Handler,他的效果便是依据url查找控制器,以上他查找到的控制器为url中的“hello”,解析完结之后就将成果回来给DispathcherServlet

再找到恰当的 Handler 后,HandlerExecution 负责实际地履行业务处理逻辑,即该 Handler 中的办法。假如业务逻辑存在回来成果(比方需求跳转页面或许回来数据等),那么这些成果将被传回给 HandlerAdapter。

SpringMVC的原理和工作流程

5,HandlerAdapter是处理器适配器,其效果便是履行Handler

HandlerAdapter 将 Handler 的回来成果解析成 ModelAndView(模型和视图)。此外,HandlerAdapter 还处理当前控制器上关于Locale和主题的部分,并将其应用到 “模型” 目标中。

SpringMVC的原理和工作流程

6,详细的Handler交给Controller去履行

Controller 便是一个简单的 Java 类,它作为 MVC 架构中的 C(控制器)来处理用户恳求。它接纳数据(HTTP 恳求)并回来呼应成果(HTTP 呼应)。Controller 处理恳求的详细进程大致包括:获取恳求参数、验证恳求参数、调用服务办法以及封装呼应成果等。

SpringMVC的原理和工作流程

7,Controller将履行的成果回来给HandlerAdapter,如ModelAndView

一旦 Controller 处理完恳求并安排好视图出现以及其他回来数据的功用,他们会经过一个 ModelAndView 模型,向 HandlerAdapter 传递恳求处理成果。

SpringMVC的原理和工作流程

8,ViewResolver是视图解析器,DispatcherServlet调用视图解析器去解析HandlerAdapter回来的逻辑视图

视图解析器完结了逻辑视图称号(在Controller中增加的)到实际视图(视图文件)的解析。在履行程序检索成功后,它将对恳求完结呼应,也便是说,会出现所需的成果。

SpringMVC的原理和工作流程

9,视图解析器解析完结之后回来成果(逻辑视图名)给DispatcherServlet

SpringMVC的原理和工作流程
SpringMVC的原理和工作流程
解析成果为:

/WEB-INF/jsp/test.jsp

10,DispatcherServlet依据逻辑视图名调用详细的View

DispatcherServlet用ModelAndView模型接纳JSP页面的输出内容,并运用视图解析器(ViewResolver),定位特定于应用程序的URI并控制回来呼应。接下来,这个终究成果将被展现给客户端浏览器。

SpringMVC的原理和工作流程

11,将终究视图出现给用户

SpringMVC的原理和工作流程
SpringMVC的原理和工作流程

期望以上介绍能让大家对 Spring MVC 的工作流程有更深入的了解和认识。Spring MVC 是一个功用强壮且易于运用的 Web 框架,能够完结灵敏、可扩展、高效的 Web 应用程序开发,然后协助开发人员在开发进程中进步生产力和代码质量。同时,咱们也应该留意遵循 Spring MVC 规划原则,充分利用其供给的强壮功用和优化功能的才能,以创建更好的应用程序。