转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6285069.html

在我们开发项目时,一般都要先划分好哪些是与用户交互的,哪些用来处理请求/数据等等,这些过程无意中就执行了一个简单的架构了。在实际开发活动中,我们可以有一套可遵循的框架进行项目的布置的。这里,我介绍几种递进的架构。

第一种,最简单的三层架构:视图——控制——业务架构。即我们常说的MVC架构,这里换了一种我自己喜欢的更清晰的表达。

在这个架构中,只是把项目文件笼统地划分为三类:视图层、控制层、业务层。

在视图层,主要负责UI呈现,实行交互与获取数据,并把交互信息传给控制层。控制层负责对视图层传来的信息进行处理,包括重定向、转发参数到业务层等。而业务层则负责根据接收的参数对数据库进行操作,并把业务逻辑判断结果(比如:是否登录成功)返回控制层。这三次架构大致上分隔了UI/后台/数据三大部分,一定程度上起到了独立三大块的作用,以及保护了数据的安全性。

架构大致如下:

第二种架构:J3架构。把项目划分为四部分:视图层——控制层——业务层——DAO层。J3架构是对第一种架构的改进,把业务层拆分开来,J3的业务层只负责根据业务调用不同的DAO类并进行业务逻辑判断以及结果返回,而DAO层是一些操作数据库的类,一个DAO类操作一张表,定义了一系列方法封装了对数据库的增删查改以及其他的一系列操作。由于各层之间传递的数据众多,可以定义数据封装类,用类的属性来搭载参数们,通过传递类对象来达到传递一大堆参数的目的。比如:视图层、控制层、业务层直接的参数定义一个VO类来传递,业务层和DAO层定义DTO类来传递数据。

第三种:J4架构。J4是对J3的进一步改进。在J3中,控制层是用JSP文件对视图层的请求等做出处理的。但是我们知道,JSP文件在服务器中要先编译成为servlet再运行,最终才得到结果。如果是动态页面,则我们的确只能用JSP来实现,但是在控制层只是单纯负责对一些特定的请求进行处理,比如登录请求。那么再由JSP编译成servlet运行就没必要了,我们直接定义servlet文件来执行doXX的控制。也就是说,把J3架构的控制层的纯jsp文件换成servlet,就得到J4架构了。

视图层的参数传递到控制层,控制层把参数包装成VO数据封装对象发往相应的业务层类,业务层类根据VO对象提取的数据以及业务类型,把数据封装成DTO对象并发往对应的DAO类执行具体的数据库操作,然后把查询结果返回给业务层,业务层根据结果得到业务逻辑结果,把业务逻辑结果返回给控制层,控制层再根据业务逻辑结果执行相应的响应。

在实际编程时,如果VO和DTO对象没有什么大的区别,一般把这两层统一为BO层。

J2EE开发之三种项目架构的更多相关文章

  1. Android开发之三种动画

    转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...

  2. web开发性能优化---项目架构篇

    项目技术架构层级规划和介绍 简称四横两纵 四横即四大层次.分别为: 1.用户渠道层:用户渠道层是直接面向终于用户.通过站点的形式向用户提供产品展示.企业市场宣传.对产品的订购.互动分享.客户关怀以及用 ...

  3. mybatis的注解开发之三种动态sql

    脚本sql XML配置方式的动态SQL我就不讲了,有兴趣可以自己了解,下面是用<script>的方式把它照搬过来,用注解来实现.适用于xml配置转换到注解配置 @Select(" ...

  4. 项目架构开发:数据访问层之Repository

    接上文 项目架构开发:数据访问层之Logger 本章我们继续IRepository开发,这个仓储与领域模式里边的仓储有区别,更像一个工具类,也就是有些园友说的“伪仓储”, 这个仓储只实现单表的CURD ...

  5. iOS开发之组件化架构漫谈

    前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...

  6. J2EE开发之常用开源项目介绍

    主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层: 1)Hibe ...

  7. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

    再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...

  8. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  9. 项目架构开发:数据访问层之Cache

    数据访问层简单介绍 数据访问层,提供整个项目的数据访问与持久化功能.在分层系统中所有有关数据访问.检索.持久化的任务,最终都将在这一层完成. 来看一个比较经典的数据访问层结构图 大概可以看出如下信息 ...

随机推荐

  1. Java实现bt文件下载、制作、解析、磁力链接

    首先torrent里面肯定携带的有一些信息,所以就需要我们来解析这些信息. 我们这里做多文件制作torrent,所以首先要针对每一个文件建一个实体类 import java.util.List; pu ...

  2. Orchard模块开发全接触5:深度改造前台第二部分

    在这一部分,我们继续完善我们的购物车,我们要做以下一些事情: 1:完成 shoppingcart.cshtml: 2:让用户可以更新数量及从购物车删除商品: 3:创建一个 widget,在上面可以看到 ...

  3. Java命令学习系列(四)——jstat

    jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具.他可以显示本地或远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据, ...

  4. 如何打开google,facebok等网站

    用记事本打开 C:\WINDOWS\System32\drivers\etc\hosts 文件,粘贴如下蓝色内容到文件里,然后输入 例如 https://www.google.com   https: ...

  5. Visual Studio 2013中引入Web Service的简单方法visual studio 引用 wsdl

    http://blog.csdn.net/wangzhongbo_24/article/details/49954191 Web Service有三种表示方式 三种方式分别为WSDL.Endpoint ...

  6. maven与jdk版本不一致报:Unsupported major.minor version 51.0

    I recently uninstalled Java 8, to use Java 6 as I want my code/creations to be usable by more people ...

  7. IOS 多线程 NSThread

    一个正在运行的应用程序是一个进程,一个进程会默认开启一个主线程,但是在主线程中的操作是串行的,也就是当有多个任务同时需要完成的时候,是按照顺序一个个执行.因此,为了提高效率,会在进程中开启多个线程,每 ...

  8. 移动端 h5开发相关内容总结——CSS篇

    1.移动端开发视窗体的加入 h5端开发以下这段话是必须配置的 <meta name="viewport" content="width=device-width, ...

  9. IT痴汉的工作现状42-Android越用越慢?立场不同,谈何信任!

    大海和我一次闲聊中问,你做安卓这么久.能给我解释一下为什么安卓手机用半年后就变慢吗? 呃... 伟仔还真是头一次听说这么精准的半年就慢的说法. 大海继续说."能不能是厂家有益设置的?哦,也不 ...

  10. 【Spark】SparkStreaming-如何使用checkpoint

    SparkStreaming-如何使用checkpoint sparkstreaming checkpoint 默认_百度搜索 spark streaming中使用checkpoint - HarkL ...