MVC 是什么?

 

 

1. 概述
Spring mvc  框架围绕DispatchServlet 这个核心展开,DispatchServlet 是Spring mvc 的总导演
总策划,它负责截获请求并将其分派给相应的处理器处理。Spring mvc框架包括注解驱动控制器、请求
及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理以及表单标签绑定等内容。
2. Web.xml文件中要做如下配置:

 


<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/xxx-servlet.xml</param-value>
</context-param>
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>

<servlet>
	<servlet-name>servletname</servlet-name>
	<servlet-class>
		org.springframework.web.servlet.DispatcherServlet
	</servlet-class>
	<load-on-startup>2</load-on-startup>
</servlet>


 3. 大概流程

Spring mvc 是基于Model2 实现的框架,所以它的底层的机制也是MVC。在整个框架中DispatcherServlet处于核心的位置,它负责协调和组织不同的组件以完成请求处理并返回响应的工作。和大多数WEB MVC框架一样,Spring MVC 通过一个前端Servlet接收所有的请求,并将具体工作委托给其他组件进处处理,DispatcherServlet就是Spring MVC的前端Servlet.

  1. 整个过程始于客户端发出一个HTTP请求,WEB应用服务器接收到这个请求,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),WEB容器将该请求转交给DispatcherServlet处理
  2. DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL,HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler).可将HandlerMapping 看成路由控制器,将Handler看成目标主机。注意:Spring MVC 中没有定义一个Handler接口,实际上任何一个Object 都可以成为请求处理器。
  3. HandlerAdapter 对Handlerf进行封装,再以统一的适配器接口调用Handler.HandlerAdapter是Spring MVC的框架级接口,它用统一的接口对各种Handler方法进行调用。
  4. 处理器完业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息
  5. ModelAndView中包含的是“视图逻辑名”而非真正的视图对象,DispatcherServlet借由ViewResolver完逻辑视图名到真正视图对象【视图对象,是什么呢?】的解析工作。
  6. 当得到真正的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
  7. 最终客户端得到的响应消息,可能是一个普通的HTML页面,也可能是一个XML或JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。

 

 

 


参考:《Spring3.X企业应用开发实战》 陈雄华  林开雄 著  【电子工业出版社】