美文网首页
SpringMVC和Struts2的区别

SpringMVC和Struts2的区别

作者: 煗NUAN | 来源:发表于2020-03-04 20:06 被阅读0次

    SpringMVC和Struts2的区别

    • 底层框架不同

      • Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁
    • 拦截机制不同

      • Struts2框架是类级别的拦截,每次请求都会创建一个Action,和spring整合时,Struts2的ActionBean注入作用域值原型模型prototype(否则会出现线程并发的问题),然后通过setter,和getter把request数据注入到属性中

      • Struts2中,一个Action对应一个request,response上下文,在接收参数的时候,可以通过属性接收,这说明属性参数是让多个方法共享的

      • Struts2中,Action的一个方法对应一个URL,而其属性却被所有方法共享,这也就无法使用注解或者其他标识其所属的方法了,只能设计成多例

      • SpringMVC是方法级的拦截,一个方法对应一个request上下文,所以方法直接基本上是独立的,独享request,response数据,同时一个方法又和一个URL对应,参数的传递是直接注入到方法的,是方法独有的,处理结果通过ModeMap返回给框架.在spring整合时,SpringMVC的controller bean默认是单例模式,所以默认对所有请求只会创建一个controller,又因为没有贡献属性,所以线程是安全的,如果要改变默认的作用域,需要添加@Scope注解修改

      • Struts2有自己的拦截interceptor机制,SpringMVC这是用的是独立的Aop方式,这样导致Struts2的位置文件的量比SpringMVC大

    • 性能方面

      • Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。所以,SpringMVC开发效率和性能高于Struts2。
    • 配置方面

      • spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。
        SpringMVC可以认为已经100%零配置。
    • 设计思想

      • Struts2更加符合OOP(面向对象编程)的编程思想, SpringMVC就比较谨慎,在servlet上扩展。
    • 集成方面

      • SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。

    相关文章

      网友评论

          本文标题:SpringMVC和Struts2的区别

          本文链接:https://www.haomeiwen.com/subject/jjqhrhtx.html