个人感觉struts2的内容不是很多,重复的东西却很多,为什么这样说呢
1.就编码风格来说,就有属性驱动和模型驱动,大部分人支持使用属性驱动,因为它灵活。哪属性驱动有什么用。
2.验证这一块,可以使用编写validate()代码的方式,也可以使用验证框架,分为字段优先校验器和校验器优先校验器
。建议使用代码的方式。哪校验框架有什么用。
3 struts2也支持自定义方法,即在struts.xml中的action元素内定义method属性,属性值即要执行的方法,其中该方法的声明要与execute()一致,但是这种方式容易导致action代码混乱,不推荐使用。还是没什么用
4.国际化这一块,更是大多数的项目都用不上吧。
5.防止表单重复提交,可以使用重定向和Session.Token机制。但建议使用重定向,因为它统一。哪Session Token有什么用。
6.最悲惨的是struts2可以使用struts2-convention-plugin-2.2.1.1.jar 插件实现基于注解的配置,那么struts.xml还有什么用。
7,自定义方法就没有,自定义方法的校验又有什么用。

解决方案 »

  1.   

    从核心来说,Struts2跟Struts1简直不是一个系列的,它更象WebWork系列的。
    这其实是一种进步,因为Struts1的缺陷越来越明显。
    但是原有的Struts1的用户不能放弃,所以增加了很多跟Struts1兼容的内容(其实本来可以不要的),以便熟悉Struts1框架的使用者升级上来不会感觉那么突兀。这大概就是造成你感觉重复的东西很多的原因。
      

  2.   

    1. 这个不是风格的问题,使用模型驱动的话,你无需在action 中手动给你的vo或者实体类的属性赋值,框架帮你自动完成,属性驱动灵活,但需要做很多手动的工作.   这个要在具体实际环境下看你们怎么选,框架给你两种方案而已2. 验证这块,如果表单中有很多个字段,你用代码的话,会很麻烦,如果表单验证的规则修改,你需要修改代码,如果用验证框架,你仅仅改个配置文件就行了。 也就是说,应用要分场景,如果就几个字段,你用代码验证可能更简洁,但如表单字段多,而且有很多类似重复的验证规则,则框架的作用非常明显,也很清晰。3. 我不知道你的混乱从何而来?  action中的方法无非就是调用service层得封装方法,命名规范一致即可,不会出现你说的问题。而且在大型项目中,必定都是自定义的方法,也就是insert,update,delete,query,queryAll这些方法名都是自定义的. 4. 如果你做的项目仅仅在国内用,可以不考虑这块。因为国家化需要花费一定的时间,在产品做成来抢占市场后,可以再进行国际化相关的工作。不过,一般都是直接一开始就不会写死,预留国家化支持,开始只写zh_CN的资源文件即可。  但如果你们是做产品,基本都默认是要支持国际化的,虽然当前只有中文支持,但有扩展,以后有新的语言支持需要,添加相应的资源文件即可。5. 重复提交这个 我没具体研究过。 不过一般项目都会在前台和后台都是用手段来解决。 6. 很多框架一开始是只支持xml配置的,因为 annotation 是jdk5后才出来的,明白吗? 这个只是根据语言的发展而发展来的东西,而且struts2的这个插件并不是很好使。7. 不知所云
    总的来说,你对该框架的了解还是停留在表面,等你真正熟悉了再想你这些问题就会明白,为什么有你所说的这些所谓“没什么用”的东西了...
      

  3.   

    得深入理解Struts2 工作原理
      

  4.   

    关于5.是这样的,表单提交后,如果重定向,则不会出现刷新重复提交。。如果是转发的话,浏览器的URL并不会跳转,刷新会重复提交表单。。关于你这个问题,我问下你哦,给你个场景。如果用户填写表单,里面很多数据,你用后台验证(跟JS无关的验证),某一个数据验证失败了。。你把用户重定向回页面。。他填写的东西全丢了。又要重填一遍。。(你是用户,你都暴躁了。。)。这里用TOKEN就很方便了
      

  5.   

    对SSH的认识,就是仅仅知道它是一个框架