目前,可以说是框架泛滥,有流行的,有过时的例如: struts1  struts2  hibernate ibatis  spring  ext  dwr  jquery 等等
就想大家讨论一下各框架的好处与不足之处,好互相学习学习以及现在用的最多的是哪几种,为什么都会用呢?还有其他熟悉的框架可以自行加上(只能发这么多分,没办法)

解决方案 »

  1.   

    发现web framework就struts,国内就没人用别的了吗?spring mvc? JSF? GWT/Vaadin?
      

  2.   

    我几个都是了下觉得Vaadin很不错
      

  3.   

    页面框架 用过ext,jquery 还有flex技术系统的话就是SSH 或者SH 、SSI  根据系统的不同用途 架构都不一样的  用了架构只是在后续优化和维护很方便 但用了架构会影响一定的性能
      

  4.   


    肯定有用别的啊
    例如spring mvc  用的也比较多
      

  5.   

    struts1不够方便:仅仅支持简单的类型转换(只用beanUtils简单地包转一下),这点真令人抓狂
    struts2挺方便的
    spring没什么好说的,用就是了,因为它很好
    hibernate的虽好,但是性能的管理或优化上不好控制还是喜欢用iBATIS,毕竟可以更简单地处理性能问题
    jQuery已经很方便了,呵呵
      

  6.   

    个人推荐后台还是SSH或者SSI或者。如果你的项目是企业级的,庞大的话,那么这两个框架以后维护起来会很方便。
    前台推荐EXT或者GWT等
    现在很多公司正在努力的做研发平台,就是使用SSH或者SSI搭建一套框架,在这个框架上进行项目的开发。
    所以SSH方向的框架还是不错的。至少在5年内应该流行。
      

  7.   


    好在全部用java实现,不用写jsp,不用写javascript. Vaadin用GWT的引擎, 不过封装了于server通信这块,之前觉得GWT不错不过只有client side, talk to server need RPC call. 而且Vaadin集成做的很好,想把他集成到现有系统很简单.
      

  8.   

    喜欢jquery+struts+spring+ibatis,jquery是当前最好的javascript框架。SSI组合比SSH组合更简洁有力!
      

  9.   


    那么 ext 和 gwt 哪个好呢?为什么
      

  10.   


    为什么是jquery  而不是其他的呢?它好在什么地方
      

  11.   

    具体的要考虑很多因素 ,比如说占用空间 ,内存 什么的   
           不过 通常用的  用的最多的有 ssh , servite+jsp    dwr +jdbc 
      

  12.   

    很好,其实好不好还是要用过才知道,个人感觉jquery厲害就厲害在他的selector,灵活强大,加上代码小,语法简洁,插件多
      

  13.   

    例如:类:
    • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
    • Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。线程模式:
    • Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
    • Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:
    • Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
    • Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。可测性:
    • 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
    • Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。捕获输入:
    • Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
    • Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言:
    • Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
    • Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).绑定值到页面(view):
    • Struts 1使用标准JSP机制把对象绑定到页面中来访问。
    • Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
     
    类型转换:
    • Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
    • Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。校验:
    • Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
    • Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性Action执行的控制:
    • Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
    • Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
    ——————————————————————————————————
    个人觉得Struts1是基于servlet开发,Struts2是基于Filter开发,相对于现在的企业来说Struts1的技术成熟,便于维护,而且现在的许多程序员使用SSH框架时,还是多选用struts1来开发~~
    当然Struts2安全性比Struts1要高~~ 
      

  14.   

    参考资料: http://blog.sina.com.cn/s/blog_4d8b80cb01009bgh.html 
      

  15.   


    你可以去这个地方看看:也许对你有用http://topic.csdn.net/u/20090331/08/c000404d-eaf3-49fd-85a1-afbf63791def.html
      

  16.   

    我现在用滴是MyEclipse8.5  基本纯Spring 其他什么都封装好了,感觉蛮好用滴!
      

  17.   

    sa-strutsとs2axisは日本の框架です。
      

  18.   


    struts axis   是日本的框架??不是很理解
      

  19.   

    框架太多了,重要的是思想你把MVC的核心思想搞清楚了,不管是用Struts2还是用Spring的MVC,都大同小异
      

  20.   

    sa-struts和s2axis是日本的框架,sa-struts类似于struts,但是不需要配置文件,s2axis是webservice和spring的结合版。hebe。。至爱。。
      

  21.   

    最近做项目都是用ssh 感觉还行 。hibernate嘛。性能差点  ibatis 不错  简单方便 prototype jquery 算是比较好用js框架。。
      

  22.   

    现在刚开始用SSH框架(strurs1) 还没有与其他比较过,也还没有对其进一步研究,不过很感兴趣(特别是struts2).
      

  23.   

    SSH 并不好的组合,SSH 有成堆的配置文件,为了接口而硬掰个接口出来了,为了分层而硬把层次分开,在开发效率上来说应该是很低的。将配置文件与代码分离,将会导致看看代码,再看看配置文件,严重扰乱开发人员的思维。我一般不喜欢人云亦云,至于为什么 SSH 会那么火,我感觉就是人云亦云的结果,只看到好的一面,没有发掘其不好的一面。说了那么多 SSH 的坏话,我估计会被口水淹死,呵呵。不管学习 SSH 或者其他什么也好,对于这些框架学习者我建议走的路线是这样的:Hibernate 等 ORM 框架之前,应是相当熟悉 JDBC 操作,并且知道一些理论性东西。使用 JDBC 的时候,是否使用了数据库连接池,如何使用开源的数据库连接池?
    JDBC 中的行集(RowSet)是做什么用的?
    JDBC 如何实现对象/关系映射,也就是 O/R Mapping。
    为什么 JDBC 规范推荐首选从 DataSource 中获得数据库连接对象(JDBC 4.0 Specification, p.51.),而不是首选从 DriverManager 中获得连接对象?
    使用 DriverManager 获得连接对象时,虽然从实现 JDBC 4.0 规范的驱动程序开始,不需要使用 Class.forName("xxx.xxx.xxx.Driver"); 了,但我们也有必要了解一下这句话的作用是什么?
    单纯地使用 JDBC 时如何实现低耦合性的事务管理?也就是说事务边界在业务层,一个业务层调用多个数据库操作的方法完成一个事务,在这种情况下如何进行事务控制?在使用 Spring 之前,我认为应先掌握:熟练地使用 JAXP、jdom, dom4j 等工具解析/生成 XML 文件,并能使用 XPath 进行 XML 查找;
    掌握 Java 中的反射,以及 JavaBeans 规范中的内省类,了解 JavaBeans 规范对于方法名、属性的要求(别看这个很简单,实际上很少有人知道);
    了解 JDK 的动态代理和 Cglib 的动态代理,了解 JDK 动态代理的限制,以及与 Cglib 动态代理的优缺点,
    并且了解一下动态代理是做什么用的;
    熟练地使用日志工具,比如:JDK 日志工具、log4j 工具等,以及在使用时需要注意些什么;
    能善于使用开源框架中已经实现的东西,比如 Apache Commons 中很多实用的方法,像实现了 LRU 算法的 Map 等等之类的。 下面是我对一些开源框架的观点:

    Spring
    优点:IoC、AOP 容器,集大成者,集众框架,可谓包罗万象,应有尽有,学习资料丰富
    缺点:极其繁杂的配置文件,原来有个 Spring 的项目,配置文件就有 8000 多行,可以把人看晕掉,极其不喜欢!大事小事都得弄个接口,感觉是为了接口而接口,估计有好多人是先写类再写接口的吧?Hibernate
    优点:ORM 的领头羊,ORM 事实上的标准,功能完善,学习资料丰富
    缺点:在效率上有些问题,加之含有许多的 hbm 配置文件强行与代码分隔。Struts 1.x
    优点:老牌 MVC 框架,MVC 事实上的标准
    缺点:说实在的我感觉除了比 Servlet 少在 web.xml 中配置一些东西、自动封装 FormBean 之外,没感觉到有什么好处,这个框架最不好用的就是它的标签,除了 html 标签好用之外,其他的标签极其不好用,特别是 logic:iterator 远远没有 c:forEach 用起来舒服。Struts 2.x/WebWork 没用过。JBoss Seam
    优点:
    完全打破三层体系架构,借助于 JSF 采用两层结构,页面层和组件层,Seam 是按照业务逻辑来分层,而不是按照架构来分层。Seam 的最低版本是在 JDK 1.5 之上设计的,使用了很多 JDK 1.5 的新特性,大量地使用 Annotation,这种方式完全可以取代复杂的配置文件。就算是其中的日志组件也是采用变参实现的,这样我们就不用在页面上写 if(log.isDebugEnabled()) 了。采用 xhtml 的 JSF 页面,将 JSF 原本的配置分散到每个页面的 .page.xml 文件中,可以在里面写些:进入页面时需要执行的方法、有哪些参数需要传递的、页面如何导航等等。Seam 拥有完善权限模型,权限不仅可以在页面中表现,也可以通过 Annotation 在方法上限制该方法的执行权限。Seam 中的 Backing Bean 可以是普通的 Java Bean,也可以是 Session Bean,这样就可以让 Seam 工程不仅能运行在 EJB 容器中,也可以运行在 Servlet 容器中。Seam 中扩充了 Servlet 中的请求范围,增加了 Conversation、Process,而不是 Servlet 中的 application, session, request, page 四种。最常用的是 Conversation 这表示一个业务逻辑的作用范围,比 Session 小,比 Request 大。这种扩充完全是为了一整步骤的业务逻辑而定制的。想想看使用 Seam 可以使用 Seam Gen 或者是 JBoss Tools 的 Eclipse 插件产生某个表的增删改查分页功能,如果不涉及业务逻辑,而且使用默认的模板可以一行代码不用写,快速开发,诱人吧 ^_^缺点:
    学习难度相对于 SSH 大很多,学习资料相对较少,其中所使用的 JSF 不用说了,相对于 Hibernate,Seam 所使用的 JPA 也是需要一定阶段地学习才能灵活使用的。其中还有多如牛毛的 Annotation、双向注入、 WebBeans 等概念也是需要一定时间来掌握的。Seam 中所使用的页面组件框架,比如 Ajax4JSF, RichFaces 等等也是需要一定时间来掌握的。 
      

  24.   

    有近一年没做过 Web 开发了,现在做的最多的就是后台服务端的东西。对于服务端开发也有众多的框架,比如:用于 JAX-WS Web 服务的 Apache CXF
    用于 JAX-RS Web 服务的 Jesery、Apache CXF(我感觉在 REST 式的 WebServices 上 Jesery 比 CXF 好用,CXF 在 SOAP 的 Web 服务上好用)
    用于 NIO Socket 通信的 Grizzly、Netty
    用于 HTTP 通信的 Apache HttpComponents(这个是 Apache Commons HttpClient 的升级,可惜连用法、API 都变了)
    等等,这些框架都是非常优秀、易于使用的。
      

  25.   

    struts2+spring+hibernate+extjs适合做中小型应用,绝对帅!
    理由:
    1,全是开源框架,免费,省了不少money;
    2,s2sh开源框架已经相当成熟,稳定性好;
    3,extjs界面比较眩,特别是桌面程序,UI设计可以取代美工,同样为你又节省了不少资本;
    4,若能掌握其运行机制原理,并熟练掌握运用,对将来自己写框架受益匪浅啊,顶!
      

  26.   

    从个人经验来说吧,
    struts1 struts2 MVC框架,之前用的struts1,相比struts2,1中的action中的返回的mapping.xxxxx就觉得挺烦的,且不支持intecepter,等等,struts2比1确实强大了很多,
    区别就点这个吧 http://java.e800.com.cn/articles/2009/319/1237434188417_1.html
    hibernate ibatis 这两个都是对jdbc的封装,hibernate可以说是几乎是完全自动的orm,完全面向对象,只要前期DB设计是好,几乎不用再写sql了, 所以hibernate其实对于开发者能力相对较强,碰到问题时处理起来比ibatis也许可能会难很多。
    说了hibernate这么一些,都是相对ibatis来说,ibatis是半自动,相对来说灵活性也很强,开发者自己写sql,自己定义dto,出了错程序员相对解决起来容易很多。
    如果程序员数据库设计不是很强,并且开发者基础不是很强,那么ibatis是很不错的选择。 
    当然还有其它区别,可以多参考文档。
    spring 不同于其它的一些框架,绝对算是一个绝对成功的框架,ioc,aop,spring MVC,与其它框架的集成,不得不说spring真的很强大,项目javabean的管理器,解耦等,很多项目都用了spring这些功能,说一本书都说不完。
     dwr jquery  这两个是我用的比较多的js框架,并且感触比较深的。
    jquery  在ui上体现得淋漓尽致,div效果,css控制几乎ui上无所不能,选择器,过滤器等页面定位,查找都很方便,而且插件一大把,绝对是一个优秀的js框架,可以用于非java的项目。
    dwr需要dwr.jar包,是一个java后台与web前端交互的一个ajax框架,为什么刚才没有说jquery的ajax,是因为与dwr的ajax比起来,dwr的ajax真的方便到了极点,dwr的优点在于ajax,极其对ajax数据的处理上,这个是dwr的强大之处。 但ui上几乎没有什么功能。
      

  27.   

    我工作了六年了,从我的个人检验来说,框架都是浮云。多被滥用。在没有掌握框架的情况下,("掌握"二字重读),作出来的东西很烂。原因有以下几个:培训成本很高,例如,hibernate,除了培训sql优化,还要在培训hibernate。在没有完全掌握的情况下,写出一些bug代码,加上人员流动大。bug越来越多。代码难以维护当然,有可能是因为我没有在正真的大公司呆过,做过正真的大项目。我现在,不用数据库操作的框架,如下来处理数据库操作,我觉得挺好。
    Connection DBUtils.getConnection()//查询数据库,返回地一行第一列
    Object DBUtils.queryObject(String sql)//查询数据库,返回地一行
    Object[] DBUtils.queryRow(String sql)//查询数据库,返回地所有行
    ArrayList<Object[]> DBUtils.query(String sql)int DBUtils.execute(String sql)//在一个事务里执行所有sql语句,如果出错,全部回滚
    int[] DBUtils.execute(String[] sql)//查询数据库,分页
    PagedData DBUtils.queryPage(String sql,Page page) 
      

  28.   

    参考这个从高度上面了解spring security Spring Security优劣之我见
      

  29.   

    我觉得grails开发起来比较的轻松跟简单,Java中的几行甚至是一段代码,用groovy的一行代码就可以达到相同的效果了。但是其性能就不太好了,运行起来慢。
      

  30.   


    简单、实用、上手快要算JSPGen了,配置文件就一个;功能强大,扩展无限,各平台数据方便集成!参考资料: http://www.JSPGen.com
      

  31.   

    hibernate 太庞大了,不如ibatis轻巧
      

  32.   

    使用框架有时候不能实现一些功能,因为封装太死了,我还是倾向与jsp+servlet+jdbc,我们的项目很大,可以用框架,但是他并不要求一定要用什么框架,
      

  33.   

    JSPGen 简单、实用、上手快了,配置文件就一个;功能强大,扩展无限,各平台数据方便集成!
      

  34.   

    这个话题我倒是感兴趣。我觉得Struts是我首推的,spring其次。尤其是struts2,虽说mvc机构自己写一个也很简单,但struts2的处理方式确实为开发带来的很多方便,类字段作为属性自动注入和获取等等都是天才的设计。
    Hibernate自从我做了一次数据库修改非常频繁的项目之后就没怎么用它了,用这个框架数据库结构若频繁修改会把人烦死。还有一点不知道是我理解不对还是怎样,说的不对请各位赐教,hibernate对应实体,如果查询的数据是多个表关联的数据,三个表关联甚至四个表关联,那当如何处理? 不是很麻烦吗?虽说也能根据主外键向上取,往下取,效率会有多低呢? 所以我后来很少用hibernate,也不用实体,而是把数据集封装到
    List<Map<String,Object>> 这个的结构中,不知各位对此有何看法,请发表意见。
    至于spring,我觉得他的aop是我最青睐的,不想用jboss的aop,而aspectj,IDE又没有很好的支持。
    不知众高手有何见解..
      

  35.   

    BOSS说得好:任何框架都是给懒人发明的!没有最好的技术,只有好程序员,这当然就是将技术运用到最恰当的项目中啦。盲目追求框架技术根本不可取,java还处于发展期,根本不稳定,今天你学会了这个框架,明天又出来一个。根本没必要刻意追求框架!编程重点就是:达到目的就行了,管它什么技术!
      

  36.   


    [size=12px]第一,框架给懒人发明的,我不否认,也正是因为如此,我们的编码效率或许就可以得到提升第二,我们不能盲目追求框架,可既然有框架,有时候可以方便我们编程,那干嘛不用呢?如果说现在什么框架都没有,就是用jsp+servlet+jdbc 是不是觉得很好呢?我不否认jsp+servlet+jdbc好,但如果是你那种想法的话,那为什么会出框架呢?就是因为在进步第三,我们也不是刻意去追求框架,有这贴的原因,不是想要知道哪个框架是最好的,只是想让大家认识到每个框架都是有不足的,有什么优点什么缺点,什么时候该用第四,为了达到目的,无论使用什么技术,对啊!为了达到目的,我们也可以用我们觉得适合适当的框架,(要知道框架也是用技术实现的)[/size]
      

  37.   

    这个强烈顶~
    去年开始学习java web,啥都不会的时候,公司让做SSH+EXT模块,然后自己相当地难受,什么都不会么。不过做法也很简单,我不需要去理解SSH,我只是抄抄配置,照着别人的模块写模块。关键Ext自己也不会,费了九牛二虎之力把东西写出来了。
    然后自己想着好好补习基础(jsp、Servlet、jdbc,到现在这些东西都没有经历过真正项目,jsp的内置对象阿,会话领域阿,servlet生命周期阿等等都没实战经验,然后也实在是没办法,只能补习。。)对框架的看法就是,当基础不扎实的时候就别谈框架了,不过公司都很恶心阿,面试的时候,10家(如果10家都是用的SSH框架)有8家必问:SSH框架会多少,我只能说这些东西我没怎么学过,现在只了解配置文件如何一步一步解析,至于配置里面很多细节,还有框架性能问题这个只能关注但还没研究。
    关键是出生产么,至于一般的公司应用开发,下面程序员框架上只要做简单配置就行了。关键觉得java基础一定要过硬(说实在话,我技术是差了点,不过我觉得现在很多程序员写出来的东西都很可怕,类似于基于jvm回收机制,代码是不是创建过多对象无法及时回收,SQL性能问题等等,我始终在想很多代码能否经得起压力测试)
    工作9个月,java web学习一年不到,代码经验3个月,毅然选择离职,后来进了中兴通讯,但还是邪恶的离开中兴了,现在在一家公司,也是不爽。
    接下来还是好好学习学习框架吧,想不通招聘1年的程序员为什么要问那么多框架问题(ajax框架会什么?Extjs。 接着jQuery用过么?自学了俩天,主要就是操作页面元素接着还要来句,那个 d-o-j-o用过么彻底无语了,听说过大名)
    他怎么不问问XMLHttpRequest对象,怎么不问问jsp+servlet这个前后台如何联系。数据如何请求,如何返回数据,如何处理对应。怎么不问问,你会不会写类(我始终觉得java的精髓就是会写类,自己一直问自己这个问题,然后就慢慢展开,面向对象多态、接口、继承、抽象类,往开就是再写个1到俩年代码再好好研究设计模式——没有2年工作经验大谈设计模式做什么,想不通,面试公司也问崩溃阿,老哥,我只有3个月编码经验阿)
    难道一个出道一年的程序员,在自己努力之下,在分配的工作有一半以上不是作开发的情况下,把这些东西弄通了,然后框架简单应用可以使用还不值得鼓励,不值得录用么?关键是这程序员对开发有很多想法,会考虑很多问题,也很努力学习抓狂,离职后第一家面试中兴通讯进去了,之后作了俩个礼拜,跑路了,然后找了N家,竟然都不要我有的公司NB,框架SSH还不够好,要自己对其改装,之后自动生成前后台,数据库设计好基本上单表增删该查代码都有了,这是叫一绝,关键还来个疑难攻关小组,开发当中碰到任何问题都可以交给疑难小组(还要尽量交给疑难小组),曾经面试了这样一家公司,叫我过去,死活没去擦完全没有自己思想了,完全就是码工
      

  38.   

    仁者见仁智者见智,学习中ing......
      

  39.   

    • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
    • Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。线程模式:
    • Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
    • Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:
    • Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
    • Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。可测性:
    • 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
    • Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。捕获输入:
    • Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
    • Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言:
    • Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
    • Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).绑定值到页面(view):
    • Struts 1使用标准JSP机制把对象绑定到页面中来访问。
    • Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
     
    类型转换:
    • Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
    • Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。校验:
    • Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
    • Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性Action执行的控制:
    • Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
    • Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
    ——————————————————————————————————
    个人觉得Struts1是基于servlet开发,Struts2是基于Filter开发,相对于现在的企业来说Struts1的技术成熟,便于维护,而且现在的许多程序员使用SSH框架时,还是多选用struts1来开发~~
    当然Struts2安全性比Struts1要高~~ 
      

  40.   

    spring2.5后springMVC很好,很强大
      

  41.   

    Struts2,tapestry,Spring MVC都很不错,很强大。
      

  42.   

     SSH學習中  多來瞭解瞭解。。
      

  43.   

    诚征程序开发
    合作现在郑州筹划运营一公司,其中需要建立一个网络交流互动平台,虽然在市场上有多年的工作经验,但是网站开发技术欠缺,希望有熟悉网络建设技术的伙伴共事,构筑网络平台征程序设计、网站设计  若干名有大型网站设计思想或经验,有意着请QQ837678875  EMAIL:[email protected] 
      

  44.   

    我们用的是SI,sping的mvc真的很好用
      

  45.   

    struts1.x配置太繁琐了,struts2没有用过
      

  46.   

    SSH用的越熟练,越像马工。国人都很浮躁啊
      

  47.   

    好久不用ssh框架了,主要在后台做纯java开发,通过这一贴又回忆了一下ssh框架,
      

  48.   

    学习JAVA的朋友 知不知道怎样控制计算性能?计算机怎么样执行代码?内存怎么分配?cpu怎么分配?
     所谓的框架都是用来管理代码和开发的,也就是一种思想,这种思想 你也可以有,如果了解计算机的工作原理,结合程序的实际开发,自己也可以定义一套框架,不过你要很精通计算加的接口,写每一个程序都要给他一定的计算机的资源.....
      总之框架就是经验
      

  49.   

    我们公司就是把SSH框架进行了封装,我们这些代码工,只需要写一些简单的配置,还有Action类和Bean类就OK了,这样大大的增加了加快了开发效率,但是其他方面的是否还行,我持怀疑的态度。
      

  50.   

    hibernate 现在一般的公司都不怎么用,,实在是不好控制!!基本上都用ibatis替代了