做了一些小的项目,都是用ssh做的 不明白里面的分层
  比如 User来说每次都是建立
 1 建个model包 里面写User.java 然后写写相应的配置文件。
 2 建一个dao包在里面写一个UserDao.java, 再建一个daoimpl包在写一个userDaoImpl.java。
 3 建一个service包里面建UserService.java  ,再建一个UserServiceImpl.java   只是调用UserDao
 4 建一个struts包, 包里有action包和form包。在里面写相应得类。我这样是分了几层 ?是一些什么层?有些网上说的分五层的七层的 他们是加了什么都是起到了一些什么作用?
我的service只是调用dao的到底有什么好处?

解决方案 »

  1.   

    领域对象:hibernate映射
    DAO:存取数据接口,Hibernate实现
    Manager:主要的业务逻辑
    Action:处理web请求,由spring管理
      

  2.   

    service并不只是调用dao,service是来处理程序的业务逻辑的,Action只是得到结果,转发给相应的页面!
    至于分几层,那是N层的!
      

  3.   

    model和dao属于数据持久层说白了就是传递数据的。service是写业务逻辑的。比如说有一个功能是判断数据是否大于1.大于1就返回一个字符串。就可以写在service层。
    获取dao层传递过来的数据。在这里判断struts层是用于显示的。
      

  4.   

    分层 = 分离职责 = 细化模块粒度 = 减少耦合
    model = pojo ,即每个数据表的对象化映射,一个Model实例通常代表数据库里的一条数据
    dao = 对象化操作数据库服务,他仅仅提供数据库操作,不涉及业务逻辑,这也是需要service层的一个原因
    service = 业务逻辑服务,他向下调用dao层或是其他服务,组成一个个业务需求的解决方案,这些都是为了减小粒度,带来较高的重用度
    struts的action = 控制层 ,他负责接收请求->调用对应的一系列模块解决业务需求->再次转发分层的问题其实没必要说分那么细,简单点说这样的分层方式就是mvc,action=c,model、dao、service都是m。
    至于service要调用dao的好处,可以举个例子,比如楼主要添加一个注册用户,并将介绍此用户注册的那个用户进行修改积分的操作,就必然会涉及到要操作两次数据库的逻辑,如果楼主把这个逻辑写进dao,那么这个方法就不适合非介绍而来的用户的添加,如果将这个逻辑直接写进action,那么其他地方用到类似的逻辑,就得在action中重写一份,同样,以后这块逻辑需要修改的话,就得修改两处。最基本的数据库操作经过组合可满足n种业务需求,如果楼主把这些业务需求在dao层中实现,必然会出现n多的方法,而他们之间几乎无重用度可言。
    水平有限,只能解释成这样了。其实ssh的组合“强制”我们把这些过程细分为好多层,好多模块,目的也在于此。
      

  5.   

    1 建个model包 里面写User.java 然后写写相应的配置文件。 (数据模型,这个不是层,只不过是一个业务实体)
    2 建一个dao包在里面写一个UserDao.java, 再建一个daoimpl包在写一个userDaoImpl.java。 (数据库、持久层接口,模型层)
    3 建一个service包里面建UserService.java  ,再建一个UserServiceImpl.java  只是调用UserDao (控制器与持久层的接口,也是外部程序的调用本业务处理dao接口)
    4 建一个struts包, 包里有action包和form包。在里面写相应得类。 (控制层,负责接收request的请求,传递给service层,处理后将响应结果放回到response中)
      

  6.   

    哎,Java Web 并不是 J2EE 哦
      

  7.   

    基本分层方式和.NET没有什么区别
      

  8.   

    分层式为了排错更加方便!问题出现后,可以很快的找到问题的根源,service层是个非常重要的层,他可以进行各种逻辑思维判断,可以省去前台的一些JS脚本的判断,相比较而言,后台的判断要比前台更加保险也更加有效,东北话就是保准!
      

  9.   

    框架其实也是为了更加的来适应项目。其扩展性和重复性和伸缩性都是相当重要的。那有从哪儿能看出来呢?
    其实我们常编的代码再进行设计和重构测试后。代码的韧性会越来越好。
    就比如。public void setPin() {   if (str == 1) {} ;
       if (str == 2) {} ;
    }
    像这样一定不好。
    对于不变的常量要提出来public static final int FIRST = 1 ;
    public static final int SECOND = 2 ;
    public void setPin() {
       if (str == FIRST) {} ;
       if (str == SECOND) {} ;
    }
    这样后一个好处出来了。就是在很复杂的代码中要修改的话。只要改public static final int FIRST = 1 ;
    public static final int SECOND = 2 ;就行了。
    还有很多需要我们去寻找。一起努力吧。
      

  10.   

    你说的控制层把request的到的参数由Service处理,不知道你怎么做的?我通常是控制层接到请求的参数,把servicedao(serviceddao里有dao的注入)注入到Action中做一些业务逻辑 然后跳到一个页面。都是些自己自学的东西,虽然自己现在在工作,但是觉得好像什么都不是搞的很明白,我想知道的正规一点,这是我在csdn的第一个问题。希望大家仔细帮我解答一下。
      

  11.   


    java中的分层是维护和开发方便
      可以分为4层
         客户端表示层:html等
       服务器端表示层:Servlet、jsp(其实也是Servlet)、框架有MVC、Struts等
          业务逻辑层:JavaBean、Spring、Hibernate(属于持久层、持久层也是一种逻辑)等
          数据服务层:JDBC
      你的Model叫实体层,不属于任何层,在各层中传递是数据的载体。。
      你的dao、service(一般用JavaBean)是属于业务逻辑层
       Struts就不用说了吧~~
      

  12.   

      这里有个工厂模式的。。
       你写个简单工厂(泛型的)
       可以不用实例化你的DAO让你的工厂去创造个DAO就可以了。。
      

  13.   

    model : 没什么好说的
    dao : 没什么好说的
    service : 调用 dao 层
    web : 获取客户端参数,调用 service .将返回的数据回显至 页面很多人不明白 为什么有一个 service 层.你可以把它想得简单点: 要构建 hql , sql 或 事务等.都写在此层web 层只从 service 拿数据.很多人无视 service ,直接在此层写 sql 或 hql ,这是不对的
      

  14.   

    现在总的来说一般是分mvc划分的。但是不要为了分层而分层,分层最终目的是低耦合,不要把重点放到分层上。