SSH最新框架整合-spring5.0.8+hibernate5.3.2+struts2.5.16(JDK9)
這幾天學習了下SSH框架,(如果現在還想學SSH框架的勸退,原因呢自己百度就知道了),發現在整合的過程中出現各種問題,網上也沒有比較好的整合部落格,基本都是過時的部落格不太適合學習(主要是框架更新較快,會發生巨大變化,也許幾年後你看到這篇部落格時它也已經過時了),現在記錄一下我是怎麼整合的,以及在整合過程中所遇到的問題,現在大家照著做基本是沒有問題,因為很多坑我已經踩過了,我也會給大家一一說明的,廢話少說,直接開始。
第一步就是引入jar包(最好大家和我的版本基本保持一致):
struts2包:
hibernate包(required包中):
spring包:匯入spring所有的jar包(去掉資源包和文件包)
如果使用的JDK9以上需要匯入另外四個jar包。
以及其他jar包:
下面是整合後所有的jar包,大家可以看看有沒有遺漏的。
注意如果缺少jar包就百度下載,千萬不能缺少!!!
下面就是配置檔案了,首先配置web.xml:
接下來配置struts.xml檔案:
最後配置applicationContext.xml
大家自主配置開啟事務的配置吧,百度一下就知道了。
再說一下我遇到的問題:
採用SSH框架後,hibernate的getCurrentSession就不能使用了,dao層需要繼承HibernateDaoSupport並在類上加上@Transactional
獲取session可以使用:Session session=getHibernateTemplate().getSessionFactory().openSession();或者Session session=getHibernateTemplate().getSessionFactory().getCurrentSession();
dao的bean層需要注入sessionFactory:
記住使用SSH框架後dao千萬不要使用new來建立,不然會出現空指標,無法注入sessionFactory;
如果遇到其他問題可以百度解決。按照我這有配置的基本沒有問題,再者就是編碼問題了。
我打算以後在這篇部落格長期更新,將自己踩過的坑,有價值的問題給大家列出來,供大家參考。
剛剛遇到一個問題,可能是自己粗心的原因,在整合專案時有些地方沒改,導致出現一些難以發現的bug,那麼簡單的說一下:
在使用Session session=getHibernateTemplate().getSessionFactory().openSession();的時候一定要加上session.close()關閉session不然專案會出現一個難以發現的bug。
在使用Session session=getHibernateTemplate().getSessionFactory().getCurrentSession();的時候是不能加session.close()的,spring會自動幫我們關閉的。