最近才发现spring也能实现MVC,于是在网上找了找相关介绍:

当初选框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢

不用不知道一用就发现开发效率确实比struts2高

我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置

spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外)

比较了一下strus2与spring3 mvc的差别

============================================

struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入

struts2实际上是通过setter getter方法与request打交道的

struts2中,一个Action对象对应一个request上下文

spring3 mvc不同,spring3mvc是方法级别的拦截,

拦截到方法后根据参数上的注解,把request数据注入进去

在spring3mvc中,一个方法对应一个request上下文

好了我们来整理一下

struts2是类级别的拦截,一个类对应一个request上下文,

springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应

所以说从架构本身上 spring3 mvc就容易实现restful url

而struts2的架构实现起来要费劲

因为struts2 action的一个方法可以对应一个url

而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了

===================================

spring3mvc的方法之间基本上独立的,独享request response数据

请求数据通过参数获取,处理结果通过ModelMap交回给框架

方法之间不共享变量

而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的

这不会影响程序运行,却给我们编码读程序时带来麻烦

====================================

spring mvc 优点:

spring mvc通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。

它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所没有的优势。而且框架本身有代码,而且看起来也不费劲比较简单可以理解。

1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。

2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)

3、Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。

====================================

spring3 mvc的验证也是一个亮点,支持JSR303

处理ajax的请求更是方便只需一个注解@ResponseBody ,然后直接返回响应文本即可

附上一段代码:

@RequestMapping(value="/whitelists")

public String index(ModelMap map){

Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId()) ;?

List<Group> groupList = groupManager.findAllGroup(account.getId()) ;

map.put("account", account);

map.put("groupList", groupList);

return "/group/group-index" ;

}

//@ResponseBody ajax响应

@RequestMapping(value="/whitelist/{whiteListId}/del")

@ResponseBody

public String delete(@PathVariable Integer whiteListId){

whiteListManager.deleteWhiteList(whiteListId) ;

return "success" ;

}

Struts 和 SpringMVC 的区别是什么呢?

很多人学习了ssh ,都晓得struts最早被人用来控制表现层,但是struts已经有了mvc 为什么还有spring mvc呢?

所以我稍微查阅了一些资料,总结了一下他们的区别:

1. 机制。spring mvc 的入口是servlet,而struts是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,

这里就牵涉到servlet和filter的区别了,我其他博客会专门写一写 servlet和filter之间的区别。

2.性能。 spring会稍微比struts快。spring mvc 是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个 action ,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。

3.参数传递。 struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。

4.设计思想上。struts 更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展,

5.intercepter的实现机制。struts有以自己的interceptor机制,spring mvc 用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁。

转载于:https://www.cnblogs.com/Struggles/p/4495189.html

Struts的MVC和Spring的MVC的区别相关推荐

  1. Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666

    Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666 作为初级程序员,这样的问题在面试中,也被问到过,随着越来越了解,发现以前自己答的真水. 一般的回答 ​ 先来说说我以 ...

  2. 【Spring Web MVC】Spring Web MVC 注解开发环境搭建

    为什么80%的码农都做不了架构师?>>>    1.创建maven项目 创建一个名为:springwebmvc-first的maven项目 2.添加依赖包 要使用springWebM ...

  3. Spring Web MVC是什么

    2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...

  4. Spring Web MVC (Spring MVC) 的相关例题及解析

    MVC.web MVC.Spring MVC 和 Spring Web MVC的联系与区别: 1.MVC 是一种架构分层模式 2.web MVC 是指在 web 领域下实践的 MVC,因为 web 领 ...

  5. Spring Web MVC详解

    Spring Web MVC详解 原创 2016年03月23日 10:55:57 标签: 421 编辑 删除 2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java ...

  6. Spring MVC 和 Spring 总结

    1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...

  7. 使用Spring 3 MVC处理表单

    本文是有关Spring 3的一系列文章的一部分.该系列的上一篇文章可以在此处获得 . 在本文中,我们向Spring MVC迈出了又一步. [此外: 术语MVC的创建者提供的pdf .]从上一篇文章构建 ...

  8. Spring 3 MVC深入研究

    前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了.Spring3 MVC结构简单,应了那句话简单就是美,而且他 ...

  9. Spring Web MVC(一)

    概述 Spring Web MVC框架的特点 五大核心组件 编程步骤 五大核心组件 DispatcherServlet前端控制器 WebApplicationContext中特殊的bean 处理过程 ...

最新文章

  1. C#一个事件中调用另一个事件
  2. Android--手势触控屏幕控制/GestureDetector
  3. 如何把你的搜索引擎也加入到Firefox中
  4. LeetCode 240. 搜索二维矩阵
  5. 使用Linq时出现Row not found or changed. Linq 找不到行或行已更改的解决办法
  6. [教程]win10 ,ubuntu双系统安装避坑指南
  7. 云服务器ecs_阿里云ECS云服务器抢占式实例计费模式优缺点
  8. hive之动态分区插入数据及其参数配置
  9. osea/ introduction
  10. java:通过Calendar类正确计算两日期之间的间隔
  11. 你确定懂?彻底搞懂 控制反转(IoC Inversion of Control )与依赖注入(DI Dependency Inversion Principle )
  12. Python爬虫教程-22-lxml-etree和xpath配合使用
  13. Linux下mysql数据恢复
  14. Ribbon界面介绍(1)
  15. 华三 h3c ospf配置
  16. U盘写保护,不能被格式化
  17. 阿里程序员,工作6年,真实薪资曝光
  18. raspberry pi pico|在raspberry pi pico上玩nes游戏(1)(开源树莓派pico NES模拟器)-效果演示及介绍
  19. 三星公佈Bixby2.0升級後比蘋果更酷
  20. IDEA修改默认的新建项目路径

热门文章

  1. python 排序_Python 排序了解一下?
  2. JZOJ 1980. 【2011集训队出题】Construct
  3. python mysql 错误处理_Python-MySQL中的错误处理
  4. java lock 对象_Java并发编程锁系列之ReentrantLock对象总结
  5. 试卷批分pascal程序
  6. python系统监控_python psutil系统监控详解
  7. python改变numpy数据类型_numpy-Python Pandas-将某些列类型更改为类别
  8. lock交替打印_面试题Synchronized实现两个线程交替打印
  9. 交换机配置软件_如何配置远程登陆交换机?最简单的解释方式,一看就懂
  10. 原生ajax封装,数据初始化,