最近在学struts+spring+hibernate,想做个教务支持系统,先去网上查了查资料,做了个最简单的登陆操作,熟悉下整体结构和环境配置,期间还是遇到了不少挫折的。经过2天的奋战,终于把这个简单的登陆操作给实现了。主要的实施步骤可见上上篇帖子《struts+spring+hibernate实践》,也是从网上找来的。针对实践中遇到的问题做如下总结:
1. 在myelipse6.5环境下(其他版本的myeclipse没试过),改动java文件和配置文件,如:web.xml, strut-config.xml,applicationContext.xml,是需要重新deploy一下才能起作用的。
2. 导入spring库的时候,最好把同一个版本的库都导进来,为方便后面使用,比如对plugIn的添加:org.springframework.web.struts.ContextLoaderPlugIn。
3. 使用struts1.2+spring1.2+hibernate3.1搭配比较好,其他的版本搭配的时候会出问题,就是在使用database reverse 工程生成POJO和hbm文件的时候,会在applicationContext.xml中的sessionFactory bean里面添加一个mappingResource,就是这个hbm文件,格式如下:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/tss/beans/User.hbm.xml</value></list>
</property></bean>
红色部分就是添加POJO和hbm文件后自动加到这个bean里面的,这句会导致servlet action不可用。使用struts1.2+spring1.2+hibernate3.1就不会出现这个问题。
4. singleton属性只有在spring1.2中的bean里面才有,在spring2.0中,bean没有“singleton”这个属性,而是在“scope”中对它进行设定。“scope”可以设定为“singleton”和“prototype”默认情况下是“singleton”即和原先的“singleton=true”性质一样,如果要实现单例模式则将“scope”设定为“prototype”,即和原先版本的“singleton=false”一样。
5. 在一个bean里面,property是指这个bean对应的类里面定义的一个对象,你得在这个bean对应的那个类里面定义setter这个对象的方法,比如你在loginAction这个类里面定义了userDAO,那么你就要有setUserDAO()方法;userDAO的类型在ref种定义,格式如下:
<bean name="/login" class="com.seta.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="userDAO" />
</property>
</bean>
Ref 后可以有bean=或者local=,区别在于bean=是在这个contextapplication中搜索,local只是在本文件中搜索这个bean的定义,后者效率较高。 你也可以通过中间代理来管理对数据库的增删改查的操作, 如下:
<bean name="/login" class="com.seta.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
这个proxy的定义如下:
<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" /><!—这里调用我们自己实现的userDAO bean,对应的class是它的实现类à
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
6.
分享到:
相关推荐
DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能
简单struts+spring+hibernate搭建,配置,适合初学者
这是一个struts 1.2 + spring 2.5 + hibernate 3.2框架demo, 运行环境为eclipse 3.2 + tomcat 5.5 + oracle 11g
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
Struts+Spring+Hibernate开发实例.pdf
struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本 ,mysql,tomcat,myeclipse完整工程
必备软件 学习struts2项目struts2+spring4+hibernate 必备
Myeclipse8.5下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3
本文并不想介绍Struts,Spring,Hibernate的原理系统架构等,本文地目的是通过一个较复杂地实例介绍如何整合Struts,Spring,Hibernate,网上现有的例子虽然也能达到目的,但功能都比较单一,复杂的例子时会有...
通过简单的实例来说明SSH(Struts+Spring+Hibernate)的结合,让你对SSH有一个充分的了解。
struts+hibernate+spring 的整合框架 运行环境myeclipse+tomcat+mysql
基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh...
希望此套框架整合对深入了解和学校Struts2+Spring4+Hibernate4三大框架整合技术有帮助
基于struts+spring+hibernate的网上订餐系统 基于struts+spring+hibernate的网上订餐系统
Struts2+Spring4+Hibernate5整合
struts+spring+hibernate整合
基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于...
轻量级Java EE企业应用实战(第4版) Struts 2+Spring 4+Hibernate整合开发 光盘 源码 2014 李刚
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part1