上一篇转载文章介绍了一下SSH的优缺点和和运作模式,自己看着挺好就收藏了。
这篇通过一个小案例深入理解SSH是怎么运作的,其框架之间,组件之间是怎么联系在一起的。这篇可能比较长,请耐心看,纯手打。
1、案例介绍
案例的工程目录,采用myeclipse开发,其实IDE都一样,本文重在理解原理
对于分析一个SSH项目,常用的分析方式是从struts.xml文件出发,按照,action->service->dao的模式进行,每个action对应一个处理类,一般按照这个套路进行阅读大型项目源码和开发项目。
这个案例很简单,是ssh框架的最基本的案例,这里只通过一个功能分析ssh运作原理,功能:插入一条数据到数据库中。
2、代码预览
3、从struts.xml开始
只有两个action,其中一个base action是通用父类action,只看testAction,由class找到testAction所在路径和具体的实现代码,这里没有test的路径,采用了spring 的ioc,在applicationContext.xml中去找。
程序从execute()执行,通过this.getAllService调用业务层的代码。
new 一个需要插入的对象,对对象进行set值,将带值的对象保存入数据库中,这里通过dao层进行调用save()实现数据库的操作。
save()方法由sessionFactory调用产生session,调用session的方法对数据库进行操作。
其中sessionFactory通过spring的IOC进行加载,
通过数据源dataSource进行数据的连接操作,
其中的sessionFactory调用hibernate的cfg.xml进行加载相对应的hbm.xml映射文件
通过映射文件实现和数据的一一对应。以上便是整个SSH框架的调用过程。我们来用流程图来总结一下,只管的理解其原理。
【突然发现流程图我想不到用什么软件来绘制,下次再补上,程序猿的惰性又来了】
【总结】
对应JAVAEE的项目最好按照之前说的,由action--service--dao ,其中需要用的持久层的映射文件在hibernate的cfg文件中<mapping/>,对应的action在struts.xml中找,所有使用到的文件类,均用appclication.xml,利用spring的IOC进行装载。