zoukankan      html  css  js  c++  java
  • Stuts2与SpringMVC

    Struts2:一个基于MVC设计模式的Web应用框架,本质上相当于一个servlet。以WebWork为核心,采用拦截器的机制处理用户的请求(Filter)。

        轻量级的MVC框架。低侵入性,与业务代码的耦合度很低。

        采用Filter实现

    实现MVC方式:

    SpringMVC:属于SpringFrameWork的后续产品。spring2.5版本发布后,支持注解配置,提高了易用性。

        使用简单,学习难度小于Struts2

        采用Servlet实现。

    Struts2缺点:采用了值栈,OGNL表达式,struts2标签库等,会导致应用的性能下降。

    一、框架机制:

      SpringMVC采用sevlet,Struts2采用Filter。Filter在容器启动之后即初始化。服务停止以后坠毁,晚于Servlet。Servlet是在调用的时候初始化,先与Filter调用,服务停止后销毁。

    二、拦截机制:

     1、struts2:

    Struts2框架是类级别的拦截,每次请求都会创建一个Action。

    一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收。

    Action的一个方法可以对应一个url,而类属性却被所有的方法共享。

     2、SpringMVC:

    SpringMVC是方法级别的拦截,一个方法对应一个request上下文。方法基本上是独立的,独享request,response数据。每个方法又有一个url对应,参数的传递是直接注入到方法中的,是方法独有的。处理结果通过ModeMap返回给框架。

    SpringMVC的Controller Bean默认单例模式Singleton,默认对所有的请求,只会创建一个Controller,没有共享属性,所以线程是安全的。

    三、性能:

    SpringMVC实现了零配置,基于方法拦截,又加载一次单例模式Bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入。

    四、拦截机制:

    Struts2:有自己的拦截方式Interceptor机制。

    SpringMVC用独立的AOP方式。

    五、配置:

    springMVC和spring是无缝的。

    六、设计思想:

    Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。

    七、集成:

    SpringMVC集成了Ajax、使用非常方便,只需要一个注解@responseBody就可以实现,然后直接返回响应文本即可。

    Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去。

  • 相关阅读:
    Android修改app的图标
    关于Python3中的WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443):
    Android 7.1 虚拟按键(NavigationBar)源码分析 控件加载、属性控制隐藏
    Android5.1 Browser 闪退分析 /data/tombstones
    RootCommand
    RK3288 Linux4.4.143 适配EETI
    Android 7.1 Camera2 拍照镜像分析
    Docker pull slow resolution
    Dockerfile使用OracleJDK创建自定义tomcat8镜像
    centos使用docker安装ActiveMQ
  • 原文地址:https://www.cnblogs.com/niexinlei/p/9709044.html
Copyright © 2011-2022 走看看