Struts+Spring+Hibernate学后感

     最近利用时间好好的看了一下SSH,Struts,Spring,Hibernate,并且做了个小项目,我把我个人学习的感觉和理解记了下来,和大家讨论讨论,想来个抛砖引玉,希望大家多多讨论,理解的不对的地方还请直言赐教。

     Struts,负责表示层的,主要玩的就是MVC,主要的就是struts-config.xml配置文件,另外还有标签和验证。主要负责的就是把请求和回复分开,形成层状结构,便于管理。struts-config.xml就是个连线员,而每个jsp页面和每个action,其实就是servlet,就是每台电话,它们就通过它们的“电话号码”——标识符,在连线员的工作下拨通你想要的电话,也就是说跳转到你想要跳转的页面,得到你想要得到的结果页面。

     Hibernate,负责持久层,主要玩的就是ORM,对象/关系数据库映射,配置文件有hibernate.cfg.xml,还有每张表所对应的配置文件,test.hbm.xml,当然文件的名字可以变,只要在web.xml中配置好了就行了。主要是把对象和数据库表给联系起来,再也不用那JDBC直接连接数据库了,也不用重复的写statement.setString(bean.getID())等等了,可以很方便的调用hibernate所提供的方法save(),update(),remove(),find()。当然hibernate也提供了事务的管理等等。如果哪天我们想换个数据库的话,只要把配置文件修改修改,就应该没有什么问题了,而项目中的代码几乎不用重写。对了,hibernate所提供的HQL语言要替代项目中的SQL语句了。

     Spring,负责业务层,说到业务层,就是管理,Spring主要玩的就是“依赖注入”和AOP,配置文件就是applicationContext.xml。它把项目应用注入到框架里,利用AOP的面向方面管理的原理,将整个项目的代码再次分层的管理起来,它提供切入点,通知,工厂模式的机制,很清晰的管理代码。最后我们通过applicationContext.xml的配置内容调用我们所需要的业务service,同时提供事务管理,日志管理,安全管理,异常管理等等。

      我再大胆的“抛砖引玉”一下。在早期,要想用java写web项目,只能拿servlet写,因为servlet写的时候需要调用java的接口,不便于页面的编写,后来就有了jsp,基于html,在html里面嵌套java程序。后来随着项目的增大,请求和回复慢慢变得频繁起来,也就变的混乱起来,因为项目在增大,仅仅靠一个人的能力已经不能满足项目的要求了,需要分工合作,有分工就会有分歧,除非分工很明确。所以,就有这么一天,高手们发明了Struts框架,基于MVC模式,很好的将model,view,controller分成三层,使得请求和回复分开,开发变得清晰。有项目,就会有数据,要不然我们就不需要交互了。那么数据总要有个存储的地方,数据库顾名思义就是个很好的数据存储地方。早期我们就通过JDBC连接数据库,先加载DriverManager,也就是驱动程序,然后获得Connection,再得到StateMent,最后通过执行sql,如果是查询再得到ResultSet结果集。增删改查都要自己写方法,假如一个表的字段有上百个的话,那么我们要插入一条记录需要写多少代码,再如果我们想要使用不同的数据库的时候,我们又需要把多少代码重新编写。出现了这些问题后,又有那么些高人发明了Hibernate框架,从此我们程序员的生活变的美好了许多。可是web项目是越来越大,编写的代码越来越多,也慢慢的就变得混乱了,常常是修改了一处的代码而引发许多出的错误,使得我们程序员的生活又变的不那么美好了,这时候,高人又发明了Spring框架,Spring有效的将Struts和Hibernate集成起来,统一管理,使得整个web项目层次分明,而各个层次之间又是相互独立,假如哪一个模块变动了,我们需要的只是把配置文件里的配置项修改修改就可以了。真正的“高内聚,松耦合”,也就是面向对象编程的思想。

      所以,我们在开发项目的时候,可以使用这些框架,也可以不使用,照样也能完成项目的开发,所谓“条条道路通北京”嘛。框架只是给我们提供了方便,提高了项目的复用性,提高了项目的质量。

      以上就是我的学后感,希望得到大家的高见,共同学习,共同进步。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值