1、增加Strut的jar包
2、增加Hibernate的jar包(需要拷贝到项目中),不用生成HibernateSessionFactory
这时候HibernateSessionFactory辅助类实际上没有作用,可以不生成,因为整合后spring已经接管了hibernate操作
3、增加spring的jar包,
增加进来的有(勾选)
spring Aop
spring Core
Spring Persistent Core
Spring Web
spring jbdc
需要拷贝到项目中
剩下的全部默认
在项目-->右键-->build path -->Configration Build path中查看
这时候Spring会在配置文件中生成
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
sessionFactory这会话连接工厂对象需要在每个DAO中注入(DAO会自动生成注入)
4、从DataBaseExploer做逆向工程,生成dao和pojo
打开Database Explore,利用Hibernate逆向工程生成pojo类和DAO类,这时候数据库连接要先连接成功
逆向工程自动生成DAO的时候,选择spring DAO(实际上就是默认值)
DAO中所有方法的名称和作用和以前是一样的,但继承的类不一样,继承自HibernateDaoSupport类,这个类是spring为hibernate操作编写的一个辅助类,HibernateDaoSupport类最大作用是帮助你打开hibernate session和关闭hibernate session
HibernateTemplate template = getHibernateTemplate();
HibernateTemplate 模板对象利用了模板模式,关闭和打开了hibernate session
这时候我们的DAO类必须要继承HibernateDaoSupport,同时也实现自己接口中规定必须方法
回到Spring配置文件中,发现我们逆向工程产生的dao类已经自动生成配置好了
<bean id="StudentDAO" class="com.sodi.dao.StudentDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"></ref>
</property>
</bean>
这个dao自动注入sessionFactory这个数据源,同时注意把id的首个字母改为小写
5、为了能够从Action类中获取Spring的对象,我们把Action改成继承ActionSupport类,
这个ActionSupport类是Spring提供的辅助类,帮助我们获得到Spring中管理的所有对象
6、为了能够在Struts中使用Spring,必须增加Spring插件在struts配置文件中
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
这时候是到WEB-INF目录下寻找applicationContext.xml
需要修改
插件添加成功ActionSupport就可以工作了
7、项目发布之后启动报错
严重: action: null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
这个错误的原因是Hibernate的jar和Spring的jar发生了冲突
把hibernate的asm2.2.3.jar从buld-path中删除,这时候如果jar不在项目中,是删除不了的,
本文介绍如何整合Struts、Spring与Hibernate框架。主要内容包括:添加必要的JAR包,进行逆向工程生成DAO和POJO类,配置Spring插件以便在Struts中使用Spring,解决部署后启动报错问题。
484

被折叠的 条评论
为什么被折叠?



