Smart我是写的简易MVC框架,其工作模式类似于struts1、struts2,之所以命名为Smart是因为我觉得MVC框架都应具有精巧、灵活的特性,而这个单词恰能够表达这个意思。
Smart框架的整体架构模仿了Struts1,但在Action组件的设计方面模仿了Struts2,。同Struts1一样,Smart框架中也有ActionServlet控制器,Action组件,Forwarder组件,Convert组件,组件调用流程也是模仿的Struts1。Action组件被设计成多例模式,且与Smart框架解耦,开发者可选用继承、实现接口、自定义三种方式定义Action组件。Convert组件在初始化方面模仿的Struts1,在配置方式方面模仿的Struts2。
Smart框架在配置文件数据封装方面是模仿的Spring,例如配置文件中<Action />中的数据就会被Java类ActionDefine封装,以此类推。
Samrt框架中的异常捕获机制也是模仿spring,都会转换成运行时异常,重新抛出。
目前,Smart框架实现了MVC的主干功能,与Struts1相比还没有validate功能,与Struts2相比还没有interceptor功能,后期会加上。Smart框架的使用方式,配置文件配置方式几乎跟Struts1一样。
Smart框架的包结构和依赖的jar包如图:
Action:包含一个Action接口和AbstractAction抽象类,开发者可以以继承和实现接口两种方式开发Action组件
common:包含一个SmartConstant类,其定义了Smart框架中用到的所有字面常量
config:包含了多个*Define.java文件和ConfigResolver.java文件 *Define.java封装配置文件数据,ConfigResolver.java负责解析配置文件
exception:定义了框架中的所有异常类型
forwarder:定义了一个Forwarder接口和默认实现
mapping:定义了多个匹配类,负责查找Action和ActionDefine等
servlet:ActionServlet是控制器类,子包helper中定义了RequestProcessor和其默认实现
util:定义了各种工具类。