您的位置:首页 > 编程语言 > Java开发

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

2010-01-23 10:20 507 查看
这是传说中的黎活明老师的课程,该课程网上有免费视频下载。之前提到的巴巴运动网项目就是黎活明老师一个人一手开发的(巴巴运动网在线首页),以前是传智播客的必授课程,现在改为Android开发课程,还是黎老师授课。Android开发课程视频因为考虑到学员就业竞争力和培训机构之间竞争力的问题,暂不对外公布,想学习Android 3G开发的话欢迎来传智播客亲自聆听,而且传智播客现在特别推出了为期一周的Android 3G项目课程

(插播一段广告:本人前文提到的《struts2权威指南》的作者李刚,即将加入传智播客--现在也许已经加入了,成为传智播客广州分校的领军人物!李刚老师曾经任职新东方,看来传智播客的号召力与日俱增呀~)

关于spring的更多知识,欢迎来传智播客亲自聆听:)

关于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关闭导致的延迟加载例外问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: