zoukankan      html  css  js  c++  java
  • struts2和spring mvc的比较

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt236

     

    Struts2

    Springmvc

         

    机制

    基于filter机制

    基于servlet机制

    处理方式

    Struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入

    Struts2实际上是通过setter getter方法与request打交道的。

    Struts2中,一个Action对象对应一个request上下文。

    Springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应。

    所以说从架构本身上 Springmvc就容易实现restful url。

    性能

    Sturts2是基于类,每次发一次请求都会实例一個 action ,每个action都会被注入属性。

    Springmvc会稍微比Struts2快,Springmvc 是基于方法的设计。

    参数传递

    Struts2是在接受参数的时候,可以用属性来接受参数,   这就说明参数是让多个方法共享的。

    Springmvc在接受参数的时候是基于方法的,每个方法都可设置自己的参数。

    设计思想

    Struts2更符合oop的编程思想。struts2脱离了servlet ,Struts2的action可以是一个普通的java类。

    Springmvc在servlet上做扩展

         

    Interceptor的实现机制

    Struts2有以自己的interceptor机制。

    spring mvc 用的是独立的AOP方式。

         

    优点

    Struts2的   多层拦截器、多实例action性能都很好,并不是导致性能问题的原因。

    除了spring-mvc.xml,基本上可以做到零配置。方法的访问支持resutful风格,参数的传递和配置都很灵活,Spring3 mvc的验证也是一个亮点,支

    支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可

    缺点

    Struts2由于采用了值栈,OGNL表达式等,会导致性能下降,很严重的下降。如果避免或减少使用这些,性能还是很好的。

    基于springmvc的注解非常灵活方便,但是不利于维护,
      配置文件可以看清所有的mvc架构,易于维护,可读性强。

    看Servelt规范:

    引用

    A filter is a reusable piece of code that can transform the content of HTTP requests, responses, and header information. Filters do not generally create a response or respond to a request as servlets do, rather they modify or adapt the requests for a resource, and modify or adapt responses from a resource.
    简要翻译下:
     filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。

    JSR303是javaEE6中的一项子规范,叫做 Bean Validation,用于对Java Bean中的字段值进行验证。

  • 相关阅读:
    Java关键字instanceof
    java中equals和==的区别
    Servlet、Filter、Listener总结
    struts2 拦截器配置
    Struts2技术详解
    构建Java并发模型框架
    基于MINA框架快速开发网络应用程序
    Spring的IOC原理
    Spring AOP原理及拦截器
    JAVA三大框架SSH和MVC
  • 原文地址:https://www.cnblogs.com/grefr/p/6094844.html
Copyright © 2011-2022 走看看