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中处理时一般必须安装插件或者自己写代码集成进去。

Stuts2与SpringMVC的更多相关文章

  1. SpringMVC基础——一个简单的例子

    一.导入 jar 包 二.配置 web.xml 文件 <servlet> <servlet-name>dispatcherServlet</servlet-name> ...

  2. 1、第一个SpringMVC程序

    1.创建如下项目结构 2.在src下的com.springmvc下创建User.java package com.springmvc; public class User { private Stri ...

  3. Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较

    servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...

  4. springMVC 与 struts+hibernate+spring优缺点

    springMVC: Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术.Velocity.Tiles.iText 和POI.Spring M ...

  5. ---搭建springMvc框架,希望对初学者有所参考

    Spring Mvc ==> Struts2   spring 无法替代   myBatis 工作量大 要自己操作sql语句 ==> hibernate   Spring Mvc 取代St ...

  6. struts2和springmvc比较1

    其实都是ssh只是一个是struts2+spring3.0+hibernate,而另外一个是 springmvc+spring3.0+hibernate,纵向来看比较struts2和springmvc ...

  7. SpringMVC入门总结

    一.SpringMVC的好处? 1,基于注解,stuts2虽然也有注解但是比较慢,没人用更多的时候是用xml的形式 2,能与spring其它技术整合比如说webflow等, 3,获取request及s ...

  8. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  9. Springmvc数据校验

    步骤一:导入四个jar包 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

随机推荐

  1. lnmp1.5下安装mongodb

    一.安装mongodb .下载MongoDB 2.6.0二进制发行版 $ curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64 ...

  2. scikitlearn库中调用k-近邻算法的操作步骤

    1.k近邻算法可以说是唯一一个没有训练过程的机器学习算法,它含有训练基础数据集,但是是一种没有模型的算法,为了将其和其他算法进行统一,我们把它的训练数据集当做它的模型本身.2.在scikitlearn ...

  3. python编写banner获取的常用模块

    模块的概念:模块也叫库,每个模块中都内置了大量的功能和函数.类和变量.它就像是积木,可以根据需要进行调用组合.模块就是程序,每个模块就是一个后缀为.py的Python程序.Python的模块分为标准模 ...

  4. 2-10 就业课(2.0)-oozie:2、介绍和安装1

    oozie的安装及使用 1.  oozie的介绍 Oozie是运行在hadoop平台上的一种工作流调度引擎,它可以用来调度与管理hadoop任务,如,MapReduce.Pig等.那么,对于Oozie ...

  5. docker中mysql数据库

    在docker中安装mysql数据库,直接上代码,pull 并run 补充20190809=============== 如果要挂载数据库实现数据持久化到本地的时候,会出现权限问题,这个原因是: 在执 ...

  6. 动态设置html根字体大小(随着设备屏幕的大小而变化,从而实现响应式)

    代码如下:如果设置了根字体大小,font-size必须是rem var html =document.querySelector('html'); html.style.fontSize = docu ...

  7. 在web.xml中可以设置jsp标签吗?

    <jsp-config> <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> ...

  8. H7-TOOL脱机烧录器功能开源发布

    H7-TOOL汇总帖:https://www.cnblogs.com/armfly/p/12283459.html 当前已经对STM32F030,STM32F103,STM32F429,STM32F7 ...

  9. [Codeforces #608 div2]1272B Blocks

    Description There are nnn blocks arranged in a row and numbered from left to right, starting from on ...

  10. python多进程编程中常常能用到的几种方法

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程.python提供了非常好用的多进程包Multiprocessing,只需要定义 ...