做了一些小的项目,都是用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的到底有什么好处?
比如 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的到底有什么好处?
解决方案 »
- 想用java做个网站,有什么书上有介绍直接教你如何做网站的?
- 急求!!!用java写个算法怎样把薪水相同的人的名字打印出来
- 请教老手,方向开发ERP.OA.HR等企业应用系统.需要掌握Java哪些技术?
- 找不到路径怎么办
- 如何将java文件生成web service? 更高要求
- 新手小问题!大哥们快来吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
- Tapestry的Hidden传递参数时,为什么会多出来无用字符?
- JTable、TableModel和AbstractTableModel的区别?
- 请教一个log4j的问题
- 关于Weblogic初级问题
- struts2可以接收javascript给它发送请求时带的三维数组的参数吗?怎么接收?
- hibernate连接多个数据库查询
DAO:存取数据接口,Hibernate实现
Manager:主要的业务逻辑
Action:处理web请求,由spring管理
至于分几层,那是N层的!
获取dao层传递过来的数据。在这里判断struts层是用于显示的。
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的组合“强制”我们把这些过程细分为好多层,好多模块,目的也在于此。
2 建一个dao包在里面写一个UserDao.java, 再建一个daoimpl包在写一个userDaoImpl.java。 (数据库、持久层接口,模型层)
3 建一个service包里面建UserService.java ,再建一个UserServiceImpl.java 只是调用UserDao (控制器与持久层的接口,也是外部程序的调用本业务处理dao接口)
4 建一个struts包, 包里有action包和form包。在里面写相应得类。 (控制层,负责接收request的请求,传递给service层,处理后将响应结果放回到response中)
其实我们常编的代码再进行设计和重构测试后。代码的韧性会越来越好。
就比如。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 ;就行了。
还有很多需要我们去寻找。一起努力吧。
java中的分层是维护和开发方便
可以分为4层
客户端表示层:html等
服务器端表示层:Servlet、jsp(其实也是Servlet)、框架有MVC、Struts等
业务逻辑层:JavaBean、Spring、Hibernate(属于持久层、持久层也是一种逻辑)等
数据服务层:JDBC
你的Model叫实体层,不属于任何层,在各层中传递是数据的载体。。
你的dao、service(一般用JavaBean)是属于业务逻辑层
Struts就不用说了吧~~
你写个简单工厂(泛型的)
可以不用实例化你的DAO让你的工厂去创造个DAO就可以了。。
dao : 没什么好说的
service : 调用 dao 层
web : 获取客户端参数,调用 service .将返回的数据回显至 页面很多人不明白 为什么有一个 service 层.你可以把它想得简单点: 要构建 hql , sql 或 事务等.都写在此层web 层只从 service 拿数据.很多人无视 service ,直接在此层写 sql 或 hql ,这是不对的