MVC框架到实现原理

MVC框架到实现原理
一.为什么会出现像Structs这样的MVC框架呢?
1. MVC模式是J2EE中Model 2模型的应用,有Model 2就肯定存在Model 1模型,我们二期基于JSP的开发就是典型的Model 1模型(JSP+JavaBean的开发模式),Model 1模型最大的好处就是执行效率快,可是JSP的职责太重(JSP 负责数据的显示,负责请求数据的获取,还要负责调用模型对象来实现业务),Model1模型适用于小型项目
2. Model 2模型是对Model 1模型的改进,它将JSP职责进行了更近一步的分,从中抽取出了一层(控制器---- Servlet/Filter),也就是说JSP将获取参数,调用Model对象,和页面跳转交给了Servlet去做,它只负责数据的展示和搜集(View层)
3. 我们经常提到分层,其实分层就是划分职责,我们应该尽量将职责单一化,这样利于维护和拓展
4. 如果采用Model 2来开发项目同样也存在着弊端,
a) 对于一个项目首先我们要创建很多Servlet,这样在多人开发时命名规范就成了问题,多个程序员的代码不统一,不利于后期维护和拓展
b) 我们也知道Servlet对象是有生命周期到,在项目使用过程中就要创建很多Servlet对象,而这些对象都驻留在Tomcat缓存中,因而严重影响了Web服务器的性能
c) Servlet在控制请求跳转时是通过硬编码的方式写死的,这样在控制层和View层跳转就不够灵活了,不利于以后的变更。
d) 在多人开发中对于获取请求参数都没有一个统一的标准
5. 基于以上这些弊端,我们就急需一种框架来统一MVC的编程,如果大家都采用同一个MVC框架进行开发,这样就可以通过框架的规范来限定大家的行为,这样利于对人的共同开发和后期的维护
二.Structs框架的实现原理
1.为了解决在项目中要创建多个Servlet对象的问题,Structs通过一个Servlet来截取所有的请求,并通过请求路劲来调用具体的Action,让Action来完成业务调用
2.MVC模式框架的分类
a.面向请求驱动的MVC框架----Structs1.x , Structs2.x ,WebWork
类图如下:

时序图如下:


b.面向事件驱动的MVC框架----JSF
3.Structs的MVC实现

1. ActionServlet类控制导航
2. ActionServlet根据URI来决定哪个Action类被用于处理请求,Action可以校验输入,并访问业务层以便从数据库检索信息
3. Action需要知道页面提交了那些内容,所以由ActionServlet根据请求URI来决定将请求参数绑定到那个ActionForm中,并传入Action
4. Action在完成业务逻辑后,返回一个ActionForward对象,ActionServlet根据ActionForward对象中的路径来调用页面完成响应
5. Struts将页面跳转信息绑定在一个ActionMapping对象中,一个ActionMapping对应一个请求URI,当请求路径到达时,ActionServlet就会查询ActionMapping对象,ActionMapping对象将告诉ActionServlet那个Action类会被调用,那个ActionForm类被用于传递页面数据以及那些ActionForward将被用于转向
6. 有关Action,ActionForm,ActionForward等信息,Struts通过一个配置文件struts-config.xml 文件来定义
7. ActionMapping对应structs的配置信息,一个action标签对应一个ActionMapping对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值