SSH的整合

本文介绍如何整合Struts、Spring与Hibernate框架。主要内容包括:添加必要的JAR包,进行逆向工程生成DAO和POJO类,配置Spring插件以便在Struts中使用Spring,解决部署后启动报错问题。

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不在项目中,是删除不了的,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值