SSH最新框架整合-spring5.0.8+hibernate5.3.2+struts2.5.16(JDK9)
这几天学习了下SSH框架,(如果现在还想学SSH框架的劝退,原因呢自己百度就知道了),发现在整合的过程中出现各种问题,网上也没有比较好的整合博客,基本都是过时的博客不太适合学习(主要是框架更新较快,会发生巨大变化,也许几年后你看到这篇博客时它也已经过时了),现在记录一下我是怎么整合的,以及在整合过程中所遇到的问题,现在大家照着做基本是没有问题,因为很多坑我已经踩过了,我也会给大家一一说明的,废话少说,直接开始。
第一步就是引入jar包(最好大家和我的版本基本保持一致):
struts2包:
hibernate包(required包中):
spring包:导入spring所有的jar包(去掉资源包和文档包)
如果使用的JDK9以上需要导入另外四个jar包。
这四个jar包可以在我的博客里下载:https://blog.****.net/weixin_41660508/article/details/82591621
以及其他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会自动帮我们关闭的。