日期:2014-05-20  浏览次数:21261 次

JAVA WEB MVC结构为什么要分那些包??
在写web程序的时候 在src目录下 要写个 com.luger.dao的包 里面都是interface(UserDao.java) 然后在com.luger.dao.impl(UserDaoImpl.java)里面写类来实现那些interface 然后再在com.luger.service(UserService.java)中写服务的类 在Action中调用Service中的类 为什么还要写个Service类呢? 希望高手赐教!! 谢谢!!!

------解决方案--------------------
这个是设计模式的内容了,分层就是要把一项功能分在不同的层当中,每个层表示一个方面,Service实现业务,DAO实现数据库操作,类似的~
------解决方案--------------------
web开发的分层结构中,标准的框架结构分如下几层:
视图层:JSP,HTML,标签,JS,CSS,AJAX,都是用于显示数据的一些技术。
控制层:用struts2时,采用web.xml中配置的FilterDispatcher;不用时采用servlet或者spring的控制层模块。
模型层:用struts2时,采用action,用于接收用户请求,调用业务层或者EJB,返回相关页面。
业务层:系统功能的真正实现,即service。完成具体的业务操作,比如将数据经过算法处理,或者调用持久化层。
持久化层:专门对数据进行持久化操作,不负责算法处理或逻辑运算,只负责增删改查。
数据层:数据的存放地,比如各种数据库。该层也能完成一些业务功能,比如使用存储过程,触发器等。

由此得出,将业务层和持久化层分开设计,好处有:
1.可以提高系统的可扩展性,增加新功能的步骤与现有模块不冲突;
2.方便查错与调试,某一层出现问题不会牵一发而动全身;
3.方便移植,数据升级只需改动持久化层,或者业务变更只需改动业务层而不影响数据库;
4.解耦,各层之间使用XML文件标明各层模块的位置,如需变动,无须程序员到场即可由使用者自行更改;
5.规范化,每一个业务功能点的实现都按照相同的结构实现,即由上述几层构成;
------解决方案--------------------
说那么复杂干嘛,简单的说,dao层封装了数据操作,但只是一般对一个表封装,而service层是实现业务逻辑,但是你的业务逻辑不可能只包含对一个表的操作吧,因此你的service实现类中可能包含,...dao,xxxdao,以实现业务逻辑
------解决方案--------------------
方便管理 ,见名知意 ,
------解决方案--------------------
cai5说的很对,方便管理,见名知意
但这也只是一方面,另一方面就是,“合作”
如果整个应用是你一个人写的,那么怎么分层随你意,只要你个人觉得合适管理,方便就可以了
但如果你是和别人合作的,那么所有参与合作的人都需要遵循“合作契约”,上述分层,分包的背后含义就是这是一个“合作契约”,满足这份契约的代码基本上是自解释的,方便合作。

探讨

还有没有其他的解释呢?

------解决方案--------------------
分工明确,条理清楚。
------解决方案--------------------
那样好维护吧~结构比较清晰
------解决方案--------------------
只是好维护,你不分包以可以
------解决方案--------------------
就像你家里为什么要分客厅,卧室,厕所一样 方便看,方便走,很简单就明确了房间的功能
当然,不分开也是没有问题的,你可以把家里所有房间打通,吃喝拉撒全在一个地方,只要你愿意...没人拦着你...