轻松实现MVC模式

 

概要:

  1. 框架需求与目标
  2. 框架设计与编码实现
  3. 框架演示与功能实现

一、框架需求与目标

框架需求:

框架的需求包含功能性需求 和非功能性需求,功能性需求框架本身所提供的功能,而非功能性需求通常也指定体验性需求,即该框架对于开发者而言,是否易上手,是否需要较多的学习成本,以及在开发时需要过多的配置。

有个时候两者是互相矛盾冲突的,比如当我们想让框架支持更的功能时,那么它的结构设计将会更复杂,抽像的层次将会越多,带来的负面影响时对框架使用者的学习成本增加了。

b0bec420e986a48b97cfece97fe410cd4d6.jpg

到底该选择更多的功能,还是更好的体验?这就需要框架作者要作出准确的定位与范围。

定位是该框架要完成什么目标?范围是实现该目标需实现哪些功能?两者清晰之后 自然知道哪些是必须做的,哪些是可以做的。而体验则是在保证必须功能的情况越高越好,甚至可以为了提供体验可以牺牲部分功能的完整性。

 

功能性需求用例图:

fbedb41f7f780f9cd7cb0a253cf7332e74d.jpg

  1. URL映射
    1. 基于注解自动匹配调用方法
  2. 参数自动解析
    1. Form表单参数自动转换成一般对像和复杂对像
  3. 请求调用
    1. 基于反射调用目标方法
  4. 视图支持
    1. 基于返回结果跳转至对应视图处理
    2. 支持的有jsp 视图,freemarke视图,Json视图
  5. 异常统一处理
    1. 出现异常统一处理,并跳转到异常页面

非功能性需求与目标:

  1. 接近于零的配置
  2. 更少的学习成本
    1. 尽可能使用用户之前习惯
    2. 概念性的东西要少一些
  3. 更轻的体量
  4. 支持开发模式:动态装载配置

二、框架设计与编码实现

框架环境依赖:

框架名称:tuling-mvc

jdk:1.6 以上

依赖包:spring、freemarker、java-servlet-api

框架流程分解:

a0b8f5fd71ef3efc527bc056ae995bbc6c8.jpg

实现组件:

  1. FreemarkeView
    1. freemarke视图
  2. HandlerServlet
    1. 请求参数封装,请求转发
  3. MvcBeanFactory
    1. Mvc bean 工厂 ,从spring ioc 中扫描类装载MVC Bean
  4. MvcBean
    1. MVC 业务执行
  5. MvcMapping
    1. MVC注解,用于注解MVC Bean,并配置url 路径

UML类图:

3d3beb39f2221630c49edcb62736cdf0bdc.jpg

MvcBean 装载时序图:

d6561bbf20a56a53dcd9dab1ffe8a90ab45.jpg

1、httpServelt init

2、从ioc 容器中获取 mvcBeanFactory

3、构造Factory

4、遍历ioc beans

5、封装保存Mvc Beans

请求时序图:

6413d47f57ada7f59d38beb5d93abf8b7fd.jpg

1、get 请求

2、获取mvc bean

3、构建参数

4、调用控制器执行业务处理

5、处理返回结果:解析业页、异常

6、返回html

三、框架演示与功能实现

1.处理映射

urlàcontrol(@MvcMapping à method)

一:初始化操作:

        1. 基于Spring ApplicationContext遍历所有Bean Type
        2. 基于Class 查找含有@MvcMapping注解的方法
        3. 封装Mvc

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/LeBronJames/blog/3100382

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值