最近的小学期实践一直是跟着老师敲代码,起初都不知道自己做的是什么,后来自己Google了一下,查阅了一些相关的资料,以及结合了最近在做的这个小demo,也算是初步地了解和接触了java主要的三大框架ssh。
在我们这个写的小demo中,struts文件是作为控制器(作为中间的桥梁),接收前端的请求,对应jsp目录下的custInfo和custSave
而struts中的class对应的后台服务applicationContext
比如我们如果要做的是保存操作,那么struts文件中name=”saveCust”对应custSave中的<s:form action=”saveCust”…>,这些是前端的操作,然后到applicationContext中的路径com.crm.action.CustSaveAction去进行操作,new一个service对象,然后service来调用dao,实现对数据库的访问和操作。
这几天老师也一直强调,Hibernate主要是对象关系映射框架,就是实体实例与数据库记录之间的映射,因此如果做得项目不是很复杂的话,基本上是不需要知道数据库的具体细节了。
另外service是调用dao,而dao是访问数据库的访问,在我们这个项目中,CustDao是一个接口,写了一些访问数据库的方法,CustDaoImpl是实现了CustDao
然后在CustServiceImpl中是new了一个CustDao的对象来调用dao的方法。但是后来在网上也查了一些资料,这么写貌似是不规范的,service是业务层,不应该有具体对象,最多是引用,不然就是耦合了。
自己总结了一下:
dao(Data Access object)(接口):数据访问对象层,和数据库打交道,和其连接,完成增删查改
impl :实现了dao接口
service(接口):业务层。处理业务流程
service.impl:实现了service接口,service调用dao
前端页面的请求,即jsp中的action和struts的name对应。
请求通过struts控制器和后端也对应起来,其class和applicationContext中的id对应,然后根据后面的路径具体调用相应的xxxxaction,xxxaction其中的service调用dao中的方法。
而具体实现类CustDaoImpl继承了HibernateDaoSupport(网上的资料写的是这种方法不怎么常用,因为继承会造成耦合度较高),同时又实现了接口dao。