框架-SpringMVC

1 MVC设计模式

  1. 控制程序流转的控制器(Controller)
  2. 封装数据处理数据的模型(Model)
  3. 负责展示数据的视图(view)
  • 符合MVC设计思想的软件应该保证上面这三部分相互独立,互不干扰,每一个部分只负责自己擅长的部分。这样做的好处是,软件的结构会变得更加的清晰,可读性强。有利于后期的扩展和维护,并且代码可以实现复用

2 SpringMVC简介

  • Springmvc是spring框架的一个模块,spring和springmvc无需中间整合层整合
  • Springmvc是一个基于mvc的web框架

3 springmvc执行原理

框架-SpringMVC

  1. 用户发送请求 至 前端控制器(DispatcherServlet);
  2. 前端控制器(DispatcherServlet)收到请求后调用处理器映射器(HandlerMapping)
    处理器映射器(HandlerMapping)找到具体的Controller(可以根据xml配置、注解进行查找),并将Controller返回给DispatcherServlet;
  3. 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。处理器适配器经过适配调用具体的Controller;(Controller–> service --> Dao --> 数据库)
    Controller执行完成后返回ModelAndView,
    处理器适配器(HandlerAdapter)将controller执行的结果(ModelAndView)返回给前端控制器(DispatcherServlet);

提示:Model(模型数据,即Controller处理的结果,Map) View(逻辑视图名,即负责展示结果的JSP页面的名字)

  1. 前端控制器(DispatcherServlet)将执行的结果(ModelAndView)传给视图解析器(ViewReslover)
    视图解析器(ViewReslover)根据View(逻辑视图名)解析后返回具体JSP页面
  2. 前端控制器(DispatcherServlet)根据Model对View进行渲染(即将模型数据填充至视图中);前端控制器(DispatcherServlet)将填充了数据的网页响应给用户。

4 Struts2 和 SpringMvc的区别

  1. 入口不同:
    Struts2:filter过滤器
    SpringMvc:一个Servlet即前端控制器(DispatcherServlet)
  2. 开发方式不同:
    Struts2:基于类开发,传递参数通过类的属性,只能设置为多例
    SpringMvc:基于方法开发(一个url对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)
  3. 请求方式不同:
    Struts2:通过OGNL存取数据
    SpringMvc:通过参数解析器将request请求内容解析,给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面,jsp视图解析器默认使用的是jstl。

5 Spring MVC的主要组件

  1. 前端控制器 DispatcherServlet(不需要程序员开发)
    作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
  2. 处理器映射器HandlerMapping(不需要程序员开发)
    作用:根据请求的URL来查找Handler
  3. 处理器适配器HandlerAdapter
  4. 处理器Handler(需要程序员开发)
  5. 视图解析器 ViewResolver(不需要程序员开发)
    作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)
  6. 视图View(需要程序员开发jsp)
    View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)