spring、Struts2、Hibernate整合
一、Hibernate框架
1.导入jar包
2.hibernate核心配置文件 hibernate.cfg.xml
4.映射配置 User.hbm.xml
二、Struts2框架
1.导入相关jar包
2.web.xml配置Struts2
3.Struts2核心配置文件 Struts.xml
4.log4j2.xml
三、Spring框架
1.导入相关jar包
2.web.xml 配置监听器
3.核心配置文件 AppactionContext.xml
四、SSH三大框架的整合思想
1. web应用的三层为:
1.1 web层,(struts2),Struts2框架用的最多的是action
1.2 service层(spring),spring中用的最多的是IoC和AOP,把对象的创建交给Spring进行管理
1.3 dao层(hibernate),hibernate则是用来操作数据库,进行CRUD
2.两两进行整合
2.1 Struts2和spring进行整合
将Struts中的action创建交给spring进行处理
2.2 hibernate和spring进行整合
两种方式(方式一)将SessionFactory的创建交给Spring进行管理
(方式二)Hibernate的核心文件的数据库信息也交给spring管理
注意:
1.最好在没添加一个框架之后就测试一下是否配置好
2.当三个框架整合好之后,只剩下AppactionContext.xml 和 log4j2.xml 其他都可以使用注解
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.blb"/> <!-- 数据源 --> <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="shutdown"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="readOnly" value="false" /> <property name="connectionTimeout" value="30000" /> <property name="idleTimeout" value="600000" /> <property name="maxLifetime" value="1800000" /> <property name="maximumPoolSize" value="15" /> </bean> <bean id="mySessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" lazy-init="true"> <property name="dataSource" ref="dataSource"/> <!-- <property name="configLocations" value="classpath:hibernate.cfg.xml"/> --> <property name="hibernateProperties"> <props> <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="show_sql">true</prop> </props> </property> <property name="packagesToScan" value="com.blb.entity"></property> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <!-- 开启注解式事务 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
3.测试类
package com.blb.action; import javax.transaction.Transactional; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.blb.entity.User; import com.blb.service.IUserService; import com.opensymphony.xwork2.ActionSupport; @Controller @Scope("prototype") public class AppAction extends ActionSupport { private static final long serialVersionUID = 1L; private User user; public User getUser() { return user; } @Autowired private IUserService userSerivce; @Action(value = "query", results = {@Result(name = SUCCESS, location = "/index.jsp")}) public String query(){ user = userSerivce.get("0"); return SUCCESS; } }