1.MVC设计思想

MVC程序设计思想是眼下比較流行的WEB开发的模式,当中,M(model)是模型。即JavaBean,用来封装和保存数据;V(view)是视图,即JSP。用来显示内容;C(controller)是控制器,即servlet,用来处理业务逻辑。大致流程是这种:编写一个JSP页面用来获取信息(如登录页面获取用户登录名、password)。并将信息封装到JavaBean中,提交到server端由WEB容器将数据封装成request请求。交给servlet来处理。

servlet从请求中获取用户信息到数据库中查询。并返回对应的结果(登录成功或失败),再将结果封装成response响应发送给client浏览器,浏览器依据response头和其它信息进行对应的显示。

如图:

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

详细分工例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTk5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2.WEB三层架构

从上图能够看出。数据訪问层中JavaBean既要存储数据内容又要获取数据内容,这违背了单一职责原则

我们希望JavaBean仅仅是单纯的用来封装数据。其它的交给别人来做,因此在WEB开发中,将数据訪问层进一步细化。用JavaBean来封装数据,而数据是持久化存储在数据库中(也能够是XML等文件里)。通过DAO(Data
Access Object)数据訪问对象来查询数据库(或解析XML文件等)。有时,视图层不一定仅仅有JSP。,有些内容须要通过servlet技术显示,如登录页面的验证码。当业务逻辑过多时,业务逻辑层就会显得特别臃肿。不利于扩展和维护。这时能够将业务功能抽象成接口,详细功能由子类实现。

那么问题来了,怎么知道哪个类去处理哪个业务逻辑呢?解决方式是定义一个核心servlet。用来接收全部的client请求,通过推断将请求交给相应的业务处理子类去处理。这里可參见Struts2的实现原理。这里不再赘述。

这样,业务逻辑层就分成了两部分:用于显示的servlet和分发业务的servlet。例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTk5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

3.真实案例

然而。真正开发中,以上并非终于的解决方式。

拿一个实际案例来说。开发一个简单的B2C电子交易平台系统(功能包含:用户登录、注冊、邮箱验证、查看商品、加入商品、购物车、下单、在线支付等),包结构例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTk5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

~~未完待续~~

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

关于WEB三层架构的思考的更多相关文章

  1. WEB三层架构与MVC

    web三层架构是指: >用户接口层(UI Layer) >业务逻辑层(Bussiness Layer) >持久化层 关于业务逻辑和用户接口 在早期的web开发中,因为业务比较简单,并 ...

  2. 简单的web三层架构系统【第二版】

    昨天写了 web三层架构的第一版,准确的说是三层架构的前期,顶多算是个二层架构,要慢慢完善. 第一版里,程序虽说能运行起来,但是有一个缺陷,就是里面的SQL语句,是使用的拼接字符进行执行.这样安全系数 ...

  3. Django——WEB三层架构与MVC

    而我发此文的目的有二:一者,让初学者能够听到一家之言,是为解惑:二者,更希望抛砖引玉,得到专家的批判. 许多学生经常问我,MVC到底和WEB三层架构有啥关系? 开始时,我也只能给他们一些模糊的回答.时 ...

  4. Java Web 三层架构详解

    java 三层架构ssh 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有bean,包括struts2的 action,充分发 ...

  5. 简单的web三层架构系统【第五版】

    接上一版,今天差不多就是三层架构后台代码的完结了,这一版写完,接下来就是前台的制作了,前台不太熟悉,还在深入学习.过一段时间在写,今天先把后台代码写完. 三层架构包括DAL层, BLL层, UI层(也 ...

  6. JavaWeb -学生信息管理实践(JDBC+web+三层架构+DBUtil构造思路)

    前言: 1 该程序使用动态web项目 2 该程序使用SQL server需导入对应包( 具体可看前篇----JDBC的使用) 3 三层架构思想: ①表示层 前台:jsp/html等 作为前台与用户交互 ...

  7. 简单的web三层架构系统【第三版】

    今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨. 昨天偶然间看到别人写的三层架构中,竟然没有在方 ...

  8. 转:从web三层架构解析软件测试内容

    B/S架构的系统,都会使用如下的基础软件架构: 数据访问层:实现对数据的访问功能,如增加.删除.修改.查询数据. 业务逻辑层:实现业务的具体逻辑功能,如学生入学.退学.成绩管理等. 页面显示层:将业务 ...

  9. 简单的web三层架构系统【第四版】

    上一次写了第三版, 因为之前无意之间看到一段视频,说是把系统中所有的SQL语句都做成存储过程.可以在很大程度上优化系统的SQL执行速度.所以百度了一下细节问题,之后我把所有的SQL语句,都做成了存储过 ...

随机推荐

  1. ASP.NET CS文件中输出JavaScript脚本

    ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscrip ...

  2. 基于visual Studio2013解决C语言竞赛题之0307函数求值

      题目 解决代码及点评 这又是个条件函数,但是这个函数无法用switch来解决,因为switch只能用于和某条件相等情况下,而这个函数的范围是无穷的 遇到这种问题,我们还是需要用复合的if语 ...

  3. BZOJ 1756: Vijos1083 小白逛公园

    题目 1756: Vijos1083 小白逛公园 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 856  Solved: 264[Submit][Sta ...

  4. BZOJ 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场

    题目 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 491  S ...

  5. VS2010/MFC对话框二:为对话框添加控件)

    为对话框添加控件 创建对话框资源需要创建对话框模板.修改对话框属性.为对话框添加各种控件等步骤,前面一讲中已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件. 上一讲中创建了一个名 ...

  6. IntelliJ IDEA 控制台 乱码 有效解决办法

    在Run -> Edit Configuration -> 你的运行Server -> Startup/Connection -> Environment Variables ...

  7. 我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)

    二.collections collections是对Python现有的数据类型的补充,在使用collections中的对象要先导入import collections模块 1.Counter——计数 ...

  8. POJ 1142 质因数分解

    只要很朴素的分解就可以了,数据量不大 #include <stdio.h> #include <string.h> #include <stdlib.h> #inc ...

  9. jquery 单击li防止重复加载的实现代码

    因为加载内容比较慢,所以用户可能在li上不经意点击了两次,那么就会请求两次,这是我们不想看到的. 今天在javascript-jquery群上一筒子发了两个demo给我,他的方法是先将单击的li节点拷 ...

  10. 基于visual Studio2013解决C语言竞赛题之0514单词统计

     题目 解决代码及点评 /************************************************************************/ /* 14. 有一行字 ...