springmvc和struts2的区别

作者&投稿:公疯 (若有异议请与网页底部的电邮联系)
Spring MVC和Struts2的区别~

spring3mvc与struts2比较
项目刚刚换了web层框架,放弃了struts2改用spring3mvc
当初还框架的时候目的比较单纯---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变量是共享的
这不会影响程序运行,却给我们编码 读程序时带来麻烦

====================================
spring3 mvc的验证也是一个亮点,支持JSR303
处理ajax的请求更是方便 只需一个注解@ResponseBody ,然后直接返回响应文本即可

附上一段代码
Java代码
@RequestMapping(value="/whitelists")
public String index(ModelMap map){
Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId()) ;
List 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" ;
}

1:
spring3 mvc开发效率高于struts
2:
spring3 mvc可以认为已经100%零配置
3:
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
4:
spring3mvc的方法之间基本上独立的,独享request response数据
请求数据通过参数获取,处理结果通过ModelMap交回给框架
方法之间不共享变量
而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的
这不会影响程序运行,却给我们编码 读程序时带来麻烦
5:
由于Struts2需要针对每个Request进行封装,把Request,Session等Servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全。所以在原则上,是比较耗费内存的。

SpringMVC 和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 ,然后直接返回响应文本即可。


为什么我配置Spring的事务后不能得到BEAN
最近在项目的时候碰到pring事务不起作用的情况,后来解决了,这里我汇总下:1、首先使用如下代码确认你的bean是代理对象吗?必须是Spring定义(通过XML或注解定义都可以)的Bean才接受事务。直接new出来的对象添加事务是不起作用的。可以通过以下方式判断是否是代理对象:AopUtils.isAopProxy(Objectobject)...

org.springframework.web.servlet.ModelAndView这个类在spring框架中的...
spring框架需要哪些jar包 spring-context-3.1.0.RELEASE.jar spring-aop-3.1.0.RELEASE.jar aopalliance-1.0.jar spring-beans-3.1.0.RELEASE.jar pring-core-3.1.0.RELEASE.jar spring-expression-3.1.0.RELEASE.jar spring-a *** -3.1.0.RELEASE.jar spring-webmvc-3.1...

No transaction aspect-managed TransactionStatus in scope
所以在springmvc配置中最好只扫描Controller下面的类,而在spring context上下文配置中把扫描范围放大就不会有事!原因四:还可能是pring AOP代理不支持类内部方法调用导致的,就是同一个Service中a方法调用b方法。Spring官方也不推荐使用类内部方法相互调用,一个是代理对象、一个是目标对象,Spring没办法对...

揭东县13459597081: struts2和springmvc哪个好 -
米菡泰尔: 1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费...

揭东县13459597081: struts2和springmvc有什么区别 -
米菡泰尔: 1)springmvc的入口是一个servlet,即前端控制器,例如:*.action struts2入口是一个filter过虑器,即前端过滤器,例如:/* 2)springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例 struts2是基于类开发,传递参数是通过类的属性,只能设计为多例 3)springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成 ModelAndView对象,最后又将模型数据通过request对象传输到页面 struts采用值栈存储请求和响应的数据,通过OGNL存取数据

揭东县13459597081: springmvc和struts2的区别 -
米菡泰尔: springMVC 是在spring框架基础上使用MVC开发模式,而struts2本身就是MVC框架.springMVC的控制器接值和struts2不一样,可以采用最传统接值(request.getParameter()),也可以采用注解接值,或者封装模型驱动接值方式,...

揭东县13459597081: struts和springmvc的区别 -
米菡泰尔: SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能: spring会稍微比struts快.spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每...

揭东县13459597081: spring mvc struts2 哪个好 -
米菡泰尔: 虽然SpringMVC 和 struts2 都有着核心分发器等相同的功能组件,但是SpringMVC框架的出现是为了将URL从HTTP的世界中映射到Java世界中,这是MVC框架的核心功能.而在URL这一点SpringMVC无疑更加优雅.第二、从设计实现角度来说,我觉得SpringMVC更加清晰.即使我们去对比Struts2的原理图和SpringMVC的类图,它依然很让人困惑,远没有SpringMVC更加直观

揭东县13459597081: Spring MVC和Struts2的区别 -
米菡泰尔: 功能上没啥区别.struts2 比较重量级点.功能强大.spring mvc 更轻量,开发灵活.萝卜白菜,各有所爱. 性能上来说,还真不是没啥差别.在大并发下,spring mvc 优势很明显.

揭东县13459597081: Struts2和Spring的mvc的区别 -
米菡泰尔: spring3mvc与struts2比较 项目刚刚换了web层框架,放弃了struts2改用spring3mvc 当初还框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢 不用不知道 一用就发现开发效率确实比struts2高 我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置 spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外) 比较了一下strus2与spring3 mvc的差别

揭东县13459597081: strut2和springmv的区别 -
米菡泰尔: spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的.以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了.springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的. struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数, 这就说明参数是让多个方法共享的,这也就无法用注解或其他方式标识其所属方法了.

揭东县13459597081: springmvc和struts2的机制各有什么利弊 -
米菡泰尔: 个人觉得不管是Struts2的filter还是SpringMVC的servlet,都只是作为一个总入口,没有什么区别,filter相对servlet的好处是可以实现过滤,但是servlet一样可以做到,不然SpringMVC也工作不起来,如果用户需要自己定义过滤器,那么当然是...

揭东县13459597081: struct2和springmvc的区别 -
米菡泰尔: 第一、MVC框架的出现是为了将URL从HTTP的世界中映射到JAVA世界中,这是MVC框架的核心功能.而在URL这一点SpringMVC无疑更加优雅.第二、从设计实现角度来说,我觉得SpringMVC更加清晰.即使我们去对比Struts2的原理图和...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网