一、首先应该明白,在SSH中,spring做了两次集成,第一次是与struts做了集成,第二次是与hibernate集成。

二、下面来谈第一次集成,与struts集成,通过修改struts-config.xml 中的action type 为 org.springframework.web.struts.DelegatingActionProxy,将action的控制转到spring 容器,当转到spring容器, spring会在spring的配置文件中找与action 的path属性同名的bean从而执行相应的类的操作.

  1. <action
  2. attribute="loginForm"
  3. input="login.jsp"
  4. name="loginForm"
  5. path="/login"
  6. scope="request"
  7. type="org.springframework.web.struts.DelegatingActionProxy" >
  8. <bean name="/login" class="com.ssh.action.LoginAction" singleton="false">
  9. <property name="dao">
  10. <ref bean="UsersDAOImp"/>
  11. property>
  12. bean>
xml 代码

三、第二次集成,与hibernate集成, DAO 继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport类,所以可以简单的利用sping提供的一些功能。 HibnernateDaoSupport实现了HibernateTemplate与SessionFactory的关联。HibernateTemplate(用HibnernateDaoSupport里的getHibernateTemplate()可以获得)对Hibernate Session进行了封装,可省去获得Session实例、事务启动与提交/回滚以及异常处理等一系列步骤,所以非常简单。

java 代码
  1. public class UsersDAOImp extends HibernateDaoSupport implements UserDao {
  2. private static final Log log = LogFactory.getLog(UsersDAOImp.class);
  3. protected void initDao() {
  4. //do nothing
  5. }
  6. /* (non-Javadoc)
  7. * @see com.ssh.dao.impl.aa#save(com.ssh.entity.Users)
  8. */
  9. public void save(Users transientInstance) {
  10. log.debug("saving Users instance");
  11. try {
  12. getHibernateTemplate().save(transientInstance);
  13. log.debug("save successful");
  14. } catch (RuntimeException re) {
  15. log.error("save failed", re);
  16. throw re;
  17. }
  18. }
  19. /* (non-Javadoc)
  20. * @see com.ssh.dao.impl.aa#delete(com.ssh.entity.Users)
  21. */
  22. public void delete(Users persistentInstance) {
  23. log.debug("deleting Users instance");
  24. try {
  25. getHibernateTemplate().delete(persistentInstance);
  26. log.debug("delete successful");
  27. } catch (RuntimeException re) {
  28. log.error("delete failed", re);
  29. throw re;
  30. }
  31. }
  32. /* (non-Javadoc)
  33. * @see com.ssh.dao.impl.aa#findById(java.lang.Integer)
  34. */
  35. public Users findById( java.lang.Integer id) {
  36. log.debug("getting Users instance with id: " + id);
  37. try {
  38. Users instance = (Users) getHibernateTemplate()
  39. .get("com.ssh.entity.Users", id);
  40. return instance;
  41. } catch (RuntimeException re) {
  42. log.error("get failed", re);
  43. throw re;
  44. }
  45. }
  46. /* (non-Javadoc)
  47. * @see com.ssh.dao.impl.aa#findByExample(com.ssh.entity.Users)
  48. */
  49. public List findByExample(Users instance) {
  50. log.debug("finding Users instance by example");
  51. try {
  52. List results = getHibernateTemplate().findByExample(instance);
  53. log.debug("find by example successful, result size: " + results.size());
  54. return results;
  55. } catch (RuntimeException re) {
  56. log.error("find by example failed", re);
  57. throw re;
  58. }
  59. }
  60. /* (non-Javadoc)
  61. * @see com.ssh.dao.impl.aa#findByProperty(java.lang.String, java.lang.Object)
  62. */
  63. public List findByProperty(String propertyName, Object value) {
  64. log.debug("finding Users instance with property: " + propertyName
  65. + ", value: " + value);
  66. try {
  67. String queryString = "from Users as model where model."
  68. + propertyName + "= ?";
  69. return getHibernateTemplate().find(queryString, value);
  70. } catch (RuntimeException re) {
  71. log.error("find by property name failed", re);
  72. throw re;
  73. }
  74. }

<property name="dao">
</property>

代码不全。

四、当然,你得首先把spring环境搭起来,通过在struts-config.xml
增加 
xml 代码

<plug-in classname="org.springframework.web.struts.ContextLoaderPlugIn"></plug-in>

  1. <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
  2. <set-property property="contextConfigLocation"
  3. value="/WEB-INF/applicationContext.xml" />
  4. plug-in>

ssh 三者集合的思想相关推荐

  1. vue 数组转集合_思想实验:如何在Vue中使localStorage具有响应式?

    响应式是Vue的最大特色之一.如果你不知道幕后情况,它也是最神秘的地方之一.例如,为什么它不能用于对象和数组,而不能用于诸如 localStorage 之类的其他东西? 让我们回答这个问题,在解决这个 ...

  2. 网上商城SSH三者间的牵线

    牛郎和织女是喜鹊搭桥,SSH有没有这样的感觉?当遇见了你们之后,想知道你们之间是怎样的牵线.终于有机会好好看看你,虽然与你已有了暂时的别离. 在Java中有许多优秀的框架,表示层有Struts.JSF ...

  3. 用集合的思想分辨字条

    作为一个曾经的打杂人士,时常会碰到非常奇葩的活. --"那谁,把里面的医药行业的公司词条摘出来",说完就甩过来一张包含百万级别词条的sheet. --"额,这要怎么怎么分 ...

  4. mysql 集合 思想_面向集合的思维编写SQL(第九篇 --- “我说的是:苹果柿子李子栗子梨的那个橘子啊”)...

    max:屏幕前的同学,这个时候还在天善智能看博文,肯定是单身狗吧... 猿同学:520是什么鬼,我的世界只有1024... 大家好,距离上篇(面向集合的思想编写SQL的第八篇)已经过去N多个月了... ...

  5. 基于SSH架构的在线答疑系统

    摘要 答疑是教学一个重要环节,在传统的教学模式下,答疑通常是通过老师和学生面对面进行交流,此模式使得答疑在实际教学难以执行.而网络教学模式就打破了传统模式在时间和空间上的限制,同学们可以自主安排时间和 ...

  6. JAVA语言基础-面向对象(集合框架02List、泛型)

    2019独角兽企业重金招聘Python工程师标准>>> 16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字 ...

  7. 黑马程序员--数组与集合互相转变

    --------- android培训.java培训.期待与您交流! --------- 7 数组与集合的相互转变 7.1 数组转变成集合 1,为什么把数组转变成集合呢?有什么好处呢? 数组转变成集合 ...

  8. java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

    为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类: 一.Collections 1.Collections类的特点: 集合框架的工具类.里面定义的都是静态方法. 2.Col ...

  9. Java集合框架(3)

    Map(和Collection<E>一样都是集合框架的顶层接口) |--Hashtable:底层是哈希表数据结构,不可以用null对象作为键或值.它是线程同步的. |--HashMap:底 ...

最新文章

  1. LeetCode实战:除自身以外数组的乘积
  2. BZOJ Usaco 1616 Cow Travelling
  3. 技术系列课回顾 | 网易云信线上万人连麦技术大揭秘
  4. 从近年顶会论文看领域自适应(Domain Adaptation)最新研究进展
  5. 数据结构—链表-循环链表
  6. Java--Socket客户端,服务端通信
  7. 第一天 echo test (()) [[]]
  8. Opencv3 Robert算子 Sobel算子 拉普拉斯算子 自定义卷积核——实现渐进模糊
  9. position:fixed;支持ie6,清楚ie6下抖动。
  10. ele-ui表单验证规则中的手机号码和邮箱的验证规则
  11. 明尼苏达大学研究者为bug事件致歉
  12. 各大电商平台竞价比价API,实时监控类目大数据
  13. 人生成绩单97php,2020年国际国内正赛男乒成绩单,樊振东冠军最多。
  14. 浅谈java中的ServerSocket和Socket的通信原理实现聊天及多人聊天
  15. 来自朋友圈的“精神食粮”
  16. Android 自带工具生成图标
  17. STARK中的FRI代码解析
  18. 将DataFrame中的时间转换为时间戳
  19. CSDN的会员等级和推荐卡规则
  20. 最新怀旧服服务器人口比例,魔兽世界怀旧服人口普查1月 2021年人口比例数据查询...

热门文章

  1. Codeforces 527C Glass Carving (最长连续0变形+线段树)
  2. 前端开发的正确姿势——各种文件的目录结构规划及引用
  3. Hadoop/Spark相关面试问题总结
  4. PHP常用的数组函数
  5. [置顶]IFTTT与Google+是什么?ifttt怎么玩?
  6. 2019春第五周作业
  7. [Python设计模式] 第1章 计算器——简单工厂模式
  8. mysql 批量更新语句
  9. Java重写、super关键字、继承中的构造方法
  10. Python数据库访问公共组件及模拟Http请求