码迷,mamicode.com
首页 > Web开发 > 详细

关于WEB三层架构的思考

时间:2014-12-21 14:02:44      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:web开发   struts2   mvc   javabean   servlet   

1.MVC设计思想

MVC程序设计思想是目前比较流行的WEB开发的模式,其中,M(model)是模型,即JavaBean,用来封装和保存数据;V(view)是视图,即JSP,用来显示内容;C(controller)是控制器,即servlet,用来处理业务逻辑。大致流程是这样的:编写一个JSP页面用来获取信息(如登录页面获取用户登录名、密码),并将信息封装到JavaBean中,提交到服务器端由WEB容器将数据封装成request请求,交给servlet来处理。servlet从请求中获取用户信息到数据库中查询,并返回相应的结果(登录成功或失败),再将结果封装成response响应发送给客户端浏览器,浏览器根据response头和其他信息进行相应的显示。如图:

技术分享


MVC设计思想将数据封装、显示和业务处理分开,JavaBean、JSP和servlet都只做自己最擅长的事,模块化使整个过程更加清晰,符合Java低耦合的思想,提高代码的灵活性,易于扩展和维护。具体分工如下图:

技术分享

2.WEB三层架构

从上图可以看出,数据访问层中JavaBean既要存储数据内容又要获取数据内容,这违背了单一职责原则。我们希望JavaBean只是单纯的用来封装数据,其他的交给别人来做,因此在WEB开发中,将数据访问层进一步细化,用JavaBean来封装数据,而数据是持久化存储在数据库中(也可以是XML等文件中),通过DAO(Data Access Object)数据访问对象来查询数据库(或解析XML文件等)。有时,视图层不一定只有JSP,,有些内容需要通过servlet技术显示,如登录页面的验证码。当业务逻辑过多时,业务逻辑层就会显得特别臃肿,不利于扩展和维护,这时可以将业务功能抽象成接口,具体功能由子类实现。那么问题来了,怎么知道哪个类去处理哪个业务逻辑呢?解决方案是定义一个核心servlet,用来接收所有的客户端请求,通过判断将请求交给对应的业务处理子类去处理。这里可参见Struts2的实现原理,这里不再赘述。这样,业务逻辑层就分成了两部分:用于显示的servlet和分发业务的servlet。如下图:

技术分享


3.真实案例

然而,真正开发中,以上并不是最终的解决方案。拿一个实际案例来说,开发一个简单的B2C电子交易平台系统(功能包括:用户登录、注册、邮箱验证、查看商品、添加商品、购物车、下单、在线支付等),包结构如下:

技术分享

~~未完待续~~

以上均为个人观点,如有疑问,欢迎交流~~


关于WEB三层架构的思考

标签:web开发   struts2   mvc   javabean   servlet   

原文地址:http://blog.csdn.net/qq_1991/article/details/42058781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!