前面几篇分别总结了Struts、Hibernate、Spring的学习(见《Struts2学习总结以及细枝末节》、《Hibernate学习总结》、《Spring学习总结》),这次把这几个综合起来总结一下,找一下这些东西各自的职责。不过个人感觉现在的总结还是比较肤浅的,没有实践很难有确切的体会,但学习的路程还是要记录下来的,正所谓:好记性不如烂键盘嘛。
学习路线:
网上有很多人问关于SSH(Struts Spring Hibernate的缩写)的学习顺序,其实在学习之前大概浏览一下SSH各自的内容就知道了,搜索一下Spring会发现有许多关于Spring整合Struts或者是Struts和Hibernate的内容,那么Spring肯定是要最后才学了,而关于Struts和Hibernate方面的内容就比较单纯了,先看哪个都可以,因为他俩注重不同的架构层面。
我是先学习的Struts2,内容是比较简单,是用起来也比较方便,但是最好你要懂得Servlet的原理,懂得filter原理,这样对于你理解Struts2很有帮助。
然后学习Hibernate,内容较Struts2稍微复杂一些,主要表现在其中的O/Rmapping上,把握好对象的关系和数据库中表的关系,这个我想如果对数据库表设计方面的内容掌握的比较好的话,这个就不是问题了。还有一个就是关于其原理,要想了解其原理,你需要懂得java反射,这样有助于你理解其实现,关键是可以扩宽你以后在设计DAO层时的思路。
最后学习的是Spring,单就其内容上来讲使用起来很简单,无外乎就是在使用接口的时候不需要自己去把他实例化成相应的类而已,只需要把为接口添加get和set方法,然后通过注解的方式标明,可以很轻松的使用Spring,不过如果你要了解其原理你至少需要懂得java反射以及读xml文件(通过jdom读取,或者是dom4j),另外你也需要了解设计模式,最起码是工厂方法你要懂(对于注解方式你还需要知道监听器的使用或者是原理)。这样你就可以很好的理解Spring的设计原理了。另外还有一个AOP的概念,也是需要好好揣摩一下的,你需要知道设计模式中的动态代理这一设计模式。
整体总结:
关于Spring整合Struts和Hibernate也不是那么复杂,虽然一开始接触的时候会觉得云里雾里的,不过有道是“一回生两回熟”,用它个几遍也就知道了。如果只是停留在应用层面上是比较简单的,如果要学习其设计思想那你就要下功夫了。
对于SSH整体上来总结,就对于常用的MVC架构来说:
l Struts处于C层,即控制层。控制整个页面的跳转,以及页面同服务器端之间的交互。
l Hibernate处于M层,即持久化层。主要是实现O/Rmapping这一块,提供给上层以操作数据库的接口。
l Spring是直接贯穿C层和M层,可以控制其中关于事物部分的逻辑,也可以通过注入方式是这两层中的接口的实现变得灵活。
其实Struts也在V层即视图层起到了作用,其S标签以及Ognl的使用也使得页面的实现变得容易。
XML才是王道:
其实总结这么多内容,哪一个知识点都离不开XML的支持,所以对应着文章标题中的“XML才是王道”,在网络上也有类似的标题,什么“信XML得永生”之类的字眼,不可否认XML的作用是巨大的。
从一开始学习Struts就需要设置web.xml中的拦截器,还需要配置struts.xml文件,到hibernate中的hibernate.cfg.xml,最后到beans.xml。所有内容都依赖于xml来实现。
其实这么说还有一个原因,今天下午研究了一下webservice的发布以及读取调用,发现其中的wsdl也完全是由xml组成。看来以后的学习和工作中xml将成为一道不可或缺的开胃菜呀。 - from the5fire.com