我是一个大学还没毕业的编程菜鸟,老师让我们写一个OMS的项目……今天在controller的划分上跟老师说的有点偏差,或许我的理解进入了一个误区,求大神指点。我的理解是:controller是在web层控制页面的跳转,那controller的划分应该按照页面来。当然按一个页面一个controller来划分肯定不行,这样肯定会有很多重复的代码,那这样的话,我就是按照页面的功能划分的。老师今天说按照数据库的表来划分,对一个表的操作都分到一个controller里。我想了下老师的说法,我觉得我不能理解。我觉得既然我们划分了web层,service层,持久层,那我们在web层就应该不用管数据库的什么事,更何况controller负责的是页面跳转,我们为什么要按照数据库的表来划分呢?再说回来,如果我们按照数据库表来划分,那有的操作不是对一个表的操作,我们又应该将这些操作放在那里呢?求大神指点下,controller的怎么划分才更加合理……javawebcontrollerspring mvc

解决方案 »

  1.   

    controller在三层架构里面应该就属于action层
    现在很流行的三层架构就是
    action
    service
    dao层
    你可以这么理解。
    controller就属于一个工厂的厂长级别的,
    service属于车间主任级别的
    dao层就是小职工,干实际工作的。
      

  2.   

    楼主, controller这个怎么划分没有硬性要求吧,他是一个控制层,说白了就是起到一个页面与后台代码的交互的作用。你说的 和你老师说的 都是站在自己设计的角度。都没有错。我认为按你老师说的更好点,肯能将来某个人看老代码的时候,更容易懂点。
      

  3.   

    所谓按照数据库的表来划分,并不是要让数据库来决定Controller的划分,而是说数据库的一个表一般来说对应以个整块的业务逻辑(当然这是一般情况),所以按照数据库来划分是一种相对比较常用的做法而已。
      

  4.   

    你俩说的都没错,Controller就是按照业务逻辑来对应的,而不是单纯的数据库的一张表
      

  5.   

    我同意楼主的观点,如果按照数据库表划分,这应该是model层来映射的,controler应该是对应view和衔接model层的;其实,这个问题也困扰我很久了,页面的渲染可能需要组合多个model
      

  6.   

    +1看表对业务逻辑的划分是不是切合controller划分的粒度
      

  7.   

    controller也分input controller和business controller,传统mvc的c应该是input controller,所以他的划分标准应该是和view对应的,因为页面渲染的要求可能需要一个input controller组织多个business controllder