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

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

Spring MVC的总体设计

要使用Spring MVC只要在web.xml文件中配置一个DispatcherServlet。使用Spring MVC非常简单,只要扩展一个路径映射关系;定义一个视图解析器;再定义一个业务逻辑的处理流程规则。
在这里插入图片描述
DispatcherServlet类继承HttpServlet,在Servlet的init方法调用时DispatcherServlet执行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初始化

在这里插入图片描述

HandlerAdapter初始化

可以完成URL与Handler的映射关系,那么HandlerAdapter可以帮助自定义各种Handler。
在这里插入图片描述

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)方法来渲染页面
    在这里插入图片描述

模板模式

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

模板模式的结构

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值