ssh整合
ssh整合的本质:是Spring与struts2之间的整合(将action中的对象交给spring管理),与Spring与Hibernate之间的整合(将sessionFactory和session交给Spring容器管理)
SSH整合流程:
- 导入jar包
- 配置spring
2.1 创建spring配置文件applicationContext.xml,并且加入bean约束和context约束
2.2 在web.xml文件中配置,服务器启动时创建容器 - 配置struts
3.1 创建struts2配置文件struts.xml,引入约束
3.2 在web.xml文件配置核心过滤器 - 进行Spring和Struts2框架的整合
4.1 在struts主配置文件引入两个常量
struts.objectFactory = spring //将action的创建交给spring容器
struts.objectFactory.spring.autoWire = name spring //负责action的依赖属性,比如action需要依赖service,spring会自动将service放在action中
4.2 两个整合方案
整合方案一:
由struts自己来创建action,由spring来负责依赖属性
<action name="userAction_*" class="com.edu118.ssh.web.UserAction" method="{1}">
<result name="success">/index.jsp</result>
</action>
Struts自己来创建action,但是action和service的依赖关系由spring来维护
<bean name="userAction" class="com.edu118.ssh.web.UserAction"></bean>
<bean name="userService" class="com.edu118.ssh.service.UserService"></bean>
整合方案二:(开发中用的)
spring来创建action但是依赖关系需要我们自己手动完成
<package name="user" namespace="/" extends="struts-default">
<action name="user_*" class="userAction" method="{1}">
<result>/index.jsp</result>
</action>
</package>
<!-- spring整合struts2 -->
<bean name="userAction" class="com.edu118.ssh.web.action.UserAction">
<property name="userService"ref="userService"></property>
</bean>
<bean
name="userService" class="com.edu118.ssh.service.UserService">
</bean>
5.配置hibernate
5.1创建对象及其映射文件(对象名.hbm.xml)
5.2创建主配置文件 hibernate.cfg.xml,并引入映射文件
6.Spring和Hibernate 的整合:将hibernate中的SessionFactory交给Spring管理
方案一:
<!-- 将sessionfactory放到spring容器中 -->
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
引入hibernate的主配置文件
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
方案二:
将hibernate中的配置放到spring中,hibernate的配置文件不要了
<!-- spring与hibernate整合二 -->
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 配置hibernate中的property属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.url">jdbc:mysql:///hibernate_day01</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password">123</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.isolation">4</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
</props>
</property>
<property name="mappingDirectoryLocations" value="classpath:com/edu118/domian"></property>
</bean>
7.配置c3p0连接池
导入c3p0-config.xml配置文件
<!--在spring中配置c3p0连接池-->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"></bean>
<!-- 将c3p0放到hibernate中 -->
<property name="dataSource" ref="dataSource"></property>
去掉hibernate对数据库的配置
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.url">jdbc:mysql:///hibernate_day01</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password">123</prop>
现在ssh框架大概很少有人用了,比较流行ssm,但既然学了,还是写下来