基于Java的MVC框架很多,主流的是Spring MVC和Struts。因为Spring MVC可以与Spring无缝连接,所以Spring MVC发展很快,所占份额也比较大。

Spring MVC的总体设计

要使用Spring MVC只要在web.xml文件中配置一个DispatcherServlet。使用Spring MVC非常简单,只要扩展一个路径映射关系;定义一个视图解析器;再定义一个业务逻辑的处理流程规则。
Spring MVC的工作机制与设计模式
DispatcherServlet类继承HttpServlet,在Servlet的init方法调用时DispatcherServlet执行Spring MVC的初始化工作
Spring MVC的工作机制与设计模式
在Spring MVC框架中,有三个组件是用户必须要定义和扩展的:

  1. 定义URL映射规则
  2. 实现业务逻辑的Handler实例对象
  3. 渲染模板资源

DispatcherServlet的启动

  1. HttpServlet初始化调用了HttpServletBean的init方法,该方法的作用获取Servlet中的init参数,并创建一个BeanWrapper对象,然后子类处真正执行BeanWrapper的初始化工作。
  2. Spring容器的创建是在FrameworkServlet的initServletBean()方法中完成的,这个方法会创建WebApplicationContext对象,并调用refresh其refresh()方法来完成配置文件的加载;
  3. Spring容器在加载时会调用DispatcherServlet的initStrategies方法来完成在DispatcherServlet中定义的初始化工作。

Control设计

Spring MVC的Control主要由handlerMapping和HandlerAdapters两个组件提供。

  1. HandlerMapping负责映射用户的URL和对应的处理类,
  2. 在处理链中添加任意的HanderAdapters实例来处理这个URL对应的请求,类似于Servlet规范中的Filter处理类。

HandlerMapping初始化

Spring MVC的工作机制与设计模式

HandlerAdapter初始化

可以完成URL与Handler的映射关系,那么HandlerAdapter可以帮助自定义各种Handler。
Spring MVC的工作机制与设计模式

Control的调用逻辑

首先调用DispatcherServlet的doService方法开始,接着调用doDispatch方法。

Model设计

Model通常在渲染页面和业务逻辑曾需要用到。
ModelAndView对象是连接业务逻辑层与View展现层的桥梁,对SpringMVC来说也是连接Handler与View的桥梁。

View设计

对Spring MVC的View的模块来说,有两个组件支持,分别是RequestToViewNameTranslator和ViewResolver。

  1. RequestToViewNameTranslator支持用户自定义对ViewName的解析
  2. ViewResolver根据ViewName创建一个View对象,调用View对象的void render(Map model,HttpServletRequest request,HttpServiceResponse response)方法来渲染页面
    Spring MVC的工作机制与设计模式

模板模式

形成大体的结构每个人根据自己的需求去开发。大的逻辑已经定义,不同的实现方法的有所有不同

模板模式的结构

Spring MVC的工作机制与设计模式

  • Abstract(抽象模板):定义了完整的框架,方法的调用顺序通常已经确定,但是还是定义一些抽象方法给子类去实现
  • Concrete(具体模板实现类):实现抽象模板中定义的抽象方法,实现具体的共嗯那个组成一个完整逻辑。

相关文章:

  • 2022-12-23
  • 2021-05-16
  • 2021-06-01
  • 2021-10-03
  • 2021-12-31
猜你喜欢
  • 2022-02-02
  • 2021-07-28
  • 2021-11-03
  • 2021-11-05
  • 2022-01-16
  • 2021-12-26
  • 2021-05-17
相关资源
相似解决方案