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

Struts2+Spring2+Hibernate3配置(根据尚学堂马士兵老师的授课视频整理)

2015-01-28 11:51 387 查看
先配置Spring的application.xml:

1.扫描注解的base-package 和 设置为自动扫描

<context:component-scan base-package="com.wang.practise" />
<context:annotation-config />


2.新建jdbc.properties,内容如下:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/practise
jdbc.username=root
jdbc.password=*****
3.然后在application.xml中加载jdbc.properties中的配置

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
4.配置dataSource

<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
5.配置sessionFactory

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="annotatedClasses">
<list>
<value>com.wang.practise.model.User</value>
</list>
</property>
<!-- <property name="annotatedPackages">
<list>
<value>com.wang.practise</value>
</list> </property> -->
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.HSQLDialect
</value>
</property>
</bean>
6.配置HibernateTemplate

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
7.事务声明

<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
8.事务使用环境配置

(AOP配置)
<aop:config>
<aop:pointcut expression="execution(* com.wang.practise.service..*.*(..))"
id="pointcutpractise" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcutpractise" />
</aop:config>
9.事务使用条件配置
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="add*" />
</tx:attributes>
</tx:advice>

配置web.xml
1.声明需要加载spring的application.xml,同时若是application.xml要是没有放在
默认路径下的配置
<!-- 对Spring 容器进行实例化 --> 
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
<!-- default: /WEB-INF/applicationContext.xml -->
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value> -->
<param-value>classpath:beans.xml</param-value>
</context-param>
2.编码过滤器配置
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.OpenSessionInView的配置(为了应对代码里使用load懒加载导致session在把数据传输到jsp页面之前就关闭而设置,并且注意!!一定要配置在下一个struts过滤器前面:即下一项struts2的核心控制器)
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>

OpenSessionInView需要给参数sessionFactory传入值,所以要是application.xml中要是没把sessionFactory的id设置为
sessionFactory,那么就要在web.xml中配置OpenSessionInView时配置参数

OpenSessionInView拦截方法时,若没有在application.xml中配置事务,就认为事务是只读的,即不可去数据库更改数据 
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.<!--
定义Struts 2的核心控制器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

需要注意的是,若是action那个Java文件要是不用交给spring注入的话,在action里面关于
各种变量的命名一定要和类名只差字母的大小写,如UserManager userManager;那么里面的各项变量会自行初始化,不需要spring容器注入,此时struts.xml中如此配置
<action name="u" class="com.wang.practise.action.UserAction">
如果action也想交给spring容器注入,那么在struts.xml的配置中要写成
<action name="u" class="u">此时不能忘掉在action的开头写上@Component("u") 
@Scope("property")同时里面的变量要通过spring容器注入初始化,利用@Resource这种注解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息