基于Myeclipse的三大框架(SSH)整合
文中主要基于Myeclipse进行配置,配置流程为:Hibernate --> Spring --> 整合 --> struts2 -->整合。注意:在此文中,主要讲述基于注解方式配置Bean。
在配置三大部件时,都需要导入各自的jar包。基于Myeclipse,可右击“项目”,点击“Myeclipse”,找到“Project Facets[Capabilities]”,然后导入jar包。
配置HIbernate:首先创建实体类,然后配置实体关系映射表 .hbm.xml文件,最后创建Hibernate配置文件 Hibernate.cfg.xml。在配置 .hbm.xml文件时,可寻找一个插件,由系统自动生成,这里不再说明;也可跟创建一般配置文件一般,手动创建,然后根据数据库表字段逐一配置(右键“项目”,file > xml[Basic Tamplates] > "命名" > "选择第一个DTD" > "选择第二个,找到 HIbernate Mapping DTD 3.0 //en" >finish)。在配置Hibernate.cfg.xml时,数据库连接可由Spring配置,所以文件中只需配置一些Hibernate基础配置。另外创建Hibernate配置文件只需右键“项目”,在“File”中寻找Hibernate configuration file即可。
1.Hibernate配置文件中信息可有:
<session-factory>
<!-- 配置数据库方言 -->
<!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> -->
<!-- 配置Hibernate 事务隔离级别 -->
<property name="connection.isolation">2</property>
<!-- 运行时是否打印sql -->
<property name="show_sql">true</property>
<!-- 运行时是否格式化 sql-->
<property name="format_sql">true</property>
<!-- 生成数据库表的策略 --自动生成-->
<property name="hbm2ddl.auto">update</property>
</session-factory>
2.配置Spring并整合Hibernate:创建Spring配置文件只需右键”项目”,在”File”中寻找“Struts Configuration file”即可。配置中基于注解方式注入。
<Beans>
<context:component-scan base-package="com.shymain.webwork"></context:component-scan> <!-- 配置IOC 容器扫描范围 -->
<!-- 导入资源文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置C3P0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>
<!-- 配置Hibernate 的SessionFactory 实例: 通过Spring 提供的 LocalSessionFactoryBean 进行配置 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 配置数据源属性 -->
<property name="dataSource" ref="dataSource"></property>
<!-- Hibernate 配置文件及名称 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- 配置Hibernate 映射文件的位置及名称,可以使用通配符 -->
<property name="mappingLocations"
value="classpath:com/shymain/webwork/entity/*.hbm.xml"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.autoReconnect">true</prop>
</props>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" /> <!-- 启动事物 -->
<!-- proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。具体意义为:
当要使用实现了某个接口的类让Spring来生成bean时,无需在aop配置中添加proxy-target-class,因为它默认为false.
但如果要使用一个指定的类,让Spring来生成bean,并使用它的某个方法时,需要在aop配置上加上一句proxy-target-class="true",否则用JUnit时,会出现:
Java.lang.ClassCastException: com.sun.proxy.$Proxy6 cannot be cast to daoImp.DAOImp类似的错误. -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
</Beans>
注意:在使用注解注入Bean时,各类之前应加入@Component,@Respository,@Service,@Action等进行注释。对于各类中实体对象,使用@Autowire自动注入。对于事物管理,可在事务处理类之前需要申明事务,使用@Transactional注释。如果使用 .XMl配置文件配置,需要配置切入点,如下:
<!-- 配置事务属性,需要事务管理器 -->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
<!-- 配置事务切入点,以及把事务切入点与事务属性关联起来 -->
<aop:config>
<aop:pointcut expression="execution(* com.shymain.webwork.service.*.*(..))" id="txPointcut"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="txPointcut"/>
</aop:config>
3.配置Struts并与Spring整合:使用注解配置JavaBean,与一般Bean的配置相同。需要注意的是,Struts与Spring整合时,在Struts中action的配置属性class需要指向Spring中相对应Bean的id属性。另外,整合过程中,对应Action的JavaBean配置需指定Scope属性值为“prototype”,基于注解使用@Scope("prototype")。struts配置文件的创建只需右键“项目”,在“File”中寻找即可。

struts配置文件中配置:
<struts>
<!-- 配置Action的可延续后缀名 -->
<constant value="action,do," name="struts.action.extension"></constant>
<!-- 指定由Spring创建实例 -->
<constant name="struts.objectFactory" value="spring" />
<package name="default" extends="struts-default" namespace="/">
<!-- action中class属性指定在spring配置中Action相对应的id -->
<action class="customerAction" name="CustomerAction" method="save">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
练习时个人教训: 创建项目时,注意将连接数据库jar包导入项目中,确保在 WEB-INF 下的 lib 中存在,不然出现各种错误,最后还是不知道错在哪里。。。。
修改:在配置Struts时,需要在web.xml 中配置filter过滤器,由于此前是基于Myeclipse整合,在配置Struts时,系统会自动配置。
基于Myeclipse的三大框架(SSH)整合的更多相关文章
- 三大框架SSH整合
三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...
- 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...
- SSH三大框架的整合
SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...
- JavaEE三大框架的整合
JavaEE三大框架的整合 ...
- SSM三大框架的整合
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 在Java后端开发领域,Spri ...
- [转]JAVA三大框架SSH和MVC
Java—SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就 ...
- JAVA三大框架SSH和MVC
Java—SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 ...
- javaweb三大框架SSH
1.MVC三层架构:模型层,控制层和视图层.模型层,用Hibernate框架让来JavaBean在数据库生成表及关联,通过对JavaBean的操作来 对数据库进行操作:控制层,用Struts框架来连接 ...
- JAVA三大框架SSH的各自作用
一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯. Spring的 ...
随机推荐
- rsync应用实例
一. 通过ssh的方式 前面介绍的rsync 5种方式当中,第二.第三(1个冒号)就属于通过ssh的方式,这种方式其实就是让用户去登录到远程机器,然后执行rsync的任务. [root@local ...
- 注册页面Page的内置属性以及函数 路由 模块化
Page.prototype.route route字段可以获取到当前页面的路径 Page.prototype.setData() setData函数用于将数据从逻辑层发送到视图层,同时改变对应的t ...
- AngularJS系统学习之Module(模块)
本文源自:http://blog.csdn.net/woxueliuyun/article/details/50962645 学习之后略有所得, 来此分享.建议看原文. 模块是提供一些特殊服务的功能块 ...
- WEB网站类型系统中使用的OFFICE控件-破解Ntko-Office
2011-12-12 22:49| 发布者: Admin| 查看: 1399| 评论: 0|原作者: 风云OA 摘要: WEB下使用的OFFICE控件介绍,另提供一个原创破解 首先来个名词解释,O ...
- nohup、&、tail 在服务启动中的用法
在利用命令行启动各类服务的时候,控制台一般会显示相关日志信息,如果weblogic的启动,我们可能有这样需求:启动服务器后即使关闭控制服务器依然运行 ,日志不但可以在控制台显示同时也记录里后台日志文件 ...
- Flutter实战视频-移动电商-50.持久化_shared_preferences
50.持久化_shared_preferences 当app关掉了.再进去的时候 ,购物车的内容还是存在. sqflite提供这个来操作SQLite数据库 flutter提供三种持久化的工具 今天要学 ...
- 割点(Tarjan算法)
本文可转载,转载请注明出处:www.cnblogs.com/collectionne/p/6847240.html .本文未完,如果不在博客园(cnblogs)发现此文章,请访问以上链接查看最新文章. ...
- 模板 - n个数的乘法逆元
这道题里面不用保存 inva[i] ,而且还卡常.事实证明快读快到飞起, #include<bits/stdc++.h> using namespace std; typedef long ...
- 洛谷 - P2551 - 华夏60战斗机 - 简单dp
https://www.luogu.org/problemnew/show/P2551 首先这道题没有给Hm的最大值,很坑,只能随便开一个100没想到还过了. 观察题目,发现虽然高度可以变化,但是速度 ...
- C#中的yield return
4.1 迭代器块 一个迭代器块(iterator block)是一个能够产生有序的值序列的块.迭代器块和普通语句块的区别就是其中出现的一个或多个yield语句. yield return语句产生迭代的 ...