springmvc struts比较和struts2的机制各有什么利弊

SpringMVC当中的Controller接口和Struts2当中的Action有什么区别? - 知乎41被浏览4300分享邀请回答51 条评论分享收藏感谢收起0添加评论分享收藏感谢收起查看更多回答温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'SpringMVC与Struts2的对比(转)',
blogAbstract:'转自:http://blog.csdn.net/gstormspire/article/details/8239182/面这些东西基本都是我从网上粘贴过来的,没有那么多耐心和时间一个字一个字的敲了,但是基本能表明我选择SpringMVC的思路和原因。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:5,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}springmvc和struts2的机制各有什么利弊 - ITeye问答
所谓的机制不同,即springmvc入口是servlet,struts2入口是filter。那
么这两种机制各有什么利弊呢。
struts2入口是filter,比如用户登陆的时候,可以做权限过滤,这是使用filter的用处。
springmvc入口是servlet,意思是不提供过滤,为什么这么设计呢,只是为了减少配置吗,还是单纯为了和struts2不同。
有明白的吗,可以探讨一下。
个人觉得不管是Struts2的filter还是SpringMVC的servlet,都只是作为一个总入口,没有什么区别,filter相对servlet的好处是可以实现过滤,但是servlet一样可以做到,不然SpringMVC也工作不起来,如果用户需要自己定义过滤器,那么当然是filter更方便了。
但是Struts2用fileter做入口SpringMVC用servelt做入口,跟用户自定义过滤器则没有任何关系,SpringMVC里面你一样可以自定义过滤器,只要继承HandlerInterceptorAdapter即可,结合配置文件,可以配置拦截什么样的URL不拦截什么样的URL,更加简洁好用。
所以说,Struts2用fileter做入口,SpringMVC用servelt做入口,对使用者来说应该没有任何影响。
至于权限过滤什么的,难道你还想自己实现不成?用SpringMVC,结合Shiro,进行权限控制,功能非常强大而且使用起来非常方便,根本不需要自己动手从零开始实现权限控制。
关于SpringMVC、Shiro,开涛的博客上都有非常系统详细的讲解,系列文章由浅入深,可以看看:/
这个问题直接去问涛,他如果心情好,还能顺便教你泡妞
减少配置了么?
就入口而言,filter跟Servlet没有区别,作用都是接管request请求
额,没研究的那么深入,惭愧。springMVC应该是看DispatcherServlet里的源码的吧,我看配spring都是:
&servlet-name&spring&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/conf/spring-main-config.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&spring&/servlet-name&
&url-pattern&/*&/url-pattern&
&/servlet-mapping&
已解决问题
未解决问题struts2和springMVC的区别与特点
拦截的级别不一样
Struts2是类级别的拦截, 一个类对应一个request上下文。
SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应。
所以说从架构本身上SpringMVC就容易实现restful
url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。
方法的独立性,资源共享方式不一样&
& SpringMVC的方法之间基本上独立的,独享request
response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,
Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码
读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。
Struts2原则上比springMVC更耗内存。
因为Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全。
拦截器实现机制不一样
Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,所以,这样导致了Struts2的配置文件量还是比SpringMVC大。
入口不一样
SpringMVC的入口是servlet,而Struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
对ajax的集成度不一样
SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
数据验证方式不一样
SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。
与spring的衔接度不一样
MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。
设计思想不一样
设计思想上,Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。
开发效率和性能不一样
SpringMVC开发效率和性能远高于Struts2。
配置度不一样
SpringMVC可以认为已经100%零配置
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 struts2 springmvc 的文章

 

随机推荐