先配置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这种注解

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

  1. 尚学堂-马士兵-专题-正则表达式

    一.最简单的正则表达式 String类的一个方法matches. package com.string;public class RegexTest {public static void main( ...

  2. [原创 - 尚学堂科技 - 马士兵老师]

    JAVA自学之路 一:学会选择 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html] 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多 ...

  3. [转]尚学堂科技 - 马士兵老师-JAVA自学之路

    [原创 - 尚学堂科技 - 马士兵老师] JAVA自学之路 一:学会选择 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html] 为了就业,不少同 ...

  4. 马士兵老师的Java自学之路(转长篇!!)

    作者:马士兵老师 JAVA自学之路 一:学会选择为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等.那么究竟应该 ...

  5. Java高并发编程 (马士兵老师视频)笔记(一)同步器

    本篇主要总结同步器的相关例子:包括synchronized.volatile.原子变量类(AtomicXxx).CountDownLatch.ReentrantLock和ThreadLocal.还涉及 ...

  6. 2022年了Java架构师怎样进阶,马士兵老师给你答案

    苦于网络上充斥的各种java知识,多半是互相抄袭,导致很多后来者在学习java知识中味同嚼蜡,今天给大家推荐马士兵老师分享的进阶成为java架构师所必须掌握的核心知识点. 废话少说,直接上正题 1.多 ...

  7. 马士兵老师经典J2SE中的经典语录

    最近的软考内容主要为马士兵老师讲的J2SE,老师讲的不只是知识,还有学习的经验,对生活的感悟,对我们的一些忠告,所以还是很喜欢看的.下边记录了一些让我感触很深的话,随着视频的进度,我会不断更新上的. ...

  8. JAVA自学之路 [原创 - 尚学堂科技 - 马士兵老师]

    (我觉得看了之后挺不错的所以分享一下) JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3 ...

  9. MyEclipse搭建SSH(Struts2+Spring2+Hibernate3)框架项目教程

    对Struts.spring.hibernate大体上了解一遍后,就是针对这个几个框架的整合了. 怎样整合,请看以下: 第一:Struts2的jar和xml配置文件: jar包: commons-fi ...

  10. Eclipse+jetty+maven+Struts2+Spring2+Hibernate3+annotation注册系统V1.0

    来源:http://www.blogjava.net/nkjava/archive/2009/03/29/262708.html 主要是整合了开发环境,同时也有一些不足,用deploy.bat可以方便 ...

最新文章

  1. 谈谈如何学习flutter之flutter成神之路
  2. PHP跳转方法:Header() + location.href
  3. ngx_rtmp_shared模块对ngx_chain_t的操作总结
  4. 学校校车运营各项安全管理制度_学校校车接送安全管理制度(通用3篇)
  5. mysql udf http,mysql下mysql-udf-http效率测试小记
  6. 接口测试总结-值得一看哟
  7. 信号与系统在仿真中的离散化
  8. java 添加jbutton_在java中怎样在JLabel上添加JButton呢
  9. matlab入门——矩阵(运算、编辑、高维矩阵、对角矩阵)
  10. Linux服务器键盘鼠标插口,关于Linux下鼠标键盘
  11. ST188光电式传感器的应用
  12. 4TB的移动硬盘,显示只有1.63TB
  13. python中的break、continue和pass
  14. Java获取IP及归属地
  15. FTP主动模式和被动模式!
  16. Jquery找父元素,祖先,子元素,子孙,兄弟节点
  17. android 选择答题功能,Android实现简单的答题系统
  18. 门神——转转前端代码校验系统
  19. 多级放大电路的频率响应(上限截止频率FH、下限截止频率FL)
  20. Spring Batch(3)——Step控制

热门文章

  1. RF+ Appium,如何隐藏Android的键盘?
  2. Windows的隐藏分区
  3. QtCreator设置代码美化astyle之Artistic
  4. keil uvision4 汉化破解版v4.12
  5. Java复习 day_01
  6. 【NeurIPS 2019】Yoshua Bengio报告:深度学习系统从1代到2代中的基础知识
  7. Meta Learning 入门:MAML 和 Reptile
  8. 矩阵分解MF与非负矩阵分解NMF的应用
  9. 在计算机excel上怎么求sin值,Excel中使用sin函数计算的操作技巧
  10. 航空公司客户价值分析