文档章节

SpringMVC和Struts的区别

Z
 ZR520
发布于 2016/11/03 09:57
字数 724
阅读 43
收藏 5

springmvc是单例,非线程安全

Struts2是线程安全的对每个请求都产生一个实例

springmvc的入口是Servlet,而Struts2的filter

spring的前段控制器是DispatcherServlet

Struts2的前端的核心控制器是FilterDispatcher

struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的 
struts2中,一个Action对象对应一个request上下文 

spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文 
  springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。


        struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数, 这就说明参数是让多个方法共享的,这也就无法用注解或其他方式标识其所属方法了


        intercepter的实现机制。struts有以自己的interceptor机制,spring mvc 用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,spring mvc使用更加简洁。
 
  • 他们都是控制层框架,都是用来跳转页面和接受参数的;
  • springmvc和spring是兄弟级别的关系,但是作用不一样;
  • 区别
    • springmvc是单例的,struts2是多例的;因为struts2中存在全局变量,如果是单利模式,遇到并发情况会发生冲突;
    • springmvc的前段控制器是dispatcherServlet,而Struts2的前段控制器是filterDispatcher;
    • struts的注解是@action,通过value和result来定义访问路径和返回的结果集;
    • springmvc的注解是@controller,通过@RequestMapping("")来定义访问路径,通过return返回字符串跳转页面;
    • 普通参数的传递;Struts2传参时通过私有属性,提供get,set方法来传递参数;springmvc是通过方法括号中定义变量来接受参数的,通过ModelMap来传参;
    • 日期类型的传递;Struts2直接传递字符串,后台Date就可以接受到,springmvc传参时需要定义一个注解@DateTimeFormat(pattern="yyyy-MM-dd")
    • 文件格式的传递;struts2是私有化的文件和文件名,提供get set方法来获取到文件
      • springmvc是通过注解@RequestParam('文件名')
    • json传参,struts2通常是通过提供的beasAction工具类来传递;springmvc是通过@responseBody注解来定义传递
    • request和response的获取,struts是通过beasAction提供的;springmvc是在方法后括号中定义来获取到的;HttpServletResponse ;HttpServletRequest
 
 
 
 

 

© 著作权归作者所有

Z
粉丝 0
博文 1
码字总数 724
作品 0
海淀
程序员
私信 提问
为什么有了Struts 还要Spring MVC

很多人学习了ssh ,都晓得struts最早被人用来控制表现层,但是struts已经有了mvc 为什么还有spring mvc呢? 所以我稍微查阅了一些资料,总结了一下他们的区别: 1. 机制。spring mvc 的入口是...

dengzhangtao
2010/12/06
1K
0
SpringMVC基础知识 (1)

1. Spring体系结构  如图所示,MyBatis属于其管理下的ORM(持久层映射)层,而SpringMVC则属于Web-MVC处理层的框架。 Spring MVC有以下优点: Spring MVC技术是与Spring框架结合而成的,它同...

LeaveStyle
2018/08/31
0
0
使用 Spring 更好地处理 Struts 动作

Struts Recipes 的合著者 George Franciscus 将介绍另一个重大的 Struts 整合窍门 —— 这次是将 Struts 应用程序导入 Spring 框架。请跟随 George,他将向您展示如何改变 Struts 动作,使得...

SeanCai
2010/08/29
193
0
spring2.5 管理sturts2 action问题

今天小弟着实悲剧了很长时间 麻烦各位兄台抽空看下 网速有问题 就直接贴了 struts配置文件 struts-index.xml配置文件 /index.jsp spring部分配置文件 web.xml配置 部分 contextConfigLocatio...

编码小兵
2011/07/29
1K
1
Struts2和Spring整合中的Action是由谁创建的,有什么区别

以下配置均未在Struts配置文件中加入 情况说明如下:登录页面提交到Action中,Action在execute方法中调用ms对象中的valid方法进行验证,返回SUCCESS. 在Action的构造方法中输出一行文字 第一...

李血甜
2012/12/15
2.4K
2

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部