`
85977328
  • 浏览: 1899544 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring MVC和Struts2的区别

 
阅读更多
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。

2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

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

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

5. intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

6. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。
24
3
分享到:
评论
12 楼 ceci.lia 2012-09-06  
Spring MVC的Controller是单例的,而Struts2的Action不是单例的。性能上我觉得Spring MVC的Controller要优于Struts2的Action。
11 楼 巴巴米 2012-09-06  
ZZX19880809 写道
Struts2更好用~!spring mvc思想很变态,用法太恶心了!

哪里变态了?挺好用的啊
10 楼 xianbin 2012-09-06  
基本上要点都点到了,我个人使用Spring MVC 3之后,总体感觉是这个框架确实太方便了,非常简洁,特别是支持Ajax提交的JSON数据,从而可以极大的简化后端与Web的交互。

另外我补充一下,Spring MVC 3还提供了很好的异常捕获、处理机制,可以在一个Controller中定义一个统一的异常捕获处理,感兴趣的童鞋可以去了解一下。

期望Spring MVC 3 + Spring Data JPA的开发模式早一些在国内流行起来。
9 楼 Eywa 2012-09-06  
小哥,能不能将 第4点:设计思想上的不同  再往深点说么???
8 楼 tywo45 2012-09-06  
ZZX19880809 写道
Struts2更好用~!spring mvc思想很变态,用法太恶心了!

在使用struts2的岁月里,我一直想自己写个mvc,后来也的确写了,名字叫talent-mvc。后来用上了spring mvc,果断放弃talent-mvc。

我对struts2的看法是:一群很勤奋的人在默默守护着自己的劳动成果,但它的确不是个优秀的框架。
7 楼 a283037321 2012-09-06  
我是小白,我感觉struts2的跳转方便一些,spring跳转到另一个action貌似很恶心一样,当然,我不熟练这俩东西,嘿嘿
6 楼 hebsxl 2012-09-06  
最近项目用spring mvc  以前听的不多,最近在网站上看到好多关于spring mvc的介绍,正在学习中,哈哈
5 楼 cesia1984 2012-09-06  
ZZX19880809 写道
Struts2更好用~!spring mvc思想很变态,用法太恶心了!


还是习惯问题,不过struts跟spring mvc现在也差不多了,都是annotation,用的熟练做东西很快
4 楼 ZZX19880809 2012-09-06  
Struts2更好用~!spring mvc思想很变态,用法太恶心了!
3 楼 hejianmingwshjmcj 2012-09-06  
有没有测试过
2 楼 街头诗人 2012-09-06  
不错,挺好的。
1 楼 cobb.chan 2012-09-05  
写的蛮清楚,感谢分享,大致了解了

相关推荐

    spring webmvc struts 2.5 很难找的依赖包

    spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 ...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...

    spring-webmvc-struts.jar

    spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包

    Struts和Spring两种MVC框架究竟有什么不同呢?

    Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦业务逻辑和展示层,提高代码的可维护性和可测试性。然而,两者在设计理念、功能特性以及实现方式上存在显著差异。...

    Spring+Spring MVC+Struts+hibernate开发摄影平台完整版系统

    接下来,Struts是另一款流行的MVC框架,虽然在Spring MVC广泛应用的现在,Struts的使用可能较少,但在本系统中,Struts可能被用来增强特定的控制器功能,或者作为Spring MVC的补充,提供额外的Action类和拦截器,以...

    spring-webmvc-struts.jar aspectjweaver.jar

    标题中的"spring-webmvc-struts.jar"和"aspectjweaver.jar"是两个重要的Java库文件,它们在Java Web开发中扮演着核心角色,特别是对于基于Spring框架的应用程序。现在让我们详细了解一下这两个库以及它们在实际开发...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...

    ACCP 5.0 Y2 MVC和Struts2本书的选择题答案

    在IT行业中,MVC(Model-View-Controller)和Struts2是两种广泛使用的Web应用程序开发框架,尤其在Java平台上。ACCP(Advanced Certified Computer Professional)5.0 Y2是某培训机构的一个课程版本,该课程可能涵盖...

    Spring3-MVC与Struts2.x比较.pdf

    Spring MVC 和 Struts2.x 是两个广泛使用的Java Web开发框架,它们都在模型-视图-控制器(MVC)架构中提供了强大的支持。Spring MVC 以其灵活性、高效性和可扩展性在近年来逐渐受到开发者青睐,尤其是在Spring 3.0...

    spring-webmvc-struts-2.5.6-sources.jar

    spring-webmvc-struts-2.5.6-sources

    Spring3-MVC与Struts2.x比较.docx

    Spring MVC和Struts2.x的主要区别在于: - **控制反转(IoC)**:Spring MVC内置于Spring框架,可以充分利用Spring的IoC容器管理依赖,而Struts2需要集成Spring才能实现类似功能。 - **注解支持**:两者都支持注解,...

    Spring MVC 教程快速入门 深入分析

    相较于Struts2,Spring MVC避免了一些可能导致性能下降的特性,如值栈、OGNL表达式等。 二、Spring MVC核心类与接口:Spring MVC架构中包含许多核心组件,如DispatcherServlet、HandlerMapping、Controller、...

    struts VS spring mvc

    2. **性能**:Spring MVC 在性能方面优于 Struts,这得益于其更轻量级的设计和更好的优化。 3. **易用性**:两者都有各自的优点。Struts 由于历史悠久,文档和教程丰富,对于初学者来说上手更容易;而 Spring MVC ...

    spring3+struts2+ibatis

    Spring3、Struts2和Ibatis的整合,构建了一个完整的MVC+持久层架构。Spring作为整个应用的调度中心,管理所有对象的生命周期,包括Struts2的Action和Ibatis的SqlSession。Struts2负责接收HTTP请求,调用Action执行...

Global site tag (gtag.js) - Google Analytics