问一个web开发的基础性问题 关于结构分层的

问题描述

我是刚开始学java web 开发,我看了很多项目,很不明白为什么分这么多层.例如一个项目采用struct 有:1.实体类:2 Action类:3.DAO类4service类。5jsp.请问为什么这样分啊,把这些都放在一块是个坏主意,可是我不能理解的是:service,我觉得省掉service会更简单些,而且为什么DAO,service,真正起作用的类都要实现一个借口呢?使用它们的时候都是声明接口类,然后再注入它们,为什么不直接使用呢,疑惑中。。。

解决方案

这个问题很好解释,当初我也是不明白,但是后来遇到实际情况就明白了。DAO只负责数据库的操作接口。而service平常的时候只是和dao是类似的方法。那么service的真正含义是什么呢?讲的官方点,service就是做业务逻辑的,就普通点service对dao的数据进行一些处理。我们的jsp属于现实逻辑,把数据传入action,而action再好的结构中应该不会有太多的业务逻辑,而只是把数据直接转入service,而这些数据并不是我们数据库能直接存取的,怎么办,通过逻辑算法进行计算后者转换。这样jsp只负责显示,而action只负责跟view层的数据交换,而dao层只要根据特定表生成特定的增删改查接口。一些比较烦人的复杂的业务逻辑都放在service中了。你没有感觉到service重要,因为你根本就没有什么业务逻辑,你仅仅是把数据库的数据提取出来直接就能通过action传给页面,加入你提取的数据并不是你页面能够直接显示的呢?遇到的时候你可以再回头想这个问题。
解决方案二:
我了个擦,这也太积极了吧。。。
解决方案三:
1 建议仔细读一遍《java与模式》2 请问为什么这样分啊? 因为他们的职责不同,使命不同3 要实现一个借口呢?依赖倒转原则 dip强调针对接口编程 dao service这些对象的 经过仔细设计后,接口是非常稳定的,有了稳定的接口,当面对变化的时候,就可以 用最少最小的改动适应新的需求 。例如。dao 如果接口稳定,oracle一种是实现 db2 一种实现,mysql一种实现,非常方便
解决方案四:
永远针对接口编程,这样可以调用方和被调用方独立变化、替换等。看看《设计模式》就明了。DAO层在一种情况下可以不用,那就是业务逻辑除了数据库操作,没有太多其他的东西了。Rod Johnson 的 《Professional Java Development with the Spring Framework》:引用We recommend using the DAO pattern to separate business logic from the persistence code. The exception to this rule is when the application's business logic consists of data access operations and not much else. In this case it makes sense to include the data access code in the business operations themselves.
解决方案五:
我一开始也不理解,但是跟着项目组开发一段时间后就慢慢明白了,这个问题会随着你经验的不断积累自然而然解决的,不必担心,上面两位大哥的回答都很专业,很官方,一定要结合实际项目去理解,祝你成功
解决方案六:
MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。为什么使用MVC: 大部分 Web 应用程序都是用过程化语言来创建的。它们通常将数据层(例如查询数据操作)代码和表现层代码混在一起。经验比较丰富的开发者会将数据从表现层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。 而 MVC 框架则从根本上强制性的将它们分开。尽管构造 MVC 架构的应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。 首先,MVC 框架最重要的特性之一就是多个视图能共享一个模型,正如之前所提及的,现在需要用越来越多的方式来访问同一个数据源。对此,其中一个解决之道是使用 MVC 的方式来组织代码,无论用户想通过何种渠道或界面来访问数据,只需要用一个模型就能处理它们。由于现在已经将数据和业务规则从表现层分开,所以可以实现最大化的重用代码。另外,由于模型返回的数据没有进行格式化,所以同样的数据能被不同界面使用。例如,很多数据可能用 A 方式来表现,但是它们也有可能会用 B 方式或 C 方式来表现。 模型也有状态管理和数据持久性处理的功能,例如,从服务器端请求的数据和用户的操作数据将在始终保存在程序内,直到该程序的生命周期结束。因为模型与控制器和视图分离,所以很容易改变应用程序的数据层和业务规则。如果我们改变了获取后台数据的方式,只需改变相应的模型即可。一旦我们正确的实现了模型,不管数据来自何方,视图将会正确的显示它们。 由于运用 MVC 的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想能构建良好的松偶合的组件,增大复用可能。对我们来说,控制器的也提供了一个额外好处,就是可以使用控制器来连接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器就可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。

时间: 2024-10-03 10:16:39

问一个web开发的基础性问题 关于结构分层的的相关文章

分享一个web开发人员做的SEO小抄

当我第一次开始seo工作的时候,我是作为一个没有毕业的实习生进入一家seo企业公司,我是作为一个web开发人员进入这家公司,当然对我来说完全编写代码,我的经验非常有限,我需要花更多的时间和努力来扩充我的知识. 更加具体点说,我的工作是配合seo技术实现商业实践,这对我来说更是一个挑战,对于seo技术我没有任何概念,所以我更需要花几周的时间对seo的一些基础理论知识继续拧拉结,在我每学一个知识和概念的时候我都都会做一个备忘录,里面好汉了定义,包含了一些代码片段,今天看到之前自己所做的一些小抄,觉得

php-求问一个web文件下载问题

问题描述 求问一个web文件下载问题 自己制作的web网页下载文件时,其他功能都不能实现,只有等下载完成才能点击其他界面实现其他功能.php代码,怎么解决这个问题,谢谢各位大神 解决方案 在下载过程当中主线程被阻塞了,只有在下载完成后开能进行其他操作.你可以创建一个子线程来完成下载功能. 推荐去看看阻塞,非阻塞,同步,异步这方面的知识.

问一个web在tomcat中的servlet简单问题,刚学servlet编译一个文件通不过

问题描述 问一个web在tomcat中的servlet简单问题,刚学servlet编译一个文件通不过 在我tomcat中运行后 打开自己编写的一个HelloServlet文件打不开.怎么解决好? 错误500 type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception ja

Opa 0.9.0 (S4), build 1309发布 一个Web开发平台

OPA是一个Web开发平台.它是由一种编程语言.http://www.aliyun.com/zixun/aggregation/17117.html">Web服务器.数据库和分布式执行引擎来紧密构成的. Opa 0.9.0 (S4), build 1309该版本是个稳定版本,重新设计了语法和MongoDB的广泛支持. 软件信息:http://opalang.org/ 下载地址: Linux self-extracting :http://download.opalang.org/linux

初学者问一个关于c中二级指针与结构体的问题

问题描述 初学者问一个关于c中二级指针与结构体的问题 #include #include typedef struct node{ int num; char ch; }NODE; int main(void){ int n,i; NODE F; printf("input n:"); scanf("%d",&n); F=(NODE)malloc(n*sizeof(NODE*)); printf("input num and ch:");

在用VS2010和SQL做一个web开发,求指导解答

问题描述 小弟在做一个GIS设计与实验的结课系统设计实施目前有些问题,求各位大神指导本人纯属第一次自己搞一个什么东西,完全的菜鸟若问题过于低端请谅解首先我的想法是先有一个登录界面,与数据库连接的,验证用户与密码成功后进入主页面主页面中具备的功能就是通过一些下拉选项来选定查询一些数据,并且也是连接数据库的,从数据库中导出相应数据,并在网页的相应位置显示出来再设置一个分析按钮,点击后通过一些算法分析出数据的优良水平等,在网页中显示现在有如下问题:1.不懂得两个用VS2010连接sql数据库的asp.

要成为Web开发大师,你必须知道这7件事

曾经是这样的,懂点编码,并可以偶尔耍点酷,那么你就会被认为是一个Web开发大师.但是现在,情况再也不是这样的了.Web开发已经朝着主流方向发展,开发人员数量显著增加.要成为Web开发大师,你必须知道这7件事 这意味着,如果你想成为这个领域的大师,那么你需要比竞争对手更优秀.知识更渊博.更有能力.有些人可能会想,那么应该怎么办呢?好问题--我们将在这篇文章中探索一二. 1.你需要更深入 现在,不管是谁,只要能够连上互联网,就可以学习如何编码(有各种视频学习渠道).但是,你需要比他们知道得更多.这意

成为Web开发大师你必须知道的7件事情

曾经是这样的,懂点编码,并可以偶尔耍点酷,那么你就会被认为是一个Web开发大师.但是现在,情况再也不是这样的了.Web开发已经朝着主流方向发展,开发人员数量显著增加. 这意味着,如果你想成为这个领域的大师,那么你需要比竞争对手更优秀.知识更渊博.更有能力.有些人可能会想,那么应该怎么办呢?好问题--我们将在这篇文章中探索一二. 1.你需要更深入 现在,不管是谁,只要能够连上互联网,就可以学习如何编码(有各种视频学习渠道).但是,你需要比他们知道得更多.这意味着你得枕戈待旦.你需要不断地磨练你的技

sdk-问一个Android开发的环境安装问题!求解!

问题描述 问一个Android开发的环境安装问题!求解! 我安装Android SDK点击SDK Manager.exe之后这个界面不是有很多的包可以安装吗?怎么我的这个就是这么点希望大神帮我下! 解决方案 参考下这个, http://jingyan.baidu.com/article/b0b63dbfd0948c4a483070ea.html 因为现在国内连不上google了... 解决方案二: 参考下这个, http://jingyan.baidu.com/article/b0b63dbfd