1、拦截级别

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

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

所以说从架构本身上SpringMVC就容易实现RESTful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。

2、共享变量

由于拦截级别的原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量;

而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。

3、安全与资源消耗

由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。

4、拦截器实现机制

Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。

5、入口

SpringMVC的入口是servlet,而Struts2是filter(特别指出,filter和servlet是不同的),这就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

6、与Ajax的关系

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

Struts2拦截器没有集成Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。

7、验证

SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。

8、与spring的关系

SpringMVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。

9、设计思想

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

10、开发效率

SpringMVC开发效率和性能高于Struts2。

11、配置

SpringMVC可以认为已经100%零配置。

springMVC与Struts2区别的更多相关文章

  1. SpringMVC与Struts2区别与比较总结

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  2. SpringMVC和Struts2区别比较

    区别1: Struts2 的核心是基于一个Filter即StrutsPreparedAndExcuteFilterSpringMvc的核心是基于一个Servlet即DispatcherServlet( ...

  3. 转!!SpringMVC与Struts2区别与比较总结

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  4. SpringMVC与Struts2区别与比较

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  5. JSF/SpringMVC/Struts2区别与比较

    转自SpringMVC与Struts2区别与比较总结 1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文, ...

  6. 谈谈控制器技术SpringMVC与struts2

    SpringMVC与struts2区别 作为表现层中控制器技术的两大掌门人,有哪些不同神功? 首先struts2是作为类级别的拦截,一个类对应一个request上下文.springmvc是作为方法级别 ...

  7. springmvc和struts2的区别

    springmvc和struts2的区别 1.springmvc基于方法开发的,struts2基于类开发的. 2.单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和c ...

  8. SpringMVC 和Struts2的区别

    SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能: spring会稍微比s ...

  9. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

随机推荐

  1. 深海划水队项目----七天冲刺之day3

    上完选修后的站立式会议: 工作进度 昨天已完成的工作: 推进开发进度,进一步理清开发思路. 今天计划完成的工作: 生成游戏块的类,其中包括7种不同的游戏块,每个游戏块又可以通过旋转得到另外一种形态. ...

  2. 作业二:注册软件github

    注册Github

  3. 在没Hadoop 、GP 前提下怎么进行实时数据统计。

    最近着手个项目,整体数据量有5亿多,每个月增量9000w.应用场景是Oltp 根据用户id直接计算各种维度值. 因为是Oltp 场景,直接根据用户id %2000分(方便后续横向扩展),有些喜欢扯分区 ...

  4. 在TFS 2013中选择一周中的工作日,例如增加星期日

    默认情况下,TFS在迭代视图中不计算周末的工作,如果出现调休的情况,则周末的工作日不会出现在迭代视图中,也不会参与燃尽图的计算.但是可以调整团队一周中的工作日,从而修正迭代计算方式,修改的方式参考下图 ...

  5. 购买小米成功 散分mhn

    之前,我们都没办法解决近来的寡言,面对越来越少的语言,只能是憋得气闷.却没想后来这么一件事可以解开那个尴尬. 前两天晚上,他被我一次次闪躲去看小说伤害,难受,却还是不想和我争吵什么.后来,偶然的机会让 ...

  6. ASP.NET MVC 防止CSRF攻击

    简介 MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cr ...

  7. [JS&Jquery]实现页面表格中相同内容的行或列合并

    详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak<script type=&qu ...

  8. WPF ControlTemplate 动画板 结束事件不触发

    解决此问题很简单 将Storyboard单独提取出来及可 给定Key名称,然后在触发器中的BeginStoryboard的storyboard绑定即可 <!--单独提取并设置Xkey--> ...

  9. poj做的题

    1699 1080 1170 1239(不错) 1659(读读怎么写)

  10. django视图缓存的实现

    django视图缓存的实现 1,安装 pip install django-redis setting.py CACHES = { "default":{ "BACKEN ...