关于WEB三层架构的思考
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电子交易平台系统(功能包括:用户登录、注册、邮箱验证、查看商品、添加商品、购物车、下单、在线支付等),包结构如下:
~~未完待续~~
以上均为个人观点,如有疑问,欢迎交流~~
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。