我也一直觉得jsp+servlet+javabean好一些,简单清晰,就是要人为约束好mvc的分层,至于fombean,我觉得用bean(request),完全可以自己写一下,并没有增加多少工作量,却比formbean要灵活的多,可能还高效一些。

解决方案 »

  1.   

    1. 楼主,其实就算你用了.net,还是有同样的问题,因为一个框架是否动态重载资源是由框架的设计和实现决定的。很遗憾MS和SUN,IBM等公司一直以来并不提供这样的功能。
    对于J2EE Container/J2EE Application Server的动态重载,我去年开始研究,据java版内其他网友说,WebLogic, Resin, Websphere都有。惟独Tomcat没有,所以我后来修改了Tomcat,写了个资源管理器模块,所以你可以考虑更换J2EE应用服务器或者看我的blog文章:http://blog.csdn.net/cm4ever/archive/2006/04/26/678539.aspx2.对于动态表单,据我所知,国内很多公司都在做的,包括我。只是由于这方面的技术也是非常复杂的,所以一直没有形成业界的规范。而做出来的公司基本也不公开而作为公司商业制胜的法宝之一。当然MS,SUN,IBM也肯定没做这种东西。所以你想找免费,开放的产品基本是不可能。
      

  2.   

    3.你文章的最后说到在框架中弱化控制器,放到javabean中。其实这个是SUN的J2EE规范中的model 1,并不是.net的原型。所以用model 1还是model 2都是可以的,只不过市面上都是model 2的框架,你要找一个基于model 1的就没有,你得自己写。我倒是知道javaeye有篇帖子有人写了非这两种模式的框架(在我看来基本原理基于model 1)。帖主并不开源,只是技术讨论。
    http://forum.javaeye.com/viewtopic.php?t=11726&highlight=%C0%AD%C4%A3%CA%BD
      

  3.   

    谢谢 cm4ever 的回复,刚才不好意思,说错话了,javabean+jsp 的model应该就是.net的原型,而不是反过来,我强调的几个问题 forward配置、动态表单、第三方的支持,的确是struts的短板,经过一年的使用,struts的这些问题真的使我决定不能不放弃struts,希望以后能有更好的技术出来,能够吸引我。
      

  4.   

    forward配置是struts的强项而不是弱项。他只是不能动态重载,所以只要可爱的应用服务器支持动态重载就没有问题了。第三方的支持,你指的是图形界面开发工具,实际上给struts写的早就有了,你google一下试试。
    这就象你只使用tomcat,而不知道weblogic,websphere等有动态重载这种功能,实际上是限于自己的认知而不是工具的问题。所以你即使换了其他的框架、平台还是有这些问题,所以关键不是你换什么工具,而是你采用的工具中有你需要的什么特性,不要因为别人说好而去用他,要在整个开发平台的高度去看待工具的采用。实际上,开发平台的整体架构应该是公司架构设计师所定制。我从你发表的话判断虽然你开发的系统不小,但却没有开发体系的定制者,而如果是你做的,我只能说你不合格。
      

  5.   

    谢谢 cm4ever 朋友,我觉得您所说的架构设计师,应该是有丰富的开发经验,同时,能够按实际情况考虑适当的框架,以达到最低的成本、最高的开发效率,而在实际开发过程中,我们发现,struts并不适合于业务变化比较快的系统
       对于成熟的系统,页面表单无法固定,因为数据库的指标和字段,都交给用户自己去维护,而且是要通过一个系统的后面来进行维护,而不是用户要加一个指标都得通过程序员来添加,而且有时候,对于工作流引擎来说,还需要再控制下一步系统工作的转向,还不用说第三方开发工具等的问题。
      所以,按实际工作的例子,struts无法解决这些实际工作,技术也得满足实际的业务需求,如果不考虑成本、效率,这样的架构师更是不合格。
      cm4ever 想驳倒我,却拿不出推翻我的观点的论据来,不过,欢迎您来拍砖。谢谢 cm4ever朋友。
      

  6.   

    我觉得struts是根据mapping的内容实现跳转,你可以用代码覆盖啊,将冷冻的那个字段重写一下,然后更改
      

  7.   

    或者你在action中得到你想跳转的字段存入request,然后forward到一个含有跳转脚本的jsp,jsp拿到你存入的request内容,实现动态跳转
      

  8.   

    看样子还是没了解struts啊,我认为struts挺好的,只要用的恰当,很好用啊
    看样子你们的设计又问题啊,要多种action结合使用
      

  9.   

    可以把formbean放到数据库中,我们公司用自己开发的工具来做很轻松啊!
      

  10.   

    我提几点建议:1:个人感觉struts的mapping映射,调转还是比较清晰的阿。如果你觉得复杂,可以把struts-config.xml.分成多个配置文件,这样比较清晰一点。2:你可以在struts-config.xml里面配置动态的formbean,即使要更改,也比较方便更改。3:dreamwaver、frontpage、webeditor,对于繁杂页面的设计,是非常方便的,而对于 struts标签库,没有哪一种软件能够支持。你可以试试IBM的WSAD.可以的。不过你的表现层想做的花哨,或者便于维护,那你的系统的前台可以用jsp+javabean这种模式。系统的后台可以用struts来做。
      

  11.   

    谢谢各位朋友拍砖:
     mysticality,你说的 
    或者你在action中得到你想跳转的字段存入request,然后forward到一个含有跳转脚本的jsp,jsp拿到你存入的request内容,实现动态跳转
    呵呵,这还真是个好办法啊。
    不过,对于动态表单呢?如果解决呢?
    love620 朋友:
    你可以在struts-config.xml里面配置动态的formbean,即使要更改,也比较方便更改。
    动态表单?还没听说过有这样的使用方法。
      

  12.   

    对楼主的说法不敢苟同。仅在技术上说说自已的意思.
    一:
       [每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置
    forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录
    、文件变更,需要重新修改forward]
       一般来说,项目开始的时候,类包名,jsp文件的存放路径都已经固定死的.如果说不能
    确定,那只有一点,你们的前期设计不够完善.如果文件变更,只需要struts-config.xml中
    把jsp文件名改改就可以,如果你动过forward的name,当前需要在action修改.如果没有动过,
    根本就不需要重新修改.换过来说,如果有10个jsp,你不用struts你还是必须在jsp里转发10次,
    这时候如果jsp的文件名动过,你也必须找到相关的jsp文件作修改。试想想,你是愿意在一个文件里修改,
    还是愿意在10个不同的文件里修改.
      [
    注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大]
      这我必须承认,确实是这样。但是,如果你jsp+servlet+javabean的方式,如果你把业务处理
    内容放在javabean里,上面的操作也是必不可少的.当然,你也可以把代码放在jsp里,这样不需要重启服务,
    但是,你想过它的维护量吗?系统越大,你的维护量是呈几何指数增长.
    二:页面的表单是不固定的.该怎么去做?当然,仅仅用struts确实是不好实现.这时候应该想到变通,
     比如说,结合velocity..举个例子说明:
     人员基本信息:姓名、性别、出生年月
     数据库的页面表单肯定是这样的:姓名:是一个普通的文本框.性别是一个下拉框,下面的内容是男和女.
                                  出生年月是一个日期选择框.
    我不知道大家时怎么去生成html文件,是否用out.println?或是在服务器端直接生成html?这些方法都是可行的.
    但肯定不是最好的.我自已的做法是:为每一种类型的控件定义一个模板, 这样生成html页面的时候,只需要替换
    一些东东而已.
     这时候,页面的取值就不好再通过formbean的方式,有两个方法,一是直接在action里使用request.getParameter().
    或是可以调用struts的api,直接将request的值放入到map或者是javabean里.三:关于页面这个东东,我也感觉这确实是struts的一个弱势.我们一般的做法是美工就直接画页面,只生成html语言.
     程序员需要将页面控件转换成taglib.
     这对没用过struts的程序员确实有点高,但是对工作两年以上的java程序员,应该是没有难度.上面这些只是顺口说说,只针对技术,不针对人.说得不好,尽管提!
      

  13.   

    我写了个基于javabean的webframework-mantishttp://wang.trulytech.com推荐一下,谢谢
      

  14.   


    1 forward 配置是有些麻烦但是那可是集中配置。出了问题。找配置文件就可以了。总比你在又有java代码。又有html标签的页面上找到你想要的link方便吧另外如果变更指向的是forwordAction的话,修改完配置文件之后所有页面引用该link就会全部适用.维护起来绝对比你直接跳jsp要方便. 
    2 页面表单变更问题,无非你要增加属性.但问题是你的数据模型有没有这个字段,如果有那么你的pojo也应该有这些属性.只需要增加相应form属性就可以了再修改v层就可以了.如果没有的话.那么你需要修改v层.和m层.而且还有struct标签.在v层照相关的属性很方便的. 
    3 struct标签并不是不好.而是你不会用有好多标签带的功能能搞省好多js代码.比如logic,和html 
    总结: 
    哥们就是觉得开发起来麻烦.但是你没有考虑到以后的复用性和扩展性.总想不费什么力气就把系统就座出来.思想是想当初做delphi一样.托出界面后台添逻辑但是mvc你也总应该看一下吧你把东西全扔到jsp上.jsp又不能想java代码那样排版.看的眼花缭乱.本人做过jsp+javabean的一个维护深受其害.请拿出说服性的论证,不要发一些开发上的牢骚.这样不利于成长.看来哥们刚刚出道吧.什么一个大型企业的人力资源管理系统,整个系统管理的人员大约
    有1.6万人左右,系统基于jboss+oracle,java技术框架为struts,移动的数据量应该你的项目大吧.数据量和功能就不提了.也用structs,跑得也挺好呀,要是让楼主开发,项目是不是要失败呀..
    你的烦恼是技术不够 ,应该从技术上多下功夫.实在不想下功夫还是转行作老板吧
      

  15.   

    用struts不是很多,说说我的看法,交流目的的。一、转到展示层时,需要配置forward
    ......
    --------------------------
    这个不是问题,struts2.0以后就允许多个配置文件了,即使一个配置文件,可以使用cvs这样的版本控制工具,也不是问题。
    修改了配置文件,必须要重起,除非你修改服务器的行为——自动检测你的配置文件的变化情况。
    变通的法子也是有的,比如你修改了一个配置文件,然后修改一个class,这样让服务器重启,但是问题是,一般的系统产品环境下是不会允许这么做的。二、当页面表单需要自动变化或者频繁变化时。
    ......
    ---------------------------
    这个不是什么好的经验,说实话,我宁愿将这一切归咎于需求人员的能力缺陷。我们不应该做着这样的配置去迎合需求的不稳定。
    即使是修改不可避免,我还是倾向于修改源文件,重新编译,重新发布。
    即使不考虑将字段放入数据库带来的系统本身的问题,这样做(将表的字段放入数据库)对于实施人员是一种灾难。这是经验,教训惨痛。
    也许这么说有些武断,但是我从业也有几年了,我确实没有看到几个合格的需求分析人员——都是mp精,干实事一点用都没有。三、要引入struts包,引入strtus标签库......
    -----------------------------
    我的习惯是:taglib少用,尽可能的不用。主要是省心。
    其实页面出现两三行简单的java代码天也不会塌下来。题外话:
    struts不过是展现层的框架,如果真的是个大系统,别的地方的力气应该更大一些,于是struts是否合适就显得不那么重要。
      

  16.   

    唉,和lz一样,struts用得我太痛苦了
    为什么ASP.NET可以做得这么方便啊
      

  17.   

    我没有体会到struts相对于ASP.NET的一点点优势所在
    谁能告诉我?
      

  18.   

    我习惯用自己写的一个MVC框架来做项目。
    毕竟struts是一个通用的,想包括所有情况,所以包含了很多多余的东西,不一定适合自己。
    自己写的框架可以很灵活,跟自己需求很接近,用起来也顺手。
      

  19.   

    其实搂主在用Struts之前就应该考虑到适不适合你的系统,Struts不是任何系统都适用的,我的看法是Struts不适合复杂的系统,我这里的复杂的意思包括系统流程(比如工作流)和界面的复杂。
      

  20.   

    很多朋友都在说struts好,规范,mvc严格,其实,正是由于这些规范,限制了系统的灵活性。欢迎大家访问我的blog,继续讨论这个问题。http://blog.csdn.net/daveeyang/
      

  21.   

    struts标签有很多可视化的工具和插件啊,比如说用eclipse的话有workshop,还有ibm的wsad,用起来都挺方便的。开发的时候如果修改了struts-config.xml应该可以自动加载的,开发完成后,我想一般也不会再修改配置文件了,所以你的担心有点多余,除非是开发一部分就拿给客户先用着,看这个帖子学到不少东西啊。收藏
      

  22.   

    struts我觉得唯一的优势就是validator,其它的地方太麻烦了,用servlet+javabean+jsp也能实现mvc,非那么麻烦干什么
      

  23.   

    刚开始用STRUTS,就觉得麻烦,配置文件,看到都头大,还有formBean。
    不过流行,你有什么办法,你说不好,一堆人来PK你。
      

  24.   

    struts优势就是validator
    》》》》》其实我写一些简单的method(request)就完全可以实现这个功能了。
    》》》我喜欢和大家讨论,一起讨论一起进步嘛。
      

  25.   

    "其实我写一些简单的method(request)就完全可以实现这个功能了"这是什么意思?另外,任何一种框架都不提供修改了配置文件会自动加载的功能的。除非你把配置信息都写到properties文件里面去。
      

  26.   

    最近不是经常上网。楼主你这种行为就象是事后诸葛,你在用一个工具用了1年后,向上级说,我们经过1年的经验,发现这个工具不适合项目,那你事前干啥去了,花了1xx w RMB就得出用错工具的结论?难道你阅读他例子包里的源代码,列出这个工具的特性和经典使用方式,会花很多时间吗?再和项目的技术需求比较,哪些部分要使用,哪些部分不使用,这不是一目了然吗?确认工具是项目开始前的事,结果进行到后期才知道工具不适合。所以这不是工具的问题,而是人的问题。当然,我以前也碰到过项目经理有这样的事,所以我们还是比较盲目跟风。要想不盲目跟风,还是得多学习提高水平,我觉得至少要达到以下水平:
    程序员
      能够在短期内(1星期)了解一个新工具的经典使用模式,一般就是看它的example/sample目录下的源代码,作为补充,可以阅读最佳实践(best practice)之类的资料。
    设计师
      除了上面这点,还得能够从例子和接口文档中反推出它的架构,最好可以阅读源代码来验证。推荐用debug来辅助。
      设计师要达到这种水平,才能拿出足够的证据,说服公司高层,让他们知道这个工具确实不能满足业务需求,要么改它,要么自己写。另外,对于struts,我认为它的action设计比较出色,但他的formBean比较笨重,仅能够解决固定页面的问题,所以我们项目中没用过formBean,也没用过它的taglib。
      

  27.   

    用struts不多,谈谈看法一、转到展示层时,需要配置forward
    -----------------------------------
    我觉得在配置文件里做,总比要做到代码里强。
    另外Tomcat部署问题由来已久,不过可以在管理页面reload,不必重新启动tomcat,这个速度还能忍受。二、当页面表单需要自动变化或者频繁变化时。
    -------------------------------------
    我觉得formbean不适合这种情况,你可以在formbean里用map,同样可以实现动态表单,
    不过在formbean里用map,和不用formbean也没什么两样了,体现不出formbean的优点。
    三、要引入struts包,引入strtus标签库,现到现为止,我们有所见即所得的
    dreamwaver、frontpage、webeditor,对于繁杂页面的设计,是非常方便的,而对于 
    struts标签库,没有哪一种软件能够支持
    -------------------------------------
    这个我到觉得无所谓,可以先建页面模板,后加标签。
    还有标签要少用。
    不要对一个通用框架要求太高,如果有特殊要求,最好自己建一个专用框架。
      

  28.   

    跳转?开玩笑,你用javabean难道在这里进行跳转?或是再jsp中完成?在jsp完成完成10跳转容易吗?如果有20个jsp没有都有10跳转,我看你会疯的,至于struts标签,我重没用过,太麻烦,jstl很好
      

  29.   

    我有一个ASP.NET的博客+论坛+相册的程序(MVC模式)想交互一个同等或类似的JAVA程序学习一下, 哪位有兴趣同我联系: tech#sm160.net示例网站: www.bokegu.com
      

  30.   

    我一直认为struts是垃圾 可惜没人听我劝
    我认为struts适合作教材
    而不是适合用于实际项目我研究了几个月的struts,最终没有在任何项目中用它,作为一个可以控制项目框架得人
    那就应该事先考虑好
      

  31.   

    请问:cm4ever(Java土著)所以我们项目中没用过formBean,也没用过它的taglib。---------------
    那你为什么选择用struts呢 很明显 跟着别人的走
    我发现现在的java有些可怕,很多新人 不知道用什么
    可能基本的jsp,jdbc都写不好,但已经在用struts spring hibernate了为什么用?因为大家都在讲,讲的人又有多少是传声筒
      

  32.   

    支持楼主,没必要把一个简单的事情复杂化,放弃struts吧
      

  33.   

    struts标榜节省了开发时间,节省的维护精力,但事实远不是这样
      

  34.   

    rex0y(没学好九阳神功就妄想几小时练成乾坤大挪)
    我们用它的action机制,只用(我们认为)它出色之处。
    这是对它详细分析之后的决定。你明显没阅读我前面的段落,我说过工具选择是在项目开始之前,鄙视你这种断章取义的行为。
      

  35.   

    struts标榜节省了开发时间,节省的维护精力,但事实远不是这样支持楼主,没必要把一个简单的事情复杂化,放弃struts吧
      

  36.   

    我虽然没用过struts,但它首先给我的感觉就是文件配置比较多。我个人也和楼主感觉差不多。
      

  37.   

    看了一堆话筒。还是那样,乱七八糟的,想用就用,我都用了好久了,就看你会不会控制,用Struts做项目,编程清晰。接着用!
      

  38.   

    1, tomcat 支持动态 reload
    2, struts 可以大大简化action配置,对应jsp太多那大概是你设计的问题
    3, struts 自带的标签库是比较差劲,但是可以替代的也有很多,推荐在表示层使用 jstl