`
v5qqbrowser
  • 浏览: 358530 次
文章分类
社区版块
存档分类
最新评论

自己开发复杂的MVC构架1——功能和结构设计

 
阅读更多

自己开发复杂的MVC构架1————功能和结构设计

自己动手模仿struts开发一个MVC框架。

功能上和结构上完全模仿struts

1.可以通过XML实现url到javaBean的映射,以及forward和jsp映射。

2.表单的数据通过反射机制自动填入javaBean的属性中。

组成结构如下:

1.注册名为ControllerServlet的servlet用来接收所有.action的请求,作为前端控制器使用。

2.创建名为controllerMapping.xml的XML文件用来配置映射。

3.创建名为BaseAction的接口,作为业务处理bean的接口,含有方法doOperate返回forward值。

4.创建名为BaseControllerMapping和BaseControllerMappingFactory的接口。

5.创建名为ControllerData的javaBean用来存放每一个Action的数据和它的forward映射。

6.创建名为ControllerMapping的javaBean用来存放序列话的映射数据,存放ControllerData。

7.创建名为ControllerMappingFactory的javaBean用来通过读取XML返回一个ControllerMapping的对象。

8.创建名为ReflectFactory的javaBean用来通过反射机制把表单的数据填入javaBean的属性中。

9.两个自定义异常NotFindForwardException未找到映射的forwrd的异常,NotFindMappingException未找到映射bean的异常。

每一个ControllerData属性:

String controllerName:Action名称。

String controllerURL; 映射的URL。

String controllerBean; 业务处理bean的class物理位置。

Map forwardMapping; 返回值forward与返回目标的映射。

流程如下:

1.在ControllerServlet加载的时候,into方法中通过ControllerMappingFactory完成ControllerMapping的构造。

2.请求提交至ControllerServlet,ControllerServlet需要根据请求的action值来查询获取ControllerMapping中的ControllerData对象。

3.根据ControllerData对象的controllerBean,加载对应的作为业务处理bean,并为它的属性填入值(表单数据)。

4.执行BaseAction的doOperate方法,将处理结果forward返回给Servlet。

5.根据ControllerData对象的forwardMapping,将结果返回到对应的目标(JSP)。

画了一张图:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics