Java Web项目的模式一和模式二比较

本文对比了传统的JSP+JavaBean模式与MVC模式在Web开发中的应用。MVC通过将控制层、模型层和视图层分离,提高了代码的可维护性和可扩展性。在MVC模式下,JSP仅负责显示,控制逻辑由Servlet处理,业务逻辑由Service和DAO组件完成。

一 模式一

1 定义

JSP+JavaBean(DAO)

2 架构分析

JSP:负责控制逻辑、表现逻辑,业务对象(JavaBean)的调用。

JavaBean(DAO):用于封装业务数据。

3 实例

传统的JSP+JavaBean(DAO)开发的登录操作,用户登录表单提交的数据会送给一个check.jsp页面,该页面负责完成了大部分操作功能,它负责信息的提示,转发数据给业务组件(IMemberService)处理,业务组件再把相关的数据提交给数据层组件(IMemberDao)进行数据库的存取操作。如果发现数据库有对应的用户记录,check.jsp会发出是否成功提示,并转到成功后的index.jsp页面,如果失败,会发出错误提示,并重新转回index.jsp进行再次登录。

从上述过程可知:check.jsp除了信息提示外,负责了控制逻辑和部分业务逻辑。

二 模式二(MVC)

1 定义

JSP+Servlet+(Service+DAO)

2 架构分析

显示层(View):包括JSP,HTML/HTML5,CSS,JavaScript和客户端其他组件等,指的是进行页面的处理显示操作,是人机交互的界面,可以通过美工进行设计;在显示层的JSP页面中,较好的情况是没有任何Scriptlet编写的痕迹,但是这是比较难做到的,可以借助标签库去掉大多数的Scriptlet脚本。另外需要注意的是,页面里最多允许出现的逻辑有接收属性、判断、迭代输出,不能体现过多的复杂逻辑,从软件工程管理的角度来说,目的是为了让更多页面设计人员负责显示层的设计,这样可以大大降低开发复杂度。

控制层(Controller):用户的请求首先要提交给控制器,控制器需要对请求数据进行接收,数据的验证,调用业务层操作,根据业务层的处理结果进行合理的页面跳转,跳转时可以传递属性内容给JSP(request属性范围)。

模型层(Model):包括业务层组件、数据层DAO和组件等,指的是一些完全独立的Java程序,不依赖任何环境存在,可以有效地移植到其他平台同种项目中,模型层组件按照目标细分为业务层和数据访问层。

3 实例

模式二中:check.jsp页面中的内容直接包含到相关Servlet程序里面。

4 程序的分层以及层次间的关系。

系统细分四层

  • 显示层(View)
  • 控制层(Controller)
  • 业务领域层(Services and Domain)
  • 数据访问层(DAO)

各层之间的关系描述如下:

  1. 在进行业务层和数据访问层设计时,要先明确系统的数据实体来设计相关领域模型(Domain modules),并确定对应服务层的上层接口,在领域模型基础上设计数据库访问层组件。
  2. 只允许相邻两个层次间的调用,不允许跨层次调用,如显示层不可以直接访问业务层组件,以及控制层不可以直接访问数据层组件。
  3. 同层次的组件可以通过内部接口相互调用,但不能够调用该层对象提供给上层的接口,否则说明层次中的类的设计还有问题存在。
  4. 在系统设计时,应该自顶向下地开展,如体系结构搭建需要从控制层开始,分析概括需求并确定业务层的接口,再依次设计下面业务领域层和数据访问层。
  5. 在数据库访问层的设计上,先定义一个父接口,包含主要DAO的公共操作接口,其中包含可能出现的常用的操作方法,再定义数据访问层子接口。
  6. 另外,要明确每个DAO类所负责的数据表部分,需要尽可能地避免交叉访问,从而降低数据存储出错情况的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值