SSH框架整合
SSH整合的基本步骤(个人笔记)
新建一个maven项目 导包(一般顺序从最底层hibernate----spring----struts2)
先从hibernate开始整合:
引入servlet依赖 引入hibernate依赖 引入mysql依赖
(在导入hibernate框架之前可以先测试一下eclipse和数据库可不可以连接 测试如下:
eclipse里有个Data source Explorer(数据源的浏览器) ,点击Database Connections右键new一个,选择一个自己的数据库,在drivers里Name/Type点击添加,选择数据库的版本,JAR List移除默认的选择电脑本地的一个java包添加,Properties里value的路径,驱动类,密码等。ok后点击Test Connection 连接测试)
在resoources文件里新建一个配置文件hibernate.cfg.xml
在实体类生成一个映射文件(在hibernate.cfg.xml关联映射文件!)
在测试类进行测试 感觉还ok!
然后整合spring
继续在hibernate引入依赖关系: Spring依赖, c3p0数据库连接池, Hibernate整合Spring ,spring-aspects:解析事务的表达式
(依赖关系没有一次性导进去 为了方便理解 需要什么导什么)
创建spring配置文件(给每个包写一个)
applicatioContext-public.xml 公共的 步骤如下:
1.引入数据源:创建一个db.properties (用来把hibernate里连接数据库的信息移除过来)
<context:property-placeholder location="classpath:db.properties" />
2. 配置数据源:配置数据库连接池c3p0
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${uname}"></property>
<property name="password" value="${upass}"></property>
<property name="jdbcUrl" value="${url}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="initialPoolSize" value="${initPoolSize}"></property>
<property name="maxPoolSize" value="${maxPoolSize}"></property>
</bean>
3.配置sessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 引入数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 加载hibernate配置文件 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- 加载映射文件 -->
<property name="mappingLocations" value="classpath:com/entity/Person.hbm.xml"></property>
</bean>
4.配置事务管理器
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
5.配置事务的属性
<tx:advice id="myAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
6.配置事务的切点
<aop:config>
<aop:pointcut expression="execution(* com.dao.*.*(..))" id="myPoint"/>
<aop:advisor advice-ref="myAdvice" pointcut-ref="myPoint"/>
</aop:config>
applicatioContext-action.xml 注入一个service
<bean id="personAction" class="com.action.PersonAction" scope="prototype">
<property name="personService" ref="personServiceImp"></property>
</bean>
applicatioContext-dao.xml 引一个sessionFactory
<bean id="personDaoImp" class="com.dao.PersonDaoImp">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
applicatioContext-service.xml 注入dao
<bean id="personServiceImp"
class="com.service.PersonServiceImp">
<property name="personDao" ref="personDaoImp"></property>
</bean>
总结就是:action里面引用了service,service里面引用了dao,dao里面引用public里面的sessionFactory
最后整合struts2
还是在hibernate中引入依赖关系:Struts2依赖,struts2整合spring的插件包 ,log4j
创建struts2配置文件
<struts>
<package name="myPackage" extends="struts-default">
<action name="person*" class="personAction" method="{1}">
<result>/success.jsp</result>
</action>
</package>
</struts>
配置web.xml
ps:可以在eclipse安装hibernate和spring插件
在线下载:window---Eclipse Marketplace--搜索hibernate--选择插件--Install下载