一、做爲菜鳥,先理解java
本身理解:spring是用來實例化struts中的類 和hibernate的類web
struts用的是mvc,包括url路由器匹配等。spring
hibernate 用的是數據庫操做。數據庫
參考以下:編程
1.struts就是一個mvc的架構,在控制器,視圖和模型方面都有其特定的組件,因此咱們在SSH組合中,更多的是利用了controller這個組件。不少人感受上是利用Struts的View層,的確是這樣的,由於咱們應用了不少struts的標籤,整個頁面的工做核心仍是在表單提交給action controller的動做上,而在struts的定義中,這是屬於C這一層的。因此咱們利用的確是controller。架構
2.spring的話最主要的功能仍是它的ioc和aop,即注入依賴和麪向切面編程它也有其本身的mvc,固然你能夠用struts框架而不用spring的mvc. mvc
3.Hibernate還能夠在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任,使用Structs+Spring+Hibernate的項目主要是在web層利用了struts的mvc框架,在數據庫層用hibernate的數據庫訪問功能,app
在bean管理和服務方面利用spring的ioc和aop.框架
Spring沒法注入?
url
一、Struts中的Action必須用Spring applicationContext.xml中定義的,否者看着辦
二、文件都須要複製到WEB-INF/lib下 不然會出問題。
三、Action的name 別和Class 命名同樣,否者出問題。
四、修改java類 須要重啓下哦 親
在struts.xml中配置action的class的時候,把包名也加上去了,這樣的話struts2就不會用到spring容器,那struts2就會直接去找那個actopm而不是經過Spring的BeanFactory,也就是說bean不在控制範圍以內,固然Spring中聲名顯赫的IOC和AOP就不能用了。。結果在Service中用注入DAO的時候就失效了,拋出一個NullPointerException的異常。
解決:將struts.xml中的action的class屬性,由class名改成Spring中定義的bean名
參考:http://hi.baidu.com/herowzz/item/eba8dddfe16ee7e7795daaee
安裝方法:
spring第一位 而後是hibernate 最後struts
參考資料:http://xly3000.blog.163.com/blog/static/1324247201231163828803/
http://blog.csdn.net/wuyt2008/article/details/8218212