当前位置:首页>开发>正文

关于java三层开发中的一些关系 Java中的mvc和三层结构究竟是什么关系

2023-04-18 00:27:57 互联网 未知 开发

 关于java三层开发中的一些关系 Java中的mvc和三层结构究竟是什么关系

关于java三层开发中的一些关系

BPO这个东西我不是很了解,去网上看了看貌似是说是商务流程外包.网上的解释都是一些很官方的解释,感觉和我们具体开发的业务不是很有关系.这里我就不说了。这里我主要给你讲讲bs,bsimp以及action,actionForm的关系吧
首先你要知道Action在b/s架构中充当的身份,根据MVC思想来说的话,Action在每个业务模块中充当的是一个控制器的角色.而Controller在整个系统中充当一个总的控制器.
客户端(Browser)发送一个请求,Controller会根据请求的URL来决定将该请求交给哪个Action去处理。
在这里,ActionForm的作用就体现出来了,Action层中是不会处理任何的业务逻辑的,真正的业务逻辑是交给bs层也就是业务层去处理的。但是客户端发送过来的数据如何传递给业务逻辑层呢?
就是通过ActionForm.在Action中,会将相应ActionForm中的数据封装到具体的某一个业务对象里。
实际开发当中,一般情况下一个业务对象对应一个Form表单的.
封装完业务对象之后,Action就会根据具体的请求选择调用某一个业务接口。
这时候bs就出现了。bs和bsimp主要体现的是java中面向接口的编程,也就是面向抽象的编程。
在bs包内,全都都是接口。而bsimpl包内都是各个接口的实现类。为什么会有这样的思想??
因为考虑到将来系统的扩展,以及业务层不同的实现方案,所以必须把bs设计为接口,而根据具体的需求为每个接口添加实现类.
这样在Action层就不需要知道bs接口具体是如何实现的了,他只要负责调用这个接口,而这个接口可以根据配置文件的信息,根据具体的需求去调用不同的实现类。
最后就是Dao层了。这个层是为了访问DB,进行持久化的,这一层也会用到面向接口的编程.
最后数据处理完成之后,在通过Controller选择具体的展示页面,返回给客户端Browser.
最后我给你大概画了下流程图,比价丑陋,但是应该可以看懂,希望能够帮助你,谢谢

Java中的mvc和三层结构究竟是什么关系

一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了。 
屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库和其他一些细节上的技术如何,总的来说大的框架结构都是差不多的。 
说白了,也就是mvc和三层结构。 
而mvc和三层结构究竟是什么关系,我曾在面试的过程中被人问过几次,也曾仔细的想过、查过这个问题,但是直到此时,我也还是不能完全确定。
只不过随着时间的积累,随着技术的沉淀,随着视野的拓宽,我大体上认同了两种说法,不管别人怎么看,我个人是觉得两种说法都有道理,欢迎对这个问题有不同看法的朋友一起讨论。 
三层结构是什么,是展现层、应用层、数据访问层,这个基本上是没有太大的异议的,两种看法的来源基本上都是来自对于mvc的理解。 
对于java web应用来说,不管是B/S还是C/S,大体上都可以分成服务端和客户端两部分,只不过B/S的客户端就是公用的浏览器。
基于这种大的架构,有一种对于mvc的说法就是:
m是model,也就是和数据库相关的那些,比如实体类和dao、mapper.xml等,对应着三层结构的数据访问层;
v是view,也就是前台的页面或者说是客户端展示给用户看的东西,也就是展现层;
而c就是controller以及service等具体的业务逻辑,对应着三层结构的应用层。
这种说法我觉得应该是为了对应而对应,就是要把mvc和三层结构的关系一一对应起来,因此也差不多就是一个对应一个。 
或许是经验还不够多的缘故,或许本来就是这样子,反正我是觉得这种说法正确,或者更确切的说,这是大的mvc。
那么还有一种说法可能就不是像上边这样一一对应了,大体上的说法是这样的:
我们通常所说的mvc实际上只是对应了三层结构中的展现层,也就是view而已,然后v是客户端,m是实体,c是controller。
至于三层结构中的应用层和数据访问层则是分别对应了后台代码中的service和dao。1

而对于这种说法,为什么我觉得有道理呢?是因为按照这种描述,就是和前台展示直接相关的东西都放在展现层。 
*比如controller要直接和url打交道,而很多时候返回给客户端的数据也会封装成对象的形式,经常就是model;也就是说不管是controller还是model,都实打实和用户看得到的部分相关,就划为了展现层。 
只不过在某些时候,就比如我们现在的项目中,为了进一步的实现松耦合,我们会创建一个command类,类似于实体model,然后用model操作数据库,用command和前台打交道,道理是一样的。 
而在另一方面,我们现在项目前端使用的技术是angular js,这项技术现在也说实现了前台的mvc,有controller、service,还有数据层。 
因此在这种情况下,我个人就觉得,mvc本就是一个概念,重要的是一种理解,它本身的作用只是为了实现松耦合,而不是为了mvc而mvc,未必一定要有一个唯一的答案!
欢迎有其他理解的朋友留言交流!
以下是我觉得比较好的其他理解: 
来自百度百科的说法,是否是标准?
MVC(模型Model-视图View-控制器Controller)是一种架构模式,可以用它来创建在域对象和UI表示层对象之间的区分。 
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。 
在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
这是来自百度知道的说法,是否专业?
MVC和三层架构有什么区别就是MVC是最流行的三层架构中的一种框架,就是模型-视图-控制器三者分离。 
MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 
MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox 
PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组: 
控制器(Controller)- 负责转发请求,对请求进行处理。 视图(View) - 界面设计人员进行图形界面设计。 模型(Model) 
- 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
来自来看日出的评论,我觉得有道理
无意中看到这个问题,我前段时间也想了很久,今天看到有点感触,不知道您怎么看,我一直其实有疑惑的(一个刚参加工作的新人)对于mvc的三层架构,设计理念是为了实现高内聚低耦合,您说得第一种三层结构,我觉得其实并没有达到这个低耦合的效果,因为在应用层处理业务时,并没有将真正的业务逻辑和数据库逻辑分离开来,仅仅将视图和逻辑分离开了,并没有达到低耦合的效果,个人这并不是真正的MVC。 
个人的理解,mvc应该分为5层。 
1.视图层(html/jsp/)等用户能看得到的信息,数据信息的开始和结束。 
2.控制层(servlet/action),控制层不处理任何业务(包括业务逻辑和数据库逻辑),只为控制流程,实现跳转功能,只调用service层的结果实现跳转功能,控制层的逻辑更偏向视图层,为视图层提供服务。 
3.服务层(service):专门处理业务逻辑,是控制层和DAO的中间过渡层,根据DAO层的返回结果的不同,处理不同的业务逻辑,并将结果向上返回给控制层。 
4.DAO层:专门处理各种数据库逻辑,包括对数据库的CRUD,存储过程/函数各种操作,提供访问数据库的接口,DAO层更偏向于model。 
5.数据模型层:专门封装数据原始模型(javabean/DTO),本身不提供任何对数据库的操作,只提供接口供DAO层调用数据。 从上到下依次为视图层,控制层,服务层,DAO层,数据模型层。 个人理解,新人刚入门,有错误的地方希望指出共同学习。
我对来看日出的回复如下:
实际上,我个人现在的观点是,我觉得我说的两种都有道理,而你说的这一种也有道理,只看出发点是什么,能不能说通。 
你的这种说法,应该是实际开发时的代码结构,后端通常有model、dao、service、controller,但是现在的前端,就比如我们用的angular js,实际上也分成了数据模型层、servie层、controller层、html展示层。 
因此,我的理解是,网上常见的mvc解释应该是针对之前整个系统架构比较简单的情况,而现在前后端各种架构和技术都复杂起来了,可能便不能再这样简单的对应。 
也就是说,我说的两种实际上对于现在的情况可能都不对了。 
随着工作时间的增长,我对这个问题的看法一直在变,或许就是那句“看山是山,然后看山不是山,然后看山是山”,理解性的东西,本来就会随着个人的阅历增长而变化,今天觉得对的可能明天就觉得错了。 
所以,归根结底,我觉得可以回到主题:我觉得对错不重要,重要的是能不能说通,是不是自己的理解,对也好,错也罢,能说的有理有据就够了,因为理解会变。

怎么理解JAVA中的三层结构

三层结2113构跟语言关系不大吧,都差不多。
一般5261Java的话,表示层(前端)可4102以用JSP,Flex等做,中间层用1653的是J2EE的服务器,运行在Tomcat或者JBoss上,版数据层可以用Hibernate来做。
。NET的话,前权端就是ASP,中间层用C#写。

关于Java三层架构

如果你要是实例化了 那必然结果是空的 因为你是重新new出来的对象啊,你可以把实体层你得到的值放到一个范围里,然后在DAO层得到这个范围然后再做数据库的操作。你最好是把代码发来看一下。。

如何学习Java的三层架构,作为初学者请指点一下.

开源框架用最广的是SSH。也就是struts spring hibernate。
先学struts,通常用来做控制层。
再学hibernate,也可以认为是模型。主要是操作数据库,把每个表或者视图都用一个对象对应。
spring可学,可不学。
视图的话就是你的客户端或者是网页的展示了。

不用框架也可以实现三层架构,这只是一种思想,只是有了这种思想后才发展出这些框架让大家方便开发。
比如,一个HTML页面(V),请求后台一个JAVA类X(C),JAVA类请求另一个JAVA类Y(M),Y把数据return给X,X再给HTML。PS:Y通常是操作数据库获得数据,在返回给X。

最新文章