SpringMVC工作流程(详-小白版)

目录

一、SpingMVC的常用组件

 二、SpringMVC的工作流程


一、SpingMVC的常用组件

1)DispatcherServlet

是一种前端控制器,由框架提供。

作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由 DispatcherServlet 来调用其他组件,处理用户的请求

2)HandlerMapping

处理器映射器,由框架提供。

作用:根据请求的 url、method 等信息来查找具体的 Handler(一般来讲是Controller)

3)Handler(一般来讲是Controller)

处理器,注意,这个需由工程师自己开发。

作用:在 DispatcherServlet 的控制下,Handler对具体的用户请求进行处理

4)HandlerAdapter

处理器适配器 ,由框架提供。

作用:根据映射器找到的处理器 Handler 信息,按照特定的规则去执行相关的处理器 Handler

 小结:

Handler 是用来干活的工具;

HandlerMapping 用于根据需要干的活找到相应的工具;

HandlerAdapter 是使用工具干活的人。详细讲解可以看这篇博客(115条消息) SpringMVC 处理器适配器详解_aFa攻防实验室的博客-CSDN博客_处理器适配器

5)ViewResolver

视图解析器,由框架提供。

作用: ViewResolver 负责将处理结果生成 View 视图。 ViewResolver 首先根据逻辑视图名解析成物理图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

6)View

视图,工程师自己开发

作用:View接口的职责就是接收model对象、Request对象、Response对象,并渲染输出结果给Response对象。

 二、SpringMVC的工作流程

咱们先看图,从左上角的浏览器进行顺时针观看(话说有没有画图大佬可以指教一下俺 9.9 ,在线求教~)

 具体的流程:

1. 用户通过浏览器发起 HttpRequest 请求到前端控制器 (DispatcherServlet)。

2. DispatcherServlet 将用户请求发送给处理器映射器 (HandlerMapping)。

3. 处理器映射器 (HandlerMapping)会根据请求,找到负责处理该请求的处理器,并将其封装为处理器执行链 返回 (HandlerExecutionChain) 给 DispatcherServlet

4. DispatcherServlet 会根据 处理器执行链 中的处理器,找到能够执行该处理器的处理器适配器(HandlerAdaptor)    --注,处理器适配器有多个

5. 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller

6. Controller 将处理结果及要跳转的视图封装到一个对象 ModelAndView 中并将其返回给处理器适配器 (HandlerAdaptor)

7. HandlerAdaptor 直接将 ModelAndView 交给 DispatcherServlet ,至此,业务处理完毕

8. 业务处理完毕后,我们需要将处理结果展示给用户。于是DisptcherServlet 调用 ViewResolver,将 ModelAndView 中的视图名称封装为视图对象

9. ViewResolver 将封装好的视图 (View) 对象返回给 DIspatcherServlet

10. DispatcherServlet 调用视图对象,让其自己 (View) 进行渲染(将模型数据填充至视图中),形成响应对象 (HttpResponse)

11. 前端控制器 (DispatcherServlet) 响应 (HttpResponse) 给浏览器,展示在页面上。

  • 281
    点赞
  • 1725
    收藏
    觉得还不错? 一键收藏
  • 35
    评论
springMVC是一种基于MVC架构模式的Web框架,其流程如下: 1. 客户端发送请求到DispatcherServlet(前端控制器)。 2. DispatcherServlet根据请求信息调用HandlerMapping(处理器映射器)。 3. HandlerMapping根据请求URL找到对应的Handler(处理器)。 4. Handler执行业务逻辑并返回一个ModelAndView对象给DispatcherServlet。 5. DispatcherServlet根据返回的ModelAndView对象调用ViewResolver(视图解析器)。 6. ViewResolver解析ModelAndView中的View(视图)。 7. 最终将渲染后的视图返回给客户端。 以下是一个简单的示例代码: ```java // 定义Controller @Controller @RequestMapping("/hello") public class HelloController { @RequestMapping("/world") public ModelAndView helloWorld() { String message = "Hello World, Spring MVC!"; return new ModelAndView("hello", "message", message); } } // 定义视图解析器 @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } // 定义web.xml中的DispatcherServlet <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> // 定义dispatcher-servlet.xml中的HandlerMapping和ViewResolver <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值