zoukankan      html  css  js  c++  java
  • SpringMVC和Struts2的比较

    整体的框架机制
        1.Struts2的入口是StrutsPrepareAndExecuteFilter,SpringMVC的入口是通过DispatcherServlet实现.
        2.Struts2的Filter的过滤器是在容器启动之后进行初始化,服务停止之后进行销毁,SpringMVC是在Servlet在调用的时候进行初始化,优先于Filter调用,服务停止后销毁.
    拦截机制
        Struts2的拦截是基于类进行拦截,每次请求就会创建一个Action,和Spring整合的时候Struts2的ActionBean注入的作用于是原型模式即prototype(因为Struts2每次的请求过来都会创建一个Action他是一个多例模式,线程安全存在问题,因此要在配置prototype),通过setter/getter把request的数据注入到属性中.
        Struts2中Action的方法可以对应一个url,但是其中类属性确是被所有的方法共享,无法使用注解标识器属性所属的具体的方法.
        Struts2中一个Action对应一个Request,Response上下文,在接受参数的时候,可以通过属性接受,属性参数是被多个方法共享的.    
        Struts2的拦截是Interceptor机制,SpringMVC用独立AOP方式,Struts2的配置文件量还是闭SpringMVC的要大.
    SpringMVC
        SpringMVC是方法级别的拦截,一个方法对应一个request,方法基本上是独立的,独自享有request和response数据.而在每个方法的上面又对应一个url,参数的传递是直接注入到方法中通过@RequestMapping(value="/login",method="RequestMethod.POST")直接注入,然后Controller处理完结果返回ModelAndView,最后在通过视图解析器返回给用户.
        SpringMVC是一个单例的线程是安全的.在和Spring整合的时候,默认对所有的请求只会创建一个Controller,如果改变默认的作用域需要添加@Scope注解.
    性能比较
        SpringMVC实现零配置,SpringMVC是基于方法的拦截,加载一次单例模式bean注入.而Struts2是类级别拦截,每次请求需要对应创一个新的Action实例,需要加载所有的属性值注入,因此性能的话SpringMVC高于Struts2
     
    配置方面
    SpringMVC是Spring家族的相对于Struts2来说原装的肯定好,实现无缝契合.安全上也比Struts2高
     设计思想
        Struts2是OOP的编程思想,而SpringMVC是在Servlet上的扩展
    集成方面
        SpringMVC集成了Ajax,使用只需要注解@ResponseBody实现,然后返回数据即可,Strtus2拦截器也集成了Ajax,在Action的处理中一般需要安装插件或者写代码,使用起来相对于SpringMVC有点不方便.
    总之使用什么框架是根据业务的需求来进行的,本人的观点没有抨击任何框架的意思,能实现业务功能的框架就是好框架没有好坏之分.
        
  • 相关阅读:
    LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    [转载]弹出一个不带地址栏、工具栏的IE非模态窗口
    winform datagridview 如何设置datagridview隔行变色
    C#调用C++的dll存在的问题
    Seafile开源私有云自定义首页Logo图片
    Alpine Linux 安装 lxml Pillow 失败
    Docker容器 MySQL中文乱码解决方案
    JS 查找数组的父节点及祖先节点
    五分钟读懂UML类图(转)
    Ant Design按需加载
  • 原文地址:https://www.cnblogs.com/wang620/p/8431040.html
Copyright © 2011-2022 走看看