zoukankan      html  css  js  c++  java
  • spring 技术详解 教程(四)

    案例一使用 SSH 的整合完成客户的保存操作
    1.1案例需求
    1.1.1 需求描述
    使用 SSH 整合完成 CRM 的客户保存操作
    1.2相关知识点:
    1.2.1 SSH 简单的回顾:
    1.2.1.1 SSH 的基本开发回顾
    1.2.2 SSH 框架的整合方式一:零障碍整合(带有 Hibernate 配置文件)
    1.2.2.1 创建 web 项目,引入相关 jar 包.
    【Struts2】
    D:struts2struts-2.3.24appsstruts2-blankWEB-INFlib*.jar
    Struts2 需要了解的 jar 包:
    struts2-convention-plugin-2.3.24.jar
    ---Struts2 注解的开发包.
    struts2-json-plugin-2.3.24.jar
    ---Struts2 整合 AJAX 返回 JSON 数据.
    struts2-spring-plugin-2.3.24.jar
    ---Struts2 整合 Spring 的插件包.
    【Hibernate】
    D:hibernate-release-5.0.7.Finallib equired*.jar
    日志记录:
    log4j 的包由 Spring 引入.
    数据库驱动:
    Hibernate 引入连接池:
    D:hibernate-release-5.0.7.Finalliboptionalc3p0*.jar
    【Spring】
    基本的开发:
    AOP 开发:
    JDBC 开发:
    事务管理的开发:
    整合 Hibernate:
    整合 web 项目:
    1.2.2.2 引入相关的配置文件:
    【Struts2】
    web.xml

    struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil ter struts2 /* struts.xml 【Hibernate】 核心配置:hibernate.cfg.xml 映射文件: 【Spring】 web.xml org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml applicationContext.xml log4j.propertiess 1.2.2.3 引入相关的页面并进行修改: 1.2.2.4 创建包结构和相关的类: 1.2.2.5 Struts2 和 Spring 的整合:方式一:Action 类由 Struts2 自己创建 【编写 Action 中的 save 方法】 /** * 保存客户的执行的方法:save */ public String save(){ System.out.println("Action 中的 save 方法执行了..."); return NONE; } 【配置 Action 类】 【在 Action 中调用业务层的类】 配置 Service: 在 Action 中调用 // 传统方式的写法 WebApplicationContext webApplicationContext = WebApplicationContextUtils .getWebApplicationContext(ServletActionContext.getServletContext()); CustomerService customerService = (CustomerService) webApplicationContext.getBean("customerService"); ***** 这种写法很麻烦的,因为需要在每个 Action 中的每个方法上获取工厂,通过工厂获得类. 为了简化这个代码引入一个插件的包: struts2-spring-plugin-2.3.24.jar 在这个插件中开启一个 Struts2 常量 * * 默认的情况下 struts2 将这个常量关闭的,现在引入插件以后,将常量开启了,引发下面的一些 常量生效. struts.objectFactory.spring.autoWire = name 那么就可以在 Action 中提供想注入的属性了: public class CustomerAction extends ActionSupport implements ModelDriven { // 模型驱动使用的对象 private Customer customer = new Customer(); @Override public Customer getModel() { return customer; } // 注入业务层的类: private CustomerService customerService; public void setCustomerService(CustomerService customerService) { this.customerService = customerService; } /** * 保存客户的执行的方法:save */ public String save() { System.out.println("Action 中的 save 方法执行了..."); // 传统方式的写法 /*WebApplicationContext webApplicationContext = WebApplicationContextUtils .getWebApplicationContext(ServletActionContext.getServletContext()); CustomerService customerService = (CustomerService) webApplicationContext.getBean("customerService");*/ // 自动注入 customerService.save(customer); return NONE; } } 【在 Service 中编写 save 方法】 public class CustomerServiceImpl implements CustomerService { @Override public void save(Customer customer) { System.out.println("Service 中的 save 方法执行了..."); } } 1.2.2.6 Struts2 和 Spring 的整合方式二:Action 类由 Spring 创建.(推荐) 【引入插件包】 struts2-spring-plugin-2.3.24.jar 【Action 交给 Spring 管理】 将 Action 配置到 Spring 中. Action 的配置: 1.2.2.7 在业务层调用 DAO 【将 DAO 配置到 Spring 中】 【在业务层注入 Dao】 public class CustomerServiceImpl implements CustomerService { // 注入 Dao private CustomerDao customerDao; public void setCustomerDao(CustomerDao customerDao) { this.customerDao = customerDao; } @Override public void save(Customer customer) { System.out.println("Service 中的 save 方法执行了..."); customerDao.save(customer); } } 1.2.2.8 Spring 整合 Hibernate: 【创建映射文件】 【加载到核心配置文件】 【在 Spring 的配置文件中完成如下配置】 【改写 DAO】 public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao { @Override public void save(Customer customer) { System.out.println("DAO 中的 save 方法执行了..."); } } 【调用模板中的方法】 @Override public void save(Customer customer) { System.out.println("DAO 中的 save 方法执行了..."); // 保存: this.getHibernateTemplate().save(customer); } 1.2.2.9 配置 Spring 的事务管理: 【配置事务管理器】 【注解事务管理的开启】 【在业务层添加一个注解】 1.2.3 SSH 框架的整合方式二:不带 Hibernate 的配置文件 1.2.3.1 复制一个 SSH1 的项目. 1.2.3.2 查看 Hibernate 的配置文件: Hibernate 的配置文件包含如下内容: 连接数据库必要的参数: Hibernate 的属性: 连接池的配置: 映射文件的引入: 1.2.3.3 替换数据库连接参数和连接池的配置: 创建 jdbc.properties jdbc.driverClass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///ssh1 jdbc.username=root jdbc.password=123 在 Spring 中引入外部属性文件 配置连接池: 1.2.3.4 配置 Hibernate 的其他属性及映射: org.hibernate.dialect.MySQLDialect true true update cn/itcast/ssh/domain/Customer.hbm.xml 1.2.4 HibernateTemplate 的使用: public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao { @Override public void save(Customer customer) { System.out.println("DAO 中的 save 方法执行了..."); // 保存: this.getHibernateTemplate().save(customer); } @Override public void update(Customer customer) { this.getHibernateTemplate().update(customer); } @Override public void delete(Customer customer) { this.getHibernateTemplate().delete(customer); } @Override public Customer findById(Long id) { return this.getHibernateTemplate().load(Customer.class, id); } @Override public List findAllByHQL() { List list = (List) this.getHibernateTemplate().find("from Customer"); return list; } public List findAllByQBC(){ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class); List list = (List) this.getHibernateTemplate().findByCriteria(detachedCriteria); return list; } } 1.2.5 延迟加载的问题的解决:OpenSessionInViewFilter OpenSessionInViewFilter org.springframework.orm.hibernate5.support.OpenSessionInViewFilter OpenSessionInViewFilter *.action
  • 相关阅读:
    (深入理解计算机系统)内存对齐
    (深入理解计算机系统)AT&T汇编指令
    (深入理解计算机系统)编译,链接和装载
    (C)struct结构体指针
    (linux)BSP板级支持包开发理解
    TortoiseSVN使用笔记
    (linux)idr(integer ID management)机制
    (linux)struct inode 和 struct file
    cygwin使用笔记
    Zookeeper学习总结
  • 原文地址:https://www.cnblogs.com/globalcoding/p/12824777.html
Copyright © 2011-2022 走看看