很生气啊,虽然跟问题没关系,但还是想说啊!刚才白打了一遍啊.然后死机了啊。全部都没有了555555!
重新来过啊!STRUTS(包括全部的表现层架构) 到底有什么用啊?适合什么样的项目啊?
HIBERNATE(包括全部的表现层架构)  到底有什么用啊?适合什么样的项目啊?
SPRING 到底有什么用啊?适合什么样的项目啊?
EJB 到底有什么用啊?适合什么样的项目啊?
可能看我这样问,大家会说!切!这些都是整和在一起用的啊!
用STRUTS做表现层,解决业务逻辑与View层的问题.
用HIBERNATE做数据持久层ORM,这样更面向对象,而且把DB和开发隔离了,便于解偶,也不用明白很多复杂的Sql
用SPRING做总调度,解决持久层与业务逻辑层的问题.我是在一个比较大的地方门户工作啊,我们现在的应用,由于年代比较久了,所以没有用什么架构,只是简单的封了Servlet,
然后将动态和静态的东西分别放在不同的Server上啊!其中静态3台动态2台!一直应付千万pv的量级.然后也没有什么效率问题!
一直不明白啊,那时侯STRUTS出来的时候,总说为了符合MVC结构,这样以后大家编写的程序都一样了.不会不同的开发人员编写出风格各异的程序了!
可是可以直接用Templet模式一样大家写的都有规范了啊!MVC结构也可以自己写啊!并且实现成本不一定比学习并且配置复杂的STRUTS高啊!而且还自己
掌握核心.为什么非要用STRUTS啊?在说HIBERNATE不知道为什么,觉的也就是DAO的一种实现!最后还是要用DB,说什么开发人员就可以对DB透明了.简单的save就可以不用写sql了.
开发人员了解DB那不是很应该吗?写sql不是很基本吗?这个要配置一大堆东西.而且使用还很灵活,导致个体之间程序效率差异巨大不好控制项目风险!
而且不允许第三方对DB的操作!很霸道啊!最后说SPRING 既然前面两个都没什么用,那SPRING也没什么可调度的了!总说不重复造轮子,总说自己跟别人不一样!我看也差不多拉......AOP的概念有时候
还有点用处但是用注入的方式,解偶,连一个带参数的对象都没办法初始化出来,搞的很头大啊....
不知道是否说清楚了.我表达能力不是很好.而且有时候由于自己不熟悉导致问题问的很不好大!大家见谅
我最后其实就是想问STRUTS(包括其他表现层架构) 到底有什么用啊?适合什么样的项目啊?有什么显著的优势啊!或者说不用它,有些功能自己写需要耗费很多精力
HIBERNATE(包括其他ORM) 到底有什么用啊?适合什么样的项目啊?有什么显著的优势啊!或者说不用它,有些功能自己写需要耗费很多精力
SPRING 到底有什么用啊?适合什么样的项目啊?有什么显著的优势啊!或者说不用它,有些功能自己写需要耗费很多精力
EJB 到底有什么用啊?适合什么样的项目啊?有什么显著的优势啊!或者说不用它,有些功能自己写需要耗费很多精力
希望大侠客能点播我一下啊!忠心的感谢啊

解决方案 »

  1.   

    你如果不用framework 可以容易實現,就不醃要構架,
    構架只是讓你更加方便,如果覺得不方便大可不用.
      

  2.   

    你是做门户?
    用java一般做大型软件企业开发,很庞大的那种,但可能不会有多少人同时访问,也就是说功能很多很复杂,但用户不多,至少不像网站那么多,如果不使用框架的话,代码就会乱七八糟毫无章法。
    一般一个成形的普通企业软件至少也得用4到5个框架,n个开源组件,外加自己封装的n个组件
    用STRUTS是为了层次清晰,请楼主百度mvc
    用HIBERNATE是为了减少工作量,同时它也是实现完全oo的一种途径,毕竟数据库是关系的,而java是面向对象的。
    用SPRING的好处太多了
    1.aop利用这一点就可以干很多事情,流程处理,日志处理,事务处理等
    2.它对各个框架提供了很友好的支持
    3.ioc 依赖注入,使得程序真正变得可插拔。
    4.spring自身大量优质的代码和功能,比如常用的jdbc封装,各种回调机制,mail处理,httpinvoke等太多了,好多我也没用过。
    6.EJB分布式的,我经常会遇到我的客户有n个数据库,n套环境,在n个地方,或者说n个网域,但是他们要通信啊,怎么办?除了EJB还有很多东西,像比较流行的webservice,基于二进制的httpinvoke,等很多手段,另外对于业务的封装规范了接口,实际上是很好的解耦。所有这些都不太适合门户,java本身就不太适合门户,当然可以做门户,他是做一些业务上的逻辑处理的,比如淘宝的后台做账,银行的后台做账,电信的运维,网管,各种系统的底层业务处理等。它适合做一些比较复杂,庞大,对性能要求又不是非常苛刻的事情。
      

  3.   

    补充:我认为HIBERNATE最大意义是革命性的改变了很多程序员的思想,不夸张的说有些应用,或者说一些整体架构做得好的系统已经不需要程序员对DB非常了解了,思想已经完全从关系转变到了对象。他们要考虑的就是java那些事。
      

  4.   

    利用框架减少的工作量不是一点点,项目越大,减少的工作量越多,所以楼主不要偏激凡事要试试。
    如果10个人选择了A你选择了B,那么有可能你是对的,如果1万人选择了A,你选择了B你就要好好想想了。
    干这行的就要不断的学习各种技术框架,如逆水行舟,不进而退。
    其实技术还是有的学,框架就是个有说明书的机器人,你知道怎么用不是很难的。
      

  5.   

    可恶的 CSDN 刚才在一个帖子中打了近两个小时字的,一提交回复等了半天然后出错,
    啥都没有了!感觉被一个大棰狠狠地捶了一下!可恶啊!
      

  6.   

    框架的主要目的是为了使代码规范
    ,逻辑清晰
    提高程序的可读性,可扩展性
    让以后的维护更加简单
    strus用于界面层与控制层的传质,它可以大大的减少servlet的使用量减少资源的损耗
    Hibernian用于底层的数据层,它的出现改变了以前使用jdbc对数据超做的复杂和繁琐
    Hibernian可以只使用一句话就能够对数据进行查,删,曾,改
    spring用于逻辑层它的强大在于它可以将strus和Hibernian两者非常紧密的结合对于大项目来说框架可以提高产品的质量但是对那些小型的项目框架就显得多余了并且效率也会降低
      

  7.   

    先说struts:
    Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。 
    除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。
    Taglib是Struts的标记库,灵活动用,能大大提高开发效率。
    关于页面导航:通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。
      

  8.   

    首先 看你做什么项目了??小得网站不必要ssh毕竟体现不出来他的优点,甚至你不必要用jsp直接asp搞定
    中大型的就体现出来了,项目里好多涉及到代码可移植问题,代码可重用问题,及耦合性能面向接口得spring能很好解决这个问题再有,单纯得sql是解决起来这些需求是力不从心得,好比说我现在数据库里面有50个字段,单纯用sql语句写一个复合查询,你要写多少行代码?想过没?hibernate这里就是一个优势,直接一个过滤器搞定!前后下来也就几百行吧加上配置文件,sql下来至少shang千万struts更不用说了,servlet里面提供得功能只能说是基本得为什么要标签,验证。 现在struts2更强大了
      

  9.   

    为了上面两为朋友遇到的服务超时,只能写一点就发一点了再说一下Hibernate:
      传统的架构:   
      1)   Session   Bean   <->   Entity   Bean   <->   DB   
      为了解决性能障碍的替代架构:   
      2)   Session   Bean   <->   DAO   <->   JDBC   <->   DB   
      使用Hibernate来提高上面架构的开发效率的架构:   
      3)   Session   Bean   <->   DAO   <->   Hibernate   <->   DB 可见Hibernate 是一个和JDBC密切关联的框架,
    所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,
    但是和使用它的Java程序,和App   Server没有任何关系,也不存在兼容性问题  hibernate可以大大提高传统框架的开发效率,至于在什么情况下使用。
    从上面的三种框架的比较中你可以在实际的开发中来选择用什么方法解决数据库连接和操作方面的问题
      

  10.   

    首先 看你做什么项目了??小得网站不必要ssh毕竟体现不出来他的优点,甚至你不必要用jsp直接asp搞定
    中大型的就体现出来了,项目里好多涉及到代码可移植问题,代码可重用问题,及耦合性能面向接口得spring能很好解决这个问题再有,单纯得sql是解决起来这些需求是力不从心得,好比说我现在数据库里面有50个字段,单纯用sql语句写一个复合查询,你要写多少行代码?想过没?hibernate这里就是一个优势,直接一个过滤器搞定!前后下来也就几百行吧加上配置文件,sql下来至少shang千万struts更不用说了,servlet里面提供得功能只能说是基本得为什么要标签,验证。 现在struts2更强大了
      

  11.   

    我现在用struts2,其它没用过~
      

  12.   

    有人说,技术上的知识面是拳脚功夫,思想上的提升是内功!
    确实,在楼主看来,SSH这3个框架的出现使得程序的工作变简单,同时可能也掩饰了许多程序员应该明白或者看到的基础部分
    但是,从大方向上,任何J2EE框架的出现都是为了提高生产效率而已,而不是为了使程序员用几次就会比以前更厉害,这点很关键Struts是对Jsp/Servlet年代的一种革新,带来了典型的MVC思想,其易用性也非常适合初学者或者一般的网站架构Hibernate是经历了许多坎坷更新之后才被广泛使用的数据库映射框架,不能说它是好还是不好,其实以现在的JDK API,完全可以开发为项目定制的ORM框架,说白了也就是封装JDBC代码,自动生成SQL语句而已,前段时间我就为我们产品自己做了一个,对于Hibernate,值得思考学习的是它出现最初的需求至于Spring,确实是个很优秀的框架,几乎包括了大部分设计模式,是对J2EE应用一种很好的诠释,理解里面的思想能帮助我们写出更高质量的代码来至于楼主最后的问题,其实用一句话可以回答:
    没有绝对意义上最适合项目的框架,开发Spring的人也曾经说过:最好的框架是针对项目需求量身定做的。所以不管你使用Struts/Hibernate/Spring,都只是借助它们已经成型的思想和结构,在这个基础上发展出最适合你这个项目的架构,当你的架构在没有它们存在时建立更方便的时候,就完全没有必要使用它们。
      

  13.   

    问这样的问题说明你没什么开发经验。
    至少没有j2ee项目的开发经验。
    这些问题的答案,在官方的文档里面说了很多了,实际效果怎么样也要自己试过了才知道,技术要跟着项目走。
      

  14.   

    这个东西其实很简单,
    如随着社会的发展各种东西都出现了
    写程序也要求越来越模式化越简单化,
    你用了这些框架后,别人如果也懂这类框架,那么就很容易看明白你想干什么,在干什么.
    如果不用,那么就是每个公司每个系统每个地方一种实现,都带有个人的主观看法,那么你如果再去接触这类系统,那么就很
    难以理解当时为什么这么做?这是怎么做的!
    你把你们公司的情况映射到其它公司,你再换到那家公司,你怎么办?它的实现会跟你现在一致么?
    想象一下那些框架当时出现的原因吧,都是有特定环境的!
    不要在效率上看问题,那个系统没有个效率的瓶颈啊!OVER!
    此致敬礼
      

  15.   

    Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。
    Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和
    我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。
    但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),
    用以构造我们所需要的M(Model)。
    在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,
    用它来提供非管理环境下申明方式的事务、安全等服务;
    对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;
    DAO/ORM的实现方便我们进行数据库的开发;
    Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
    Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。
    这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
      

  16.   


    那你在提交之前先复制一遍不就可以了。 ctrl+A,ctrl+C 多方便。
      

  17.   


    呵呵,下次就在别的地方都打好了再copy过来啦..
      

  18.   

    Struts做表现层,这种说法好象不太正确。
    因为,就我理解,Struts应该是一个MVC的架构,而里面具体的某个层次,可以用不同的技术来实现。通常,M层做数据方面的维护,有数据的调度也有数据的持久化功能;
    V层做数据内容的显示;
    C层做业务逻辑的处理以及操纵M层和调度V层;Hibernate技术一般用来做数据持久。Spring,其实如同Struts,它也应该属于框架,当然,它同时也集成了一些J2EE方面功能。
    但对于我们开发人员来说,重要的应该是理解它这套框架在架构设计历程当中所展现出来作用。
    就如同我们学习Struts,重要的应该是理解MVC这种理念,在软件开发以及维护中所展现出来的有点。EJB是一门具体的技术,就如同JSP一样。它的应用范围是很广泛的。楼主在学习您所说的J2EE常见的这些技术框架的时候,应该注意区别,
    哪些名词是架构方面的,哪些名词它代表的是一向技术。有了架构,可以使我们在软件的开发、维护方面更加的高效,但是,开发软件不用架构毫无疑问也是可以的。
    而具体的技术,则有些不同。
    比如,我们要开发一个web网站,你不用Java技术,还可以选择使用.net技术,或者CGI什么的技术,
    总之你得选用一种技术来完成网站开发的能力。
    当然,对于一个有层次结构的架构而言,其中的某个层次,可以选择不同的技术来实现。
    比如:MVC架构中的数据持久层,你可以使用Hibernate,也可以采用存储文件的方式来实现数据的持久化。哈,以上只是我个人的见解,有什么不同意见,请大家多多参与啊
      

  19.   

    这个帖子在javaeye上看过,呵呵
      

  20.   

    物尽其用,简单的应用,根据就不能SSH或MVC就可能轻松实现,用了框架,反而会受框架的禁锢,而大的企业应用就不同也,应用框架,可以使程序员只关注功能的实现,框架会将个个功能组和到一起,省时,高效
      

  21.   

    用Bruce.Eckel最喜欢的一句话来回答这个问题最好不过了
           ------------All models are wrong. Some are useful.
    我也一点都不喜欢框架。但是现在的大项目都是很多人一起来写,我想,框架也算是为大家提供了一种标准吧。
      

  22.   

    STRUTS(包括全部的表现层架构) 到底有什么用啊?适合什么样的项目啊? 
    HIBERNATE(包括全部的表现层架构)  到底有什么用啊?适合什么样的项目啊? 
    SPRING 到底有什么用啊?适合什么样的项目啊? 楼主刚学习这些东西的时候难免会有这些疑问..等到学久了..慢慢的这些疑虑就会消除了...
    这些是应该整合在一起使用的..现在主流的框架技术也是SSH了..加油..
      

  23.   

    多说无益,
    楼主冷静下来好好看一遍你所说的框架的内容,
    然后思考一下在自己的项目中是否有用。如果有用就吸收接纳,
    如果感觉没有用,也不用刻意强用,要记住
    没有银弹不要急躁,安心耐心的整体学习一下,也许就能理解了good luck
      

  24.   

    嗯,mvc及design pattern等等,也是指引而己,沒必要一定要把自己的項目套在這些框框之下
    LZ你對ORM的理解好像不全,orm不只是單單保存方便,且將記錄映射為對象,你不覺得更符合OOP?
      

  25.   

    学习
    这么多人都说了struts的好处,受益匪浅啊!
      

  26.   

    看情况吧。做小应用的时候我还是喜欢jsp+servlet+pojo+jdbc,偶尔用点ajax,比较快速方便,配置文件只有一个web.xml。
      

  27.   

    三言两语说不清的~~
    web程序用这些框架不错的,推荐多去看看书和视频教程
      

  28.   

    只能说楼主还没搞明白"框架"这一词的意思~!像Struts, Spring, Hibernate这都只是一种"开源"框架, 我们经常说的MVC模式, 只能说是一种编程的思想, 目的就是为了让代码的层次看起来更加分明.用Struts适合做什么样的项目????? 这句话本来就有问题! 一个项目里面一般都有几种开源的框架.
    Struts + Spring + Hibernate这三种一般在很多项目里面用到了. 但是在大项目里面,别人一般都将这些框架又进行了一次包装.其实LZ明白这几种框架的大至用法, 但是可能是接触少了. 见多了自然了解..
      

  29.   

    我如果要回复很多文字的时候,会在记事本写,然后copy.....
      

  30.   


    我有一招 你提交出错 点浏览器后退 输入的内容应该都在
    另外 回复前把内容copy一下 是非常非常不错的一个idea (尤其是在CSDN)
      

  31.   

    不同意 此观点
    我想楼主是想 练练ssh 
      

  32.   

    简单的说吧,这些框架的目的是为了便于分工。
    servlet很好,很强大,可是如果要是大规模开发,就要求所有的都有相当的能力。而mvc架构的出现可以把人员分出层次去完成不同的任务。
    差的人去弄画面,对业务熟的可以写module或是配置流程,技术好的但业务不熟的写些共通方法,让那些module调用。
    能力最强的可以空出来做整体设计。这样老板可以按工作发钱了。于是structs,jsf,spring mvc 之类的东东就出现了。至于数据库,如果全部是sql语句,那么当需要移植或者字段修改的话那么就是个脏活累活,让总体设计的把所有代码查一遍? 简单的做法就是单独找几个人去背黑锅。让他们去配置,去提供方法,每次修改都是他们负责。有领导骂就骂他们。所以就有了hibernate,Ibatis之类。至于Spring,那东西确实没什么意思,不过spring同时也提供不少比较好的工具,如果要把他们提取出来,要花不少时间,于是就整个拿过来将就着用。当然,把这些东西组合在一起肯定问题多多,不过领导满意了,财务满意了,销售也会满意。所以就流行了。
      

  33.   

    structs spring hibernate号称 ssh,其实只能做些中小项目,对于多机cluster的支持是极差的。
    EJB则是正规军,对于cluster方式考虑较多,但是缺陷是性能极差,开发困难。所以如何选择就看项目了。