我们考虑这样一个功能,提供一个表单,让用户输入用户名和密码,提交之后,服务器程序通过查看数据库中有无和输入用户名相同的用户,如果有,就提示登录失败,如果无,就提示登录成功。
1、第一种架构
client--------------------jsp------------------DB
架构说明:表单和服务器处理程序全部写到jsp文件中。
该架构的优点是:架构简单。
该架构的缺点是:业务逻辑代码和访问数据库代码没有分开,不利于维护!
2、第二种架构
client-------jsp------usermanger---------user---------DB
架构说明:三层架构,展现层(jsp) 业务逻辑层(usermanger(管理层)+user(实体层)) 数据层(DB)
优点:增加业务逻辑层,使得jsp只负责展现。
缺点:访问数据库的代码繁琐。
3、第三种架构
client---------jsp----------usermanger-------hibernate------DB
jsp--------user
架构说明: 用hibernate访问数据库
优点:使用面向对象的方式访问数据库,代码变简单
缺点:缺少DAO层,访问数据库的代码无法复用!
4、第四种架构
client----jsp----usermanager----userDAO----userDAOImply(hibernate)----DB
jsp----------user
架构说明:四层架构:展示层(jsp)、业务逻辑层(usermanger+user)、DAO层 (UserDaoAO+userDAOImply)、数据层(DB)。 增加数据访问层DAO,并将数据访问层设置为接口。
优点:增加了DAO层,使得DAO层的代码可以复用!
缺点:业务逻辑层不易扩展!如果想改变业务逻辑,必须重新开发业务逻辑层usermanger
5、第五种架构
client--jsp--usermanager---UsermangerImly--userDAO---userDAOImply(hibernate)---DB
jsp----------user
架构说明:四层架构:将业务逻辑层的管理模块usermanger设为接口,增加实现类usernmangerimpl
优点:业务逻辑层的管理模块可扩展。
缺点:视图层(展现层)不易扩展!
6、第六种架构
client--jsp--struts2filter-action--view:jsp--usermanager--UsermangerImly--userDAO--实现(hibernate)-DB
action------------------usermanger
架构说明:增加struts框架,生成了MVC架构,
C为(struts2filter+action) V为(view:jsp)
M为(usermanager--UsermangerImly--userDAO--实现(hibernate)-DB)
优点:引入struts框架,使得项目容易管理。MVC架构把数据处理、程序输入输出控制及数据显示分离开来,并且描述了不同部件的对象间的通信方式,使得软件可维护性,可扩展性、灵活性以及封装性大大提高;MVC(Model-View-Controller)把网站的组成分解为M(模型) 、V(视图) C(控制器)三种部件。视图表示数据在屏幕上的显示。控制器提供处理过程控制,他在模型和视图之间起连接作用。控制器本身不输出任何信息和做任何处理,它只负责把用户的请求转成针对Model的操作,和调用相应的视图来显示Model处理后的数据。
缺点:不具有IOC(控制反转)和AOP(面向切面编程)的功能
7、第七种架构
client--jsp--struts2filter-action--view:jsp--usermanager--UsermangerImly--userDAO--实现(hibernate)-DB
action------------------usermanger
架构说明:增加spring框架。
优点:具有IOC特性,减少代码中的new,大部分属性赋值的操作架构spring容器来完成
具有AOP特性,在不影响正常的业务逻辑的情况下,在逻辑中增加类似于拦截器的功能。
缺点:架构比较复杂。