Home SpringMVC
Post
Cancel

SpringMVC

SpringMVC以DispatcherServlet为核心,负责协调和组织不同组件以完成请求处理并返回响应的工作,实现了MVC模式。

什么是SpringMVC

SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model、View、Controller分离,将Web层进行职责解耦,把复杂的Web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

SpringMVC运行流程及九大组件

SpringMVC的运行流程

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器
  3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
  4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器执行处理器(Controller,也叫后端控制器)
  5. Controller执行完成返回ModelAndView
  6. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  7. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  8. ViewReslover解析后返回具体View
  9. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
  10. DispatcherServlet响应用户。

从上面可以看出,DispatcherServlet有接收请求,响应结果,转发等作用。有了DispatcherServlet之后,可以减少组件之间的耦合度

SpringMVC的优点

  1. 可以支持各种视图技术,而不仅仅局限于JSP
  2. 与Spring框架集成(如IoC容器、AOP等)
  3. 清晰的角色分配:前端控制器(DispatcherServlet),请求到处理器映射(HandlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver)。

SpringMVC的主要组件

  1. 前端控制器DispatcherServlet(不需要程序员开发) 作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet就减少了其它组件之间的耦合度。
  2. 处理器映射器HandlerMapping(不需要程序员开发) 作用:根据请求的URL来查找Handler
  3. 处理器适配器HandlerAdapter 注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
  4. 处理器Handler(需要程序员开发)
  5. 视图解析器ViewResolver(不需要程序员开发) 作用:进行视图的解析,根据视图逻辑名解析成真正的视图(Vew)
  6. 视图View(需要程序员开发JSP) View是一个接口, 它的实现类支持不同的视图类型(JSP,Freemarker,PDF等等)

SpringMVC和Struts2的区别有哪些

  1. SpringMVC的入口是一个Servlet即前端控制器(DispatchServlet),而Struts2入口是一个Filter过虑器(StrutsPrepareAndExecuteFilter)。
  2. SpringMVC是基于方法开发(一个url对应一个方法),请求参数传递到方法地形参,可以设计为单例或多例(建议单例),Struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
  3. Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,SpringMVC通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。JSP视图解析器默认使用JSTL。
This post is licensed under CC BY 4.0 by the author.