SSH框架整合

一、SSH框架整合方式一:无障碍整合

1.SSH框架整合开发回顾

在这里插入图片描述
Spring整合web项目,有可能是Servlet作为web层,若果是servlet作为web层,必须使用工厂获得业务层类,但是如果使用Struts2,Struts2里面有一个插件,可以简化web层代码。

SSH整合

1. 第一步:创建web项目,引入jar包

  • Struts2的jar包

     struts2-convention-plugin-2.3.24.jar   --------Struts2的注解开发包。
     struts2-json-plugin-2.3.24.jar				-----------Struts2的注解开发包。
     struts2-spring-plugin-2.3.24.jar--------------Struts2的整合Spring的开发包。
     struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar
    
  • Hibernate的jar包

    hibernate-release-5.0.7.Final\lib\required*.jar ------Hibernate的开发的必须的包
    MySQL驱动
    日志记录
    在这里插入图片描述
    使用C3P0连接池
    在这里插入图片描述

注意:Struts2和Hibernate都引入了一个相同的jar包(javassist包)。删除一个

  • Spring的jar包

IOC的开发
在这里插入图片描述
AOP的开发
在这里插入图片描述
JDBC模板的开发
在这里插入图片描述
事务管理
在这里插入图片描述
整合web项目的开发
在这里插入图片描述
整合单元测试的开发
在这里插入图片描述
整合hibernate的开发
在这里插入图片描述

2. 第二步:引入配置文件

  • Struts的配置文件
    struts.xml
    web.xml
<!-- 配置Struts2的核心过滤器 -->
 <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>
  • Hibernate的配置文件
    hibernate.cfg.xml
  • Spring的配置文件
    applicationContext.xml
    log4j.properties
    web.xml
<!-- 配置Spring的核心监听器 -->
 <listener>
 	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <context-param>
 	<param-name>contextConfigLocation</param-name>
 	<param-value>classpath:applicationContext.xml</param-value>
 </context-param>

3. 第三步:创建包结构
在这里插入图片描述
4. 第四步:创建相关类
在这里插入图片描述
5. 第五步:引入相关的页面
6. 第六步:修add.jsp
7. 第七步:Spring整合Struts2方式一:Action由自身创建
编写Action

/**
 * 客户管理的Action的类
 * 
 * @author jt
 */
public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {
	// 模型驱动使用的对象:
	private Customer customer = new Customer();
	@Override
	public Customer getModel() {
		return customer;
	}
	/**
	 * 保存客户的方法:save
	 */
	public String save() {	
		System.out.println("Action中的save方法执行了...");
		return NONE;
	}
}

配置Action( 在struts.xml中配置)

<!-- 配置Action -->
	<package name="ssh1" extends="struts-default" namespace="/">
		<action name="customer_*" class="customerAction" method="{1}">	
		</action>
	</package>

在Action中引入Service

  • a.进行Spring和Struts2的整合

     引入struts-spring-plugin.jar
     让Action按照名称自动注入Service
     将Service交给Spring管理

  • b.将Service交给Spring管理
/**
 * 客户管理的Action的类
 * 
 * @author jt
 */
public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {
	// 模型驱动使用的对象:
	private Customer customer = new Customer();

	@Override
	public Customer getModel() {
		return customer;
	}
	
	// 注入CustomerService:
	private CustomerService customerService;

	public void setCustomerService(CustomerService customerService) {
		this.customerService = customerService;
	}
	/**
	 * 保存客户的方法:save
	 */
	public String save() {
		// 如果web层没有使用Struts2,获取业务层的类就必须如下进行编写:
		/*WebApplicationContext applicationContext = WebApplicationContextUtils
				.getWebApplicationContext(ServletActionContext.getServletContext());
		CustomerService customerService = (CustomerService) applicationContext.getBean("customerService");*/
		
		System.out.println("Action中的save方法执行了...");
		customerService.save(customer);
		return NONE;
	}
}

8. 第八步:Spring整合Struts2方式二:Action交给Spring管理(推荐+++)
 引入插件包
– 引入struts-spring-plugin.jar
 将Action交给Spring
在这里插入图片描述
 在struts.xml中配置Action
在这里插入图片描述
 注意:
– 需要配置Action为多例的:
在这里插入图片描述
– 需要手动注入Service
在这里插入图片描述
9. 第九步:Service调用DAO
 将DAO交给Spring管理
在这里插入图片描述
 在Service注入DAO
在这里插入图片描述
在这里插入图片描述
10.第十步:Spring整合Hibernate 框架
 在Spring的配置文件中,引入Hibernate的配置的信息
在这里插入图片描述
 在Spring和Hibernate整合后,Spring提供了一个Hibernate的模板类简化Hibernate开发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.第十一步:配置Spring的事务管理器
 配置事务管理器
在这里插入图片描述
 开启注解事务
在这里插入图片描述
 在业务层使用注解
在这里插入图片描述

二、SSH框架整合二:将hibernate的配置交给spring管理

hibernate配置文件中有哪些内容:

 数据库连接的配置
 Hibernate的相关的属性的配置
– 方言
– 显示SQL
– 格式化SQL
– 。。。
 C3P0连接池
 映射文件

将Hibernate的配置交给Spring

<!-- 引入外部属性文件=============================== -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	
	<!-- 配置C3P0连接池=============================== -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}"/>
		<property name="jdbcUrl" value="${jdbc.url}"/>
		<property name="user" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>
	
	<!-- Spring整合Hibernate -->
	<!-- 引入Hibernate的配置的信息=============== -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<!-- 注入连接池 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置Hibernate的相关属性 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		
		<!-- 设置映射文件 -->
		<property name="mappingResources">
			<list>
				<value>com/itheima/ssh/domain/Customer.hbm.xml</value>
			</list>
		</property>
	</bean>

三、Hibernate的模板使用

 save(Object obj);
 update(Object obj);
 delete(Object obj);
 查询一个
 get(Class c,Serializable id);
 load(Class c,Serializable id);
 查询多个
 List find(String hql,Object… args);
 List findByCriteria(DetachedCriteria dc);
 List findByCriteria(DetachedCriteria dc,int firstResult,int maxResults);
 List findByNamedQuery(String name,Object… args);

四、延迟加载问题的解决

在SSH整合开发中哪些地方会出现延迟加载

 使用load方法查询某一个对象的时候(不常用)
 查询到某个对象以后,显示其关联对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值