zoukankan      html  css  js  c++  java
  • Spring MVC和Struts2的比较(二)

    1。Spring MVC的controller+command object模式比Struts2的Action模式更安全一些。而在Struts2中,自动数据绑定发生在Action对象上。这样,在Action类中任何有Set方法的属性都有可能被http request的参数覆盖,在设计Action类时如果不小心,就可能会产生安全隐患。比如某个身份认证方案可能会依赖于Action的某个属性,如role来判断用户是否具有访问该action的权限。这样,恶意用户可以通过在request参数中包含一个role参数来改写action本身对role属性的设置。
    在Spring MVC中,controller和command object是两个独立的类,自动数据绑定只发生在command object上,对controller没有影响,就不存在这个问题。
    2。Struts 2的action类本身是线程不安全的,不能使用singleton模式来创建。在我看来,这个是比较ugly的。特别是一些处理逻辑比较复杂的action,每次创建一个新对象实例的代价可能是比较高的。而Spring MVC的command object基本上都是POJO,创建实例的代价很低。
    3。Struts 2的jsp tags使用OGNL作为表达式语言。我个人觉得这个语言功能过强,特别是能够直接访问action本身的方法,这类功能很容易被滥用,从而重蹈过去jsp<% %>标记的覆辙。
    当然,Struts 2也有很多功能是值得Spring吸取的,比如redirect-action,对namespace的支持等等。特别是Struts 2的底层框架XWork的最新版本2.0beta3已经支持基于annotation的validation,这个Spring应该尽快跟进。
    不过我还是觉得Spring MVC更好些。

    下面列出我对这两个都很优秀的框架的评估,请各位帮忙评判一下:

    ------------------------SpringMVC-----Struts2.0(webwork2)--------------获胜者
    开发效率----------------5-------------?---------------------------------?

    运行效率----------------5-------------4(action非单例)------------------SpringMVC

    学习成本----------------4-------------3(同事反应学习曲线比较陡)--------SpringMVC

    与Spring集成------------5(无缝集成) 4----------------------------------SpringMVC
    难易程度

    validator集成-----------4(commons)--5----------------------------------Struts2.0

    AJAX集成----------------4-------------5(丰富的tag支持)-----------------Struts2.0

    可测试性----------------5-------------5----------------------------------平局

    从实际开发效果来看,在4个项目用了spring2.5 mvc,2个项目用struts2,发现招聘时,都是struts1,struts2的求职者,而spring mvc全得现培训,不过学习曲线实在是低,把架构搭好之后,绝大部分的人都能很快适应,并快速开发。而struts2的开发,以前2个项目,都是刚好别人 搭的架构,实际做功能测试和性能测试时,问题成堆。struts2的数据绑定简直就是灾难,新手经常性的把参数给弄 乱。
     

  • 相关阅读:
    NHibernate+MySql (erro 解决方法)
    Android详细的对话框AlertDialog.Builder使用方法
    Android调用WebService
    android连接Mysql数据库之JDBC方式
    ASP.NET MVC 过滤器Filter
    C#动态生成html页
    MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
    Asp.Net生命周期系列三
    Asp.Net生命周期系列二
    Asp.Net生命周期系列一
  • 原文地址:https://www.cnblogs.com/wuxiang/p/4528115.html
Copyright © 2011-2022 走看看