博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 框架整合Struts2 框架和 Hibernate 框架
阅读量:6092 次
发布时间:2019-06-20

本文共 5532 字,大约阅读时间需要 18 分钟。

1. Spring 框架整合 Struts2 框架

// [第一种整合方式(不推荐)](http://www.cnblogs.com/linkworld/p/7718274.html)    // 从 ServletContext 中获取 Service 对象    ServletContext servletContext = ServletActionContext.getServletContext();    WebApplicationContext ac =            WebApplicationContextUtils.getWebApplicationContext(servletContext);    CustomerService cs = (CustomerService)ac.getBean("customerService");    // 调用业务层方法    cs.save(customer);// 第二种方式: Action 由 Struts2 框架创建// 因为导入的 struts2-spring-plugin-2.3.24.jar 包自带一个配置文件 struts-plugin.xml,// 该配置文件中有如下代码:// 
开启一个常量,如果该常量开启,// 那么下面的常量(位于default.properties 中)就可以使用// struts.objectFactory.spring.autoWire = name, 该常量可以让 Action 类自动装配Bean对象!public class CustomerAction extends ActionSupport implements ModelDriven
{ // 模型驱动,封装请求数据 private Customer customer = new Customer(); public Customer getModel(){ return customer; } // Action 类自动装配 Bean 对象,需要提供 set 方法 private CustomerService customerService; public void setCustomerService(CustomerService customerService){ this.customerService = customerService; } // 保存客户 public String add(){ customerService.save(customer); return NONE; }}// 第三种方式: Action 由 Spring 框架来创建(推荐)// 把具体的 Action 类配置到 applicationContext.xml 文件中,注意: struts.xml 需要做修改// applicationContext.xml
// struts.xml 中的修改,把全路径修改成 ID 值
// 第三种方式需要注意两个地方 // Spring 框架默认生成 CustomerAction 是单例的, 而 Struts2 框架是多例的,所以需要配置 scope="prototype" // CustomerService 现在必须自己手动注入 public class CustomerAction extends ActionSupport implements ModelDriven
{ // 模型驱动,封装请求数据 private Customer customer = new Customer(); public Customer getModel(){ return customer; } // 此处为依赖注入 private CustomerService customerService; public void setCustomerService(CustomerService customerService){ this.customerService = customerService; } // 保存客户 public String add(){ customerService.save(customer); return NONE; } }

2. Spring 框架整合 Hibernate 框架

// 最初代码    public class CustomerDaoImpl implements CustomerDao{        public void save(Customer customer){            // 将数据保存到数据库            HibernateTemplate template = new HibernateTemplate();            template.save(customer);        }    }// 升级版// 将 template 的创建交给 Spring 框架管理    // applicationContext.xml    
public class CustomerDaoImpl implments CustomerDao{ private HibernateTemplate hibernateTemplate; public void setHibernateTemplate(HibernateTemplate hibernateTemplate){ this.hibernateTemplate = hibernateTemplate; } // 保存客户 public void save(Customer customer){ hibernateTemplate.save(customer); } }// 第三次升级// 直接继承 HibernateDaoSupport public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao{ // 保存客户 public void save(Customer customer){ this.getHibernateTemplate().save(customer); } // 修改客户 public void update(Customer customer){ this.getHibernateTemplate().update(customer); } // 删除客户 public void delete(Customer customer){ this.getHibernateTemplate().delete(customer); } // 通过主键查询客户 // findById(Class
clazz, id) public void findById(Long cust_id){ this.getHibernateTemplate().get(Customer.class, cust_id); } // 查询所有 // find(String queryString, Object...values) public List
findAll(){ this.getHibernateTemplate().find("from Customer"); } // 分页查询public PageBean
findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria){ // 创建分页对象 PageBean
page = new PageBean
(); // 设置属性 page.setPageCode(pageCode); page.setPageSize(pageSize); // 设置聚合函数, SQL 已经变成了 select count(*) from criteria.setProjection(Projections.rowCount()); List
list = (List
)this.getHibernateTemplate().findByCriteria(criteria); if(list != null && list.size() > 0){ int totalCount = list.get(0).intValue(); page.setTotalCount(totalCount); } // 清除SQL, select * from criteria.setProjection(null); List
beanList = (List
)this.getHibernateTemplate().findByCriteria( criteria, (pageCode - 1)*pageSize, pageSize); page.setBeanList(beanList); return page; }} // applicationContext.xml
// 第一种整合方式: 带有 hibernate.cfh.xml 的配置文件 // hibernate.cfg.xml
// applicationContext.xml
// CustomerServiceImpl.java // 在业务层添加事务的注解 @Transactional public class CustomerServiceImpl implements CustomerService{ private CustomerDao customerDao; public void setCustomerDao(CustomerDao customerDao){ this.customerDao = customerDao; } // 保存客户 public void save(Customer customer){ customerDao.save(customer); } } // CustomerDaoImpl.java public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao{ // 保存客户 public void save(Customer customer){ this.getHibernateTemplate().save(customer); } }// 第二种整合方式: 不带有 hibernate.cfg.xml 的配置文件 // 1. hibernate 配置文件中 // * 数据库连接基本参数(四大参数) // * Hibernate 相关的属性 // * 连接池 // * 映射文件 // 在 applicationContext.xml 中进行配置上述信息 // 先配置连接池相关的信息
// LocalSessionFactory 加载配置文件
// 加载连接池
// 加载数据库方言,加载可选项
org.hibernate.dialect.MySQLDialect
true
true
update
// 引入映射的配置文件
com/itheima/domain/Cusomter.hbm.xml

参考资料

转载于:https://www.cnblogs.com/linkworld/p/7727574.html

你可能感兴趣的文章
《大公司病》阅读笔记
查看>>
手机管理中的应用【6】——电源管理篇
查看>>
【Android工具】DES终结者加密时报——AES加密演算法
查看>>
效果收集-点击显示大图
查看>>
Android 开机过程PMS分析
查看>>
找不到com.apple.Boot.plist
查看>>
使用openssl创建自签名证书及部署到IIS教程
查看>>
入门视频采集与处理(学会分析YUV数据)
查看>>
java keytool详解
查看>>
记一次Redis被攻击的事件
查看>>
Debian 的 preinst, postinst, prerm, 和 postrm 脚本
查看>>
socket编程的select模型
查看>>
IDEA和Eclipse经常使用快捷键(Win Mac)
查看>>
ubutntu apt 源
查看>>
PHP 文件处理
查看>>
cesium之核心类Viewer简介篇
查看>>
ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身
查看>>
libev与libuv的区别
查看>>
iOS 为什么使用xcode8上传app包到appStore无法构建版本
查看>>
Tomcat优化步骤【转】
查看>>