前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019年Java面试题:谈谈springmvc和struts2的区别

2019年Java面试题:谈谈springmvc和struts2的区别

作者头像
葆宁
发布2019-04-19 11:25:18
5750
发布2019-04-19 11:25:18
举报
文章被收录于专栏:FREE SOLOFREE SOLO

目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区别,是很多初学者比较关注的问题。

下面我们就来谈谈springmvc和struts2的区别:

相同点: 二者都是基于mvc的web层的框架,都是负责接收用户浏览器提交的请求参数,通过某些校验操作调用业务层,而后获取到业务层返回的数据,将数据通过某种方式在前台展示。

不同点:  (1)springmvc是基于方法开发的,struts2是基于类开发的。  (2)因为二者基于的出发点不同,所以在接收请求参数时区别比较大。

springmvc是通过参数绑定接收浏览器请求参数(方法上各种形参(request、response、session、Model、ModelMap、简单类型、简单pojo、包装类pojo)浏览器的请求参数),方法执行结束,形参数据就会销毁。 struts2是通过类中的成员变量接收浏览器请求参数的。

(3)由于接收请求参数方式的不同。

springmvc:因为方法之间是线程隔离的,所以springmvc支持单例和多例的开发方式。 struts2:成员变量在开发中多线程会存在线程安全问题,所以struts2只能支持多例的开发方式。

(4)springmvc是通过存储数据ModelAndView,在前台页面通过jstl(默认)展示数据的;struts2是通过值栈存储数据,在页面通过OGNL展示数据的。

详细地: 1.核心控制器(前端控制器、预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生,核心控制器的主要用途是处理所有的请求,然后对那些特殊的请求 (控制器)统一的进行处理(字符编码、文件上传、参数接受、异常处理等等),spring mvc核心控制器是Servlet,而Struts2是Filter。

2.控制器实例:Spring Mvc会比Struts快一些(理论上)。Spring Mvc是基于方法设计,而Sturts是基于对象,每次发一次请求都会实例一个action,每个action都会被注入 属性,而Spring更像Servlet一样,只有一个实例,每次请求执行对应的方法即可(注意:由于是单例实例,所以应当避免全局变量的修改,这样会产生线程安全问题)。

3.管理方式:大部分的公司的核心架构中,就会使用到spring,而spring mvc又是spring中的一个模块,所以spring对于spring mvc的控制器管理更加简单方便,而且提供了全 注解方式进行管理,各种功能的注解都比较全面,使用简单,而struts2需要采用XML很多的配置参数来管理(虽然也可以采用注解,但是几乎没有公司那 样使用)。

4.参数传递:Struts2中自身提供多种参数接受,其实都是通过(ValueStack)进行传递和赋值,而SpringMvc是通过方法的参数进行接收。

5.学习难度:Struts更加很多新的技术点,比如拦截器、值栈及OGNL表达式,学习成本较高,springmvc 比较简单,很较少的时间都能上手。

6.intercepter 的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。

7.spring mvc处理ajax请求,直接通过返回数据,方法中使用注解@ResponseBody,spring mvc自动帮我们对象转换为JSON数据。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档