首页 > 其他分享 >SpringMVC执行流程(理解)-流程,小总结

SpringMVC执行流程(理解)-流程,小总结

时间:2022-11-14 00:22:26浏览次数:69  
标签:总结 请求 SpringMVC 流程 视图 springmvc 对象 处理器

SpringMVC 执行流程(理解)

使用的案例还是上一篇的博客 第1章SpringMVC*概述-注册中央调度区,定义页面,修改视图解析器 - a-tao必须奥利给 - 博客园 (cnblogs.com)

1.使用 SpringMVC 框架 web 请求处理顺序

2. SpringMVC MVC 组件

3. SpringMVC 执行流程(理解)

流程图

4. 执行流程简单分析

(1)浏览器提交请求到中央调度器
(2)中央调度器直接将请求转给处理器映射器。
(3)处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链后
返回给中央调度器。
(4)中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器。
(5)处理器适配器调用执行处理器。
(6)处理器将处理结果及要跳转的视图封装到一个对象 ModelAndView 中,并将其返回给
处理器适配器。
(7)处理器适配器直接将结果返回给中央调度器。
(8)中央调度器调用视图解析器,将 ModelAndView 中的视图名称封装为视图对象。
(9)视图解析器将封装了的视图对象返回给中央调度器
(10)中央调度器调用视图对象,让其自己进行渲染,即进行数据填充,形成响应对象。
(11)中央调度器响应浏览器。

小总结:

SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的。
           理解是servlet的一个升级

	   web开发底层是servlet , 框架是在servlet基础上面加入一些功能,让你做web开发方便。

SpringMVC就是一个Spring。 Spring是容器,ioc能够管理对象,使用<bean>, @Component, @Repository, @Service, @Controller
  SpringMVC能够创建对象, 放入到容器中(SpringMVC容器), springmvc容器中放的是控制器对象,

  我们要做的是 使用@Contorller创建控制器对象, 把对象放入到springmvc容器中, 把创建的对象作为控制器使用
  这个控制器对象能接收用户的请求, 显示处理结果,就当做是一个servlet使用。

  使用@Controller注解创建的是一个普通类的对象, 不是Servlet。 springmvc赋予了控制器对象一些额外的功能。


  web开发底层是servlet, springmvc中有一个对象是Servlet : DispatherServlet(中央调度器)
  DispatherServlet: 负责接收用户的所有请求, 用户把请求给了DispatherServlet, 之后DispatherServlet把请求转发给
                    我们的Controller对象, 最后是Controller对象处理请求。

		   

   

  index.jsp-----DispatherServlet(Servlet)----转发,分配给---Controller对象(@Controller注解创建的对象)
  main.jsp                                                   MainController
  addUser.jsp                                                UserController



---------------------------------------------------------------------------------------------------------

springmvc请求的处理流程

 1)发起some.do
 2)tomcat(web.xml--url-pattern知道 *.do的请求给DispatcherServlet)
 3)DispatcherServlet(根据springmvc.xml配置知道 some.do---doSome())
 4)DispatcherServlet把some.do转发个MyController.doSome()方法
 5)框架执行doSome()把得到ModelAndView进行处理, 转发到show.jsp


上面的过程简化的方式
  some.do---DispatcherServlet---MyController
--------------------------------------------------------------------------------------------------------
springmvc执行过程源代码分析
1. tomcat启动,创建容器的过程
   通过load-on-start标签指定的1,创建DisaptcherServlet对象, 
   DisaptcherServlet它的父类是继承HttpServlet的, 它是一个serlvet, 在被创建时,会执行init()方法。
   在init()方法中
   //创建容器,读取配置文件
    WebApplicationContext ctx = new ClassPathXmlApplicationContext("springmvc.xml");
    //把容器对象放入到ServletContext中
    getServletContext().setAttribute(key, ctx);

  上面创建容器作用: 创建@controller注解所在的类的对象, 创建MyController对象,
   这个对象放入到 springmvc的容器中, 容器是map , 类似 map.put("myController",MyController对象)


2.请求的处理过程
  1)执行servlet的service()
       protected void service(HttpServletRequest request, HttpServletResponse response)

       protected void doService(HttpServletRequest request, HttpServletResponse response)


      DispatcherServlet.doDispatch(request, response){

          调用MyController的.doSome()方法
      }

   doDispatch:springmvc中DispatcherServlet的核心方法, 所有的请求都在这个方法中完成的。

标签:总结,请求,SpringMVC,流程,视图,springmvc,对象,处理器
From: https://www.cnblogs.com/atao-BigData/p/16887801.html

相关文章