`
robinsoncrusoe
  • 浏览: 746734 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

关于J2EE中的分层

    博客分类:
  • JAVA
阅读更多
本人在用ssh做项目的时候用的分层是

action-service-dao-po


一个模块(后台用户模块,后台管理员模块,前天界面模块)用一个action控制;
一个action(DispatchAction)调用多个service;
一个service调用多个Dao;
一个Dao对应一个po

但是实现后发现action 类的方法比较臃肿,如果一个功能对应一个action ,好像action类比较多。

由于自己的java技术都是一路自学过来的,很少项目的经验。

问下在分大,中,小,型项目中,分层思想是怎样的,主要是前台页面、action、service、dao  四者之间的对应关系。。在网上找不到相关的内容,自己又想总结下,所以请教下大侠们。
问题补充
另: "一个action(DispatchAction)调用多个service", 那事务是在哪儿控制的?


事务控制可以在dao层配置  或者在service层  该可以吧

一个功能对应一个action不是很好吗,稍微大一点的系统不可能你一个人完成的哦。
不过我也讨厌它的配置文件。。
jiyanliang (初级程序员) 2009-06-18
zhxing 写道
本人在用ssh做项目的时候用的分层是

action-service-dao-po


一个模块(后台用户模块,后台管理员模块,前天界面模块)用一个action控制;
一个action(DispatchAction)调用多个service;
一个service调用多个Dao;
一个Dao对应一个po

但是实现后发现action 类的方法比较臃肿,如果一个功能对应一个action ,好像action类比较多。


问下在分大,中,小,型项目中,分层思想是怎样的,主要是前台页面、action、service、dao  四者之间的对应关系。。在网上找不到相关的内容,自己又想总结下,所以请教下大侠们。


你们采用action-service-dao-po的这种结构应该算是比较经典的结构吧.
po(pojo贫血模式)就是对数据库表及其关系的映射;
dao是对po的操作, 就是对数据库的crud等操作;
service层是写具体的业务逻辑的, 一般在这里调用dao. 看spring的书籍时一般会发现总会有service层出现. service层在Martin Fowler的一本书里面有介绍.

同ls, 一个功能调用一个action不是挺好的嘛

另: "一个action(DispatchAction)调用多个service", 那事务是在哪儿控制的?



Dony (初级程序员) 2009-06-18
struts就是这个样子,没办法,我曾经玩过一个struts的config文件,里面有几千个action,夸张吧,没办法,业务太复杂了
taga (初级程序员) 2009-06-18
我感觉加上Service层比较好,程序灵活性更好
feiyu311 (初级程序员) 2009-06-18
请参考一下这个比较经典的帖子吧
http://www.iteye.com/topic/17579
fengbaoxp (初级程序员) 2009-06-18
借宝地发个问题:

在一个EAR包中有两war包,那么能否在A.war中的利用Request.getRequestDispatcher将A的request和resepones转到B.war中的servlet或者是JSP中去处理呢?
danni505 (初级程序员) 2009-06-18
你把业务逻辑写在ACTION层里必然导致ACTION过于膨胀。

按你的说法:

action-service-dao-po


一个模块(后台用户模块,后台管理员模块,前天界面模块)用一个action控制;
一个action(DispatchAction)调用多个service;
一个service调用多个Dao;
一个Dao对应一个po

你这样,不管怎么分,你总会膨胀,也许是ACTION,也许是service。而你的DAO几乎又傻傻的把HIBERNATE又封装了一遍。
treblesoftware (初级程序员) 2009-06-18
IEstrutsActionServletActionspringmodeldaoHibernatedb
一般的开发架构是这样的,你可以好好看看!
vera_sq (初级程序员) 2009-06-19
事务当然控制在service层呀,你记住,一切逻辑功能(包括事务),都在service是编写.其实action里不是你想像的那么肿,你想想所有的逻辑功能都封在service里,action只是调就行了,充其量只能说action里的方法多点.但那有什么关系呢, 如果你觉的action里的方法太多了,你可以再根据功能再划分一些出去,都是可以的.
huangnetian (架构师) 2009-06-19
你们所用的这个组合算是经典的组合了,这个组合没有什么问题的。
其实不一定必须要一个功能就一个action的,一个action里面可以有多个方法的,比如有增删改查等等的方法,有两种实现的方法:
一,用if来判断,从页面里传一个参数过来,根据传过来的参数来判断进入到哪个功能方法中,不如传过来的是add,那你就让它进入到add的方法中。页面传的时候可以在.do后面加上?action=add这样传到action中,再根据 request.getParameter("action")取到参数,在action中判断 if(request.getParameter("action").equals("add"))就进入到add()方法中,从而来控制程序的跳转。不过我不建议用这个方法。
二,不要继承Action基类了,继承DisAction这个基类吧(好像是这个基类),继承它的话,它支持多个处理方法,只要在配置文件中配置一下method,然后从页面里传参数,.do?method=add,然后在你自己的action里面写add(HttpRequest request,HttpResponse response,......)这样的方法就行,我推荐这种方法。
如果这样做的话,就可以一个模块一个action了,一个功能对应一个action里面的一个方法。
tianyangqi (中级程序员) 2009-06-19
其实不用非得一个功能一个action,我在写SSH项目时,当功能都在一个action中能实现时,我通常通过继承DispatchAction来通过方法区分每次的功能,这样就不必写多个Action了
handonghandong (初级程序员) 2009-06-19
引用
一个action(DispatchAction)调用多个service;


一个action不应该调用多个service。你可能把业务逻辑写在action里。action通常只是验证参数是否正确,参数格式转换。 我个人觉的service与dao也不是一一对应的,service是面向功能模块来划分的,而dao是根据数据表来划分的
luckaway (初级程序员) 2009-06-19
1。action用来处理页面相关的东西,其他逻辑放到service中;action层也可以简化,你可以看看REST的东西,自己把action进行高度抽象。随着Ajax和REST的应用action会变的越来越薄的!
2。事务控制层次越高越好,放在action直接调用的service方法上;逻辑复杂时,service层中也需要更细的分层,这些层都为服务层
3。dao层,应该尽量弱化,因为spring、ibatis等实现了dao功能,可以直接在service调用他们提供的dao;事务不能放在这个层。扩展一下,现实中系统调用的资源(数据库、外部接口等)都会处于同一层,应该叫做资源层

还有一个非常重要的东西——模型,模型就是系统要处理的对象,形象一点,模型就是自然社会中的人,享受各种服务,资源,呈现各种形态

以上只是我的一点看法,系统设计的思维方式不同,系统划分的层次就不一样。
mojiedao (初级程序员) 2009-06-19
事务操作最好是在model层,或者是在service层中。
dao层主要负责的是连接DB做操作的,不要写在dao层,不便于以后系统的扩展!
具体舟事务层是写在model层,还是service就看你的系统大小和业务来决定了。
vera_sq (初级程序员) 2009-06-20
action那边只是实现的参数处理,执行顺序,结果处理

service层实现业务逻辑的具体内容,将最终结果返回给action。

至于你说的事务,当然放在service的方法中,如果service中的方法有什么错误就回滚事务,防止数据库中出现有问题的数据
zhoulei984623 (初级程序员) 2009-06-22
事务,一般都在Controller里控制
tinkingdzj (初级程序员) 2009-06-22
引用

IEstrutsActionServletActionspringmodeldaoHibernatedb

这个可真够强的!
lucky16 (初级程序员) 2009-06-24
事务是在service层管理的,可以使用DispacthAction,这样,这个
action里虽然有很多的方法,但是配置文件里的action里就会相对的少很多了。
linsongbin1 (初级程序员) 2009-06-24
其实你不要刻意去分层的 个人认为 ACTION中 有时候很难避免有service 代码的    MVC 也不是是那样完美 真的 有时候 一个很小的项目 MVC 纯是拖累
pzk417 (初级程序员) 2009-06-25
我也习惯楼主说的结构,导致我看人家把dao和sevice写到一起我看了难受。
renguistyle (初级程序员) 2009-06-25
分享到:
评论

相关推荐

    关于J2EE的相关论文

    本文将深入探讨J2EE的相关知识点,包括其核心概念、主要组件、优点以及在实际应用中的挑战。 **一、J2EE的核心概念** 1. **多层架构**:J2EE支持经典的三层架构,即表示层、业务逻辑层和数据访问层。这种分层设计...

    关于J2EE的翻译Overview of J2EE Features and Service

    这种分层设计有助于实现职责分离,提高代码的可重用性和可维护性。 2. **组件模型**:J2EE提供了多种类型的组件,如Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)。Servlet用于处理HTTP请求,JSP...

    j2ee实例 j2ee实例j2ee实例

    在J2EE实例中,你会接触到诸如Web层、业务逻辑层(Service层)和数据访问层(DAO层)的分层架构设计。Web层通常由Servlet和JSP组成,负责接收用户请求并返回响应;业务逻辑层处理业务规则和计算,常通过JavaBean或...

    J2EE分层设计

    而不是从数据库的表出发,创建DAO,再创Domain,然后Service,这实际上是对系统分层的误解。 4、系统最核心的设计就是将系统中的实体划分为领域模型。在此基础上设计数据的DAO层,并将这些活动暴露给服务层,服务层...

    软件体系架构模式在J2EE中的应用

    本文将深入探讨软件体系架构模式在J2EE(Java 2 Platform, Enterprise Edition)环境中的应用,帮助开发者理解和运用这些模式来创建高效、可扩展的企业级应用。 首先,我们了解下什么是J2EE。J2EE是Java平台的一个...

    论文研究-管道、过滤器和MVC软件体系模式在J2EE中的应用.pdf

    在深入分析《论文研究-管道、过滤器和MVC软件体系模式在J2EE中的应用.pdf》这篇文章之前,需要先理解几个核心概念:软件体系构架、管道和过滤器以及MVC模式。 软件体系构架(Software Architecture)是指软件系统的...

    开发J2EE Web应用

    在IT领域,特别是软件开发行业中,Java 2 Platform, Enterprise Edition(简称J2EE)是一个极为重要的技术框架,专门用于构建可扩展、健壮的企业级Web应用。《Designing Enterprise Applications with the Java 2 ...

    关于J2EE的基本知识

    J2EE平台的核心在于它的分层架构,包括以下主要层次: 1. **客户端层**:用户通过浏览器或桌面应用与系统交互。J2EE支持Java Applet和JavaFX等技术来创建客户端。 2. **Web层**:处理HTTP请求,负责显示静态和动态...

    j2ee面试笔试宝典

    理解J2EE的分层架构(如表现层、业务逻辑层、数据访问层)是必备的基础,同时熟悉Spring、Hibernate、MyBatis等框架的应用也是重要的考察点。 面试技术题则更注重实践能力。面试官可能会询问你关于JNDI服务、JMS...

    J2EE 架构师手册

    在本书中,你会了解到J2EE架构设计的基本原则,包括分层架构、模块化设计、服务化思想等。分层架构通常包括表现层、业务逻辑层和数据访问层,每一层都有其特定的职责,以实现松耦合和高内聚。模块化设计则允许代码按...

    j2ee期末考试题下载

    在JSP 中,sql 标签不符合分层原则,sql 语句应封装在JavaBean 或者EJB 中。控制共享资源的并发访问,需要用到Java 关键字synchronized。 session 的标志符可能存放在cookie 和URL 中。在JSP 中, tag 文件中,用...

    J2EE完全参考手册-J2EE概述-pdf

    J2EE 概述中包含以下几个关键部分: 1. **J2EE 架构**:J2EE 平台基于组件模型,分为多个层次,包括客户端层、Web 层、业务逻辑层(也称为企业 Bean 层)和数据访问层。这种分层设计有助于代码复用、模块化开发以及...

    J2EE完全参考手册-J2EE概述PDF

    J2EE架构基于分层模型,通常包括以下层次: 1. **客户端层**:用户通过浏览器或桌面应用程序与系统交互。 2. **Web层**:包含Servlet和JSP(JavaServer Pages),负责处理HTTP请求,动态生成HTML页面。 3. **业务...

    j2ee架构的读书报告

    - **系统架构设计**:描述了MVC如何在J2EE架构中被组织和分层,以及如何利用J2EE组件如Servlet、JSP和EJB来实现各部分。 - **组件间的交互**:详细解释了模型、视图和控制器之间的通信机制,包括请求处理流程、...

    J2EE SSH 架构经典结合

    J2ee Struts,Spring Framework,Hibernate 经典结合,项目源码。控制层、数据层、业务层分层 架构经典搭配,学习、研究的好东西。

    J2EE课程大全,学j2ee的好东东

    EJB是J2EE中用于业务逻辑处理的服务器端组件,分为Session Beans(会话Bean)和Entity Beans(实体Bean)。Session Beans负责处理短暂的业务逻辑,而Entity Beans则与数据库中的持久数据进行交互。此外,Message-...

    J2EE中的设计模式

    #### 二、J2EE架构分层 J2EE架构被划分为五层: 1. **客户层**:负责客户端与应用的交互,主要由浏览器等客户端工具组成。 2. **表示层**:处理用户界面逻辑,包括接收客户端请求、处理会话及向客户端发送响应。 3...

    J2EE规范(全面简介)

    J2EE 规范的核心思想是将应用程序分层,包括客户层、Web 层、业务逻辑层和企业信息系统层,每个层次都有其特定的组件和接口。J2EE 规范的主要目的是为了解决传统的两层模式(client/server)的弊端,提高应用程序的...

    J2EE 核心模式,J2EE教程

    1. **分层架构模式**:J2EE应用通常采用三层架构,包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。表现层负责与用户交互,业务逻辑层处理业务规则,数据...

Global site tag (gtag.js) - Google Analytics