首页>>后端>>Spring->简述springmvc的执行流程(springmvc执行顺序)

简述springmvc的执行流程(springmvc执行顺序)

时间:2023-12-07 本站 点击:0

springmvc工作流程是?

springmvc工作流程如下。

客户端发送请求;核心控制器Dispatcher Servlet接收到请求,通过系统或映射器配置找到对应的handler,并将控制器controller返回给核心控制器。

通过核心控制器找到系统或默认的适配器;由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,再由适配器返回给核心控制器。

核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取并且解析得到的结果,并由视图解析器响应给核心控制器;核心控制器最后将局手结果返回给客户端。

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。

使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开厅猛发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框扮腊桥架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

源码分析spring-mvc启动流程

spring-mvc 的启动流程

1、request 请求到达  dispatchServlet- doService()-doDispatch()  开始处理请求

2、根据doDispatch() 再去调用getHandler() 目的是获取包含 处理器Handler和处理器拦截器 AdapterIntercepers 的处理器拦截链 HandlerExecutionChain

        2.1 getHandler(HttpServletRequest request) 通过HandlerMappping对象获取HandlerExecutionChain

3、再通过getHandlerAdapter() 在拦截链中获取handler对应的处理器适配器  handleAdapter

4、ha.handler(processedRequest, response, mappedHandler.getHandler()) 通过handlerAdapter来睁尘调用具体的处理器 完成对请求的处理

        4.1 hanler 调用 SimpleServletHandlerAdapter.service()-HttpServlet.service()-HttpServlet.service()-doGet(req, resp);

        在这里我们发现不只是调用doGet()请求,而是根据请求方法来决定调用doGet()还是doPost(),或者其他

         这里发现请求有如下:doGet(req, resp);doHead(req, resp);doPost(req, resp);

          doPut(req, resp);doDelete(req, resp);doOptions(req,resp);doTrace(req,resp);

5、根据handler返回的ModleAndView来决定是否渲染试图  ModleAndView 将modle 和 view 封装在一起

6、ViewResolver:视图解析器    负责将处理结果生成view 试图

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

7、view 是spring-mvc 的封装对象,是一个接口

springmvc框架提供了很多的View视图类型,包括:jspview,pdfview,jstlView、freemarkerView、pdfView等。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

在阅读源码的过程中,发现在启动流程中,用到了适配器模式。。。。

适配器模式:大致对它的理解是这样的,假如现在有一个三方系统M,我们现在有个系统A需要和他交互,那么需要双方定义通信协议。那么问题来了猛早清,如果后期我们有很多系统都想于这个M来交互,那么都需要和M去定义通信协议,对于M来说,M会答应么?

解决方案:这个时候,我们来找一个C,来兼容所有的系统,而最后和M交互的只有C,其他系统想要和枝前M交互,那么只需要和C交互在这里C就相当于我们的适配器,也及就是说适配各种系统的调用

springmvc工作流程

springmvc工作流程:

1、 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。

2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪腊轮个Controller来处大雹理(并未调用Controller,只是得知)。

3、DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controller。

4、HandlerAdapter处理器适配器去执行Controller并得到ModelAndView(数据和视图),并层层返回给DispatcherServlet。

5、DispatcherServlet将ModelAndView交给ViewReslover视图解析器解析,然后返回真正的视图。

6、DispatcherServlet将模型数据填充到视图中。滚局帆

7、DispatcherServlet将结果响应给用户。

组件说明:

DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度。

HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应的后端处理器 Handler。也就是说它知道处理用户请求的后端处理器,但是它并不执行后端处理器,而是将处理器告诉给中央处理器。

HandlerAdapter:处理器适配器,它调用后端处理器中的方法,返回逻辑视图 ModelAndView 对象。

ViewResolver:视图解析器,将 ModelAndView 逻辑视图解析为具体的视图(如 JSP)。

Handler:后端处理器,对用户具体请求进行处理,也就是我们编写的 Controller 类。

java下SpringMVC中Spring的主要工作原理是什么?是怎么工作的?工作流程是什么?

一、 IoC(Inversion of control): 控制反转 \x0d\x0a1、IoC: \x0d\x0a概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 \x0d\x0a核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean \x0d\x0a二、AOP(Aspect-Oriented Programming): 面向方面编程 \x0d\x0a1、 代理的两种方式: \x0d\x0a静态代理: \x0d\x0a 针对每个具体类分别编写代理类; \x0d\x0a 针对一个接口编写一个代理类; \x0d\x0a动态代理: \x0d\x0a针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类 \x0d\x0a2、 AOP的主要原理:动态代理 \x0d\x0a\x0d\x0aSpring工作原理 \x0d\x0a Spring 已经用过一段时间了,感觉Spring是个很不错的框架。内部最核心的就是IOC了, \x0d\x0a动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射 \x0d\x0a反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置 \x0d\x0a文件来动态的创建对象,和调用对象里的方法的 。 \x0d\x0a Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 \x0d\x0a在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些局团州都是通过 \x0d\x0a配置类达到的。 \x0d\x0a Spring目的:就是让对象桐蔽与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置或宏类说明 \x0d\x0a管理的(Spring根据这些配置 内部通过反射去动态的组装对象) \x0d\x0a 要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。 \x0d\x0aSpring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式) \x0d\x0a Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 \x0d\x0a也就基本上掌握了Spring.

SpringMVC

一、SpringMVC应用

1.springmvc是一个表现层的框架

经典三层架构:表现层, service层, dao层。

Spring MVC和Struts2一样,都是 为了解决表现层问题 的web框架,它们都是基于 MVC 设计模

式的。而这些表现层框架的主要职责就是处理前端HTTP请求。

Spring MVC 本质可以认为是对servlet的封装,简化了我们serlvet的开发

2.工作流程:

开发过程:

请求处理流程:

九大组件:

3.请求参数绑定,说白了SpringMVC是如何接受参数的:

原生servlet接大渣哪梁含收一个整型参数:

SpringMVC框架对Servlet的封装,简化了servlet的很多操作,SpringMVC框架对Servlet的封装,简化了servlet的很多操作

参数绑定:取出参数值绑定到handler⽅法的形参上

默认支持 Servlet API 作为方法参数:

绑定简单类型参数:

绑定Pojo类型参数:

绑定Pojo包装对象参数:

绑定日期类型参数(需要配置自定义类型转换器):

4.Restful风格

什么是Restful:

什么是rest:

Restful的优点:

Restful的特性:

Restful的示例:

SpringMVC如何支持Restful风格的请求:

5.Ajax Json交互

交互:两个方向

什么是Json:

@ResponseBody注解:

分析SpringMVC使用Json交互:

二、SpringMVC高级技术

1.拦截器(Inteceptor)使用

监听器、过滤器、拦截器的对比:

拦截器的执行流程:

多个拦截器的执行流程:

自定义SpringMVC拦截器:

2.处理multipart形式的数据

文件上传:

3.在控制器中处理异常:

4.基于Flash属性的跨重定向请求数据传递:

三、手写SpringMVC框架:

四、SpringMVC源码剖析

1.前端控制器 DispatcherServlet 继承结构:

2.重要时机点分析

SpringMVC处理请求的流程即为:

3.核心步骤滚码getHandler方法剖析:

4.核心步骤getHandlerAdapter方法剖析:

5.核心步骤ha.handle方法剖析:

6.核心步骤processDispatchResult方法剖析:

7.SpringMVC九大组件初始化:

五、SSM整合

1.整合策略:先整合Spring + Mybatis,然后再整合SpringMVC

2.Mybatis整合Spring

3.整合SpringMVC

未完待补充完整。。。

spring mvc的工作流程是什么?

SpringWebMVC处理Http请求的大致过程:\x0d\x0a一旦Http请求到来,DispatcherSevlet将负责将请求分发。DispatcherServlet可以认为是Spring提供的前端控制器,所有的请求都有经过它来统一分发。\x0d\x0a在DispatcherServlet将请求分发给SpringController之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts中,这种映射是通过struts-config.xml文件完成的。其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。\x0d\x0aSpringController将处理来自DispatcherServlet的请求。Spring的让团Controller类似于struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于org.springframework.web.servlet.mvc包中。由于Controller需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程枝棚安全并且可重用。Controller将处理客户请求,这和StrutsAction扮演的角色是一致的。\x0d\x0a一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对猛滑则象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map对象能够存储模型。\x0d\x0a如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。\x0d\x0aDispatcherServlet将View对象渲染出的结果返回个客户。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/18199.html