关于spring controller层的设计

问题描述

最近在做一个关于相册网站的项目,由于本人经验严重欠缺,需要各位大侠帮助一下。项目是基于Springmvc+ibatis+velocity的。项目大概划分为Dao层、Servic层、Domain层、Controller层等几个大层。比如Service层里有PhotoDao,AlbumDao等。Service层里面有PhotoService、AlbumService等。把各个Dao注入到相应Service层里。各个Controller里注入相应Service。比如说我要上传一张图片,将图片保存到文件系统,然后相应路径保存到数据库。这个时候我写一个AddPhotoController。它调用PhotoService里的savePhotoToDisk()方法和insertPhoto()方法。其它的删除和修改对应相应的Controller。问题是我们的老师说这样controller会很多,很乱。他的建议是写一个总的controller。然后根据参数调用Bussiness层里的方法进行转发处理。我需要增加一个Bussiness层吗?它的好处和坏处又是什么?请各位指教。谢谢。

解决方案

解决方案二:
1.你们老师纯属胡扯,他水平差远了。controller和strutsaction都一样,本来已经是通过转发才能处理请求的了,你这再来转发有什么必要吗?是不是还要多来几层转发呢,完全没必要。2.Service层就是Bussiness层了,也就是业务层。不用再来一层。按照你们老师的逻辑,再分100层都不够用。3.如果再加Bussiness层,是不是会有很多Bussiness文件呢,这和有很多controller不是一样的吗?不能起到任何作用。4.而且你从几种controller的使用方式上就能看出,controller就是处理各中页面请求的。比如Controller处理简单页面请求,无参数或者简单参数。SimpleFormController处理简单的表单提交页面的请求。你们老师就知道狗屁的转发,页面控制他考虑过吗?写spring的人比你们老师起码要强多了吧
解决方案三:
该回复于2011-02-18 10:47:05被版主删除
解决方案四:
Bussiness就是service业务处理层
解决方案五:
PhotoController这是ACRION还是什么?action本身就是一个Control层级的东西。你可以写一个dipatchaction然后写4个方法addupdatedeleteview分别实现相应功能不需要每个功能区写一个action的
解决方案六:
为了软件的后期的更好维护,最后要写一个公共的接口,这样以后以后逻辑中只简单的调用接口的方法名就好,即使实现接口的逻辑改变,只需修改那一小部分就可以了
解决方案七:
其实我倒是觉得,你们老师给的建议还是不错的。这不是1楼所有的那么没有道理,web层上增加一个业务层并没有多大关系,主要是封装的合理,易懂就是好的。因为原来自己的思路是一个操作一个controller,这样做显然会有很多的controller,可以通过增加biss层,用来对web层做业务的包装,例如把某个业务的增删改查等的方法放在一个contrller,通过不同的请求参数(type)来选择具体方法。这样的层次感是很优秀的。然而楼上一定要说biss就是ser层的,没有人这样说过,业务可以细分,看你脑袋了。

时间: 2025-01-20 13:13:35

关于spring controller层的设计的相关文章

Spring DAO层的设计思想

近几年持久化技术领域异常喧嚣,各种框架雨后春笋般地冒出,Sun也连接不断地颁布几个持久化规范.Spring对多个持久化技术提供了集成的支持,包括Hibernate.iBatis.JDO.JPA.TopLink,此外,还通过Spring JDBC框架对JDBC API进行简化.Spring面向DAO制定了一个通用的异常体系,屏蔽具体持久化技术的异常,使业务层和具体的持久化技术达到解耦.此外,Spring提供了模板类简化各种持久化技术的使用.通用的异常体系及模板类是Spring整合各种五花八门持久化

简化Spring(3) Controller层

Struts与Webwork的扇子请跳过本篇. MVC不就是把M.V.C分开么?至唯物朴素的做法是两个JSP一个负责View,一个负责Controller,再加一个负责Model的Java Bean,已经可以工作得很好,那时候一切都很简单. 而现在为了一些不是本质的功能,冒出这么多非标准的Web框架,实在让人一阵郁闷.像Ruby On Rails那样简捷开发,可用可不用,而且没有太多的限制需要学习的,比如Webwork这型还可以考虑.但像Struts那样越用框架越麻烦,或者像Tapestry那样

spring 基于aop 实现日志输出 定义在controller层无效

问题描述 spring 基于aop 实现日志输出 定义在controller层无效 如题,具体详情还请各位高抬贵手猛搓下方连接(并非偷懒而是之前就在segmentfault发了问题,而且贴了代码,感觉给个地址更方便.)segmentfault传送门 解决方案 spring的AOP实现日志输出

mysql-spring mvc事物配置 如何将事物配在controller层

问题描述 spring mvc事物配置 如何将事物配在controller层 大神们,有谁知道如何将spring mvc的事物配置在controller层吗?我现在的一些插入逻辑写在了controller层.可是事物不起作用,谁能帮帮我啊 解决方案 将事务配置定义在Spring MVC的应用上下文(*-servlet.xml)中,将@Transactional注解打在Controller上 解决方案二: 最好不要在controller中写逻辑,写在service层用@Transactional注

2013/11/22工作随笔-缓存是放在Model层还是放在Controller层

web网站的典型代码框架就是MVC架构,Model层负责数据获取,Controller层负责逻辑控制,View层则负责展示. 一般数据获取是去mysql中获取数据 但是这里有个问题,我们不会每次请求都去mysql中获取,当并发量大的时候,我们希望mysql前面有层缓存做着. 这层缓存可能是redis,memcache,File等,但是这个逻辑代码是放在Controller中好还是Model中好呢? 放在Controller中: 好处:可以单个Controller进行控制,每个controller

autowired-SpringMVC+Spring Controller自动装配失败

问题描述 SpringMVC+Spring Controller自动装配失败 使用SpringMVC+Hibernate+Spring做demo练习,但是启动时报错,说是Controller里依赖的LoginService无法自动装配. 我自己写了个Main类做测试,Dao和Service都是可以自动装配的,唯独Controller不可以,网上看了好多类似的问题,但是也没有解决我的问题,希望哪位高手能帮我解答下,谢谢. 启动时报错: 严重: StandardWrapper.Throwable o

Java Spring Controller 获取请求参数的几种方法详解_java

Java Spring Controller 获取请求参数的几种方法  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/x-www-form-urlencoded",可用post提交        url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&pas

jsp-怎么把service层的一个model类型的数组通过controller层传递给一个JSP并显示出来

问题描述 怎么把service层的一个model类型的数组通过controller层传递给一个JSP并显示出来 如题,我的controller里的函数是: @RequestMapping("/storelogin.do")//查询到请求映射规则 public String Swelcome(@RequestParam(value="dsid")String did,@RequestParam(value="dsps")String dsps,Mo

Winform开发框架之数据访问层的设计

我在前面几篇介绍过我的Winform开发框架的相关内容,其中主要集中在界面展现以及各层的总体设计上,还没有空来得及深入进行各个重要细节的讲解,今天我们来介绍.讨论下我的Winform开发框架之数据访问层的设计方面的知识,希望对大家有所帮助. 前面介绍过,该Winform开发框架支持多种数据库的访问,只需要对配置进行修改即可切换,如下图所示.   其中我们可以看到,里面有几种数据访问层的相关数据,大致知道是通过同一的IDAL数据访问层接口派生出几个对应不同数据库的操作层,由业务逻辑层BLL进行相应