SpringMVC的实现过程

 Spring Web MVC 处理Http请求的大致过程:


  一旦Http请求到来,DispatcherSevlet将负责将请求分发。DispatcherServlet可以认为是Spring提供的前端控制器,所有的请求都有经过它来统一分发。

  在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts中,这种映射是通过struts-config.xml文件完成的。其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。

  Spring Controller将处理来自DispatcherServlet的请求。Spring的Controller类似于struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于org.springframework.web.servlet.mvc包中。由于Controller需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。Controller将处理客户请求,这和Struts Action 扮演的角色是一致的。
一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。

  从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。

  前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map对象能够存储模型。

  如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。
  DispatcherServlet将View对象渲染出的结果返回个客户。

时间: 2024-10-03 13:41:07

SpringMVC的实现过程的相关文章

springmvc原理|执行过程|解决了什么问题?

springmvc原理|执行过程|解决了什么问题? 答:我对springmvc的理解是这样的: (1)首先Springmvc是一个基于MVC的框架,解决了: 前端页面和后台代码的分离问题: 实现了一个请求对应一个方法. (2)Springmvc的配置流程是这样的: 一个url请求发送过来,首先进到web.xml,所以我们需要在web.xml配置一个dispatchServlet核心控制器. 核心控制器将这个请求交给对应的方法来处理,因此需要解决一个url和一个一个方法的映射问题. 而spring

springmvc组件组成以及springmvc的执行过程

springmvc三大组件 处理器映射器:用户请求路径到Controller方法的映射 处理器适配器:根据handler(controlelr类)的开发方式(注解开发/其他开发) 方式的不同区寻找不同的处理器适配器 视图解析器:根据handler返回的view地址文件类型(jsp/pdf….)去寻找相应的视图解析器来进行解析 springmvc的执行过程 执行流程: 1. 用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet 捕获(捕获) 2.

初学springMVC搭建框架过程及碰到的问题

刚刚开始学spring框架,因为接了一个网站的项目,想用spring+springMVC+hibernate整合来实现它,现在写下搭建框架的过程及碰到的问题.希望给自己看到也能让大家看到不要踏坑. 一.创建Maven项目 我选用的IDE是Intellij idea2016.2 Ultimate,使用的Maven来创建web项目,这样可以省去很多我自己找依赖包下载的时间,因为Maven有中央仓库统一管理可以通过配置pom.xml文件到Maven仓库上去获取需要的包,点击File->New proj

springMVC的请求过程

springMVC请求过程: 请求信息(包括用户相关信息)发送到DispatcherServlet,DispatcherServlet在这里做为前端控制器. DispatcherServlet查询处理器映射,处理器映射会根据请求携带的URL信息进行决策. 当选择了合适的控制器,DispatcherServlet会将请求发送给选中的控制器.在这里控制器会处理这些信息. 控制器在完成逻辑处理后,会产生一些信息,这些信息将被打包成模型(model),并指定一个接收视图名(逻辑名). Dispatche

springmvc 的请求处理过程(精编)

1. DispacherServlet 前端控制器接受发送过来的请求,交给HandlerMapping 处理映射器, 2. HandlerMapping 处理映射器, 根据请求找到相应的HandlerAdapter 处理适配器(处理适配器就是那些拦截器活着吧Controller) 3. HandlerAdapter处理器适配器,处理一些功能请求, 返回一个ModleAndView 对象,包括模型数据.逻辑视图名. ViewResolver视图解析器 ,先根据ModleAndView 中设置的vi

SpringMVC在使用过程中的错误

HTTP Status 500 - Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 3 errors org.springframework.web.util.NestedServletException: Request processing

maven+springMVC+mybatis 搭建过程

1.创建maven web 项目 maven 创建web应用命令: mvn archetype:generate -DgroupId=[com.rom]包名 -DartifactId=[cpsrom]项目名 -DarchetypeArtifactId=maven-archetype-webapp; 2.pom.xml 导入相关依赖包 <dependencies> <!-- spring核心包 --> <!-- springframe start --> <depe

SpringMVC DispatcherServlet初始化过程

先来上一张类的结构图: 图里只画了跟初始化相关的方法. 首先DispatcherServlet也是一个Servlet,初始化从init()方法开始. 下面就具体看看ini()是怎么实现的吧. 1.Servlet 是个接口: public void init(ServletConfig config) throws ServletException; 2.GenericServlet 中实现了初始化方法. public void init(ServletConfig config) throws

springMVC启动初始化过程

在web.xml里配置分发servlet和ContextLoaderListener,ContextLoaderListener是spring提供的类,它继承了ContextLoader类和实现了ServletContextListener接口. ContextLoader类负责初始化容器,初始化方法是 initWebApplicationContext(ServletContext servletContext) ServletContextListener负责监听web容器的创建和销毁,分别