struts的MVC和spring的MVC的区别

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

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

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

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

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

比较了一下strus2spring3 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 PagesJSP)技术、VelocityTilesiText  POISpring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。

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

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

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

3Spring3 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 的入口是servletstrutsfilter(这里要指出,filterservlet是不同的。以前认为filterservlet的一种特殊),这样就导致了二者的机制不同,

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

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 使用更加简洁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值