传智播客-spring2.5(5)-struts、spring、hibernate集成

本文介绍如何整合Spring2.5、Hibernate3.3及Struts1.3.8三个框架,包括所需的基础jar包清单,以及配置文件的具体设置,如Spring与Hibernate的整合配置、使用二级缓存等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于jar包
运用框架开发的时候,首先要做的事之一(最最首先要做的事是你得明白你要做什么,要用到什么样的框架--所谓的技术选型??)就是“搜刮”jar包。就好比当你想使用一件工具做某件事情时,你得先把这工具拿到手上再说。下面列出的是整合Spring2.5+Hibernate3.3+Struts1.3.8的基本jar包。
(1)hibernate核心安装包下的:
hibernate3.jar、lib/required/*.jar、lib/optional/ehcache-1.2.3.jar。
(2)hibernate 注解安装包下的:
lib/test/slf4j-log4j12.jar。
(3)Spring安装包下的:
dist/spring.jar、dist/modules/spring-webmvc-struts.jar、lib/jakarta-commons/commons-logging.jar、commons-dbcp.jar、commons-pool.jar、lib/aspectj/aspectjweaver.jar、aspectjrt.jar、lib/cglib/cglib-nodep-2.1_3.jar、lib/j2ee/common-annotations.jar、lib/log4j/log4j-1.2.15.jar
(3)Struts:
下载struts-1.3.8-lib.zip,需要使用到解压目录下的所有jar包由于,建议把jstl-1.0.2.jar和standard-1.0.2.jar更换为1.1版本。Spring中已经存在一个antlr-2.7.6.jar,所以把struts中的antlr-2.7.2.jar删除,避免jar冲突。

当然,最后别忘了还有数据库驱动jar。

NOTE:
(1)如果要用到spring和hibernate的注解功能(现在的新项目一般都会用到),建项目时别忘了将jdk版本选为1.5或更高版本,因为jdk5才开始加入的注解功能。
(2)新建一个项目时,不要急于开发程序,要先保证环境是可正确运行的。这样既便于确认调试,也不至于开发到一半或尾声时发现环境有问题而导致前功尽弃。具体说来,就是每搭好一个框架环境以后,应该先测试一下,以保证能运行通过。再开始整合下一个框架环境。

整合Spring2.5和Hibernate3.3
下面是整合Spring和Hibernate时,配置文件需要配置的内容:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
。。。(略)
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>cn/itcast/bean/Person.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=false
<!-- 下面是添加hibernate二级缓存的内容 -->
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=false
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
</value>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />


当然要使用hibernate的二级缓存就要在bean配置文件中也加入相关配置项:
<hibernate-mapping package="cn.itcast.bean">
<class name="Person" table="person">
<!--下面是针对person实体运用二级缓存的相关配置项 usage说明了缓存的策略,region指定缓存的区域名 -->
<cache usage="read-write" region="cn.itcast.bean.Person" />
<id name="id">
<generator class="native" />
</id>
<property name="name" length="10" not-null="true" />
</class>
</hibernate-mapping>

当然,也别忘了二级缓存供应商的配置文件:Ehcache(当然还有其他供应商的)默认的配置文件ehcache.xml--放在类路径下。

整合Struts1.3.8
(1)在web容器中实例化spring容器:
<!-- 指定spring的配置文件,默认从web根目录寻找配置文件,我们可以通过spring提供的classpath:前缀指定从类路径下寻找 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<!-- 对Spring容器进行实例化 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

(2)在web容器中配置struts:就像单独搭建struts开发环境那样配置就好了。

(3)如果action没有交给spring管理时,我们通过下面语句获取spring容器实例:
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());

如果把action交给spring管理,我们可以使用依赖注入在action中注入业务层的bean。不过要确保action的path属性值与bean的名称相同。
Struts 配置:<action path="/person/list" ...>...</action>
Spring 配置:<bean name="/person/list" class="cn.itcast.web.action.PersonAction"/>

在struts配置文件中添加进spring的请求控制器,该控制器会先根据action的path属性值到spring容器中寻找跟该属性值同名的bean。如果寻找到即使用该bean处理用户请求:
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>

还可以使用spring解决struts1.3乱码问题和解决hibernate因session关闭导致的延迟加载例外问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值