论坛首页 Java企业应用论坛

spring3mvc与struts2比较

浏览 162465 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-02-17  
george 写道
downpour 写道
shiren1118 写道
你觉得这有啥可炫耀的吗?spring的多view解析实现这个跟玩一样

看看这兄弟的帖子吧http://www.iteye.com/topic/748006


帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。

在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。

顶,支持。

这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。


这一点其实我在最早的讨论中就指出来了。SpringMVC的Annotation来指定URL Mapping的可维护性为0。

这里的本质问题在于Annotation和XML到底谁更加适合来做某种类型的配置。

当我们引入一个Annotation,实际上获得的好处在于我们可以在Java Code级别解决配置问题,但同时,我们也引入了其他的问题:

1) 引入了Annotation,就引入了对框架的强依赖,一个原本可以单独测试的东西,却必须放在容器中做集成测试。
2) 引入了Annotation,就将这个Annotation所代表的配置类型,分散到了不同的Java Code中。就像在一个沙地里面,我们要寻找散落在各处的黄豆,实际上是非常困难的。

当我们引入XML的时候,虽然我们引入的是一个额外的配置文件和额外的配置,但是我们却获得的统一的查找路径,可维护性得到了保证。
0 请登录后投票
   发表时间:2011-02-17   最后修改:2011-02-17
downpour 写道
george 写道
downpour 写道
shiren1118 写道
你觉得这有啥可炫耀的吗?spring的多view解析实现这个跟玩一样

看看这兄弟的帖子吧http://www.iteye.com/topic/748006


帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。

在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。

顶,支持。

这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。


这一点其实我在最早的讨论中就指出来了。SpringMVC的Annotation来指定URL Mapping的可维护性为0。

这里的本质问题在于Annotation和XML到底谁更加适合来做某种类型的配置。

当我们引入一个Annotation,实际上获得的好处在于我们可以在Java Code级别解决配置问题,但同时,我们也引入了其他的问题:

1) 引入了Annotation,就引入了对框架的强依赖,一个原本可以单独测试的东西,却必须放在容器中做集成测试。
2) 引入了Annotation,就将这个Annotation所代表的配置类型,分散到了不同的Java Code中。就像在一个沙地里面,我们要寻找散落在各处的黄豆,实际上是非常困难的。

当我们引入XML的时候,虽然我们引入的是一个额外的配置文件和额外的配置,但是我们却获得的统一的查找路径,可维护性得到了保证。

XML也不推荐大量使用,最好是使用约定,不按照约定来命名类和方法,根本就无法访问url,这样即减少了配置文件,又能很方便地找到URL所对应的控制器类,而且还能强迫那些“胡乱写类名、方法名”的“懒汉”把命名规范起来。
1 请登录后投票
   发表时间:2011-03-18  
struts同样可以做方法上的拦截,这样配置就可以了
<action name="login" class="xx.LoginAction" method="login">
   <interceptor....../><!-- interceptor A -->
   <result...../>
</action>

<action name="logout" class="xx.LoginAction" method="logout">
   <interceptor....../> ><!-- interceptor B -->
   <result...../>
</action>
0 请登录后投票
   发表时间:2011-03-26  
chrislee1982 写道
struts同样可以做方法上的拦截,这样配置就可以了
<action name="login" class="xx.LoginAction" method="login">
   <interceptor....../><!-- interceptor A -->
   <result...../>
</action>

<action name="logout" class="xx.LoginAction" method="logout">
   <interceptor....../> ><!-- interceptor B -->
   <result...../>
</action>

我赞成okayeye的意见,在富客户端的情况下,springMVC和struts2的流转控制可以放到客户端来做,比如Flex,服务器端尽量只做数据读写和服务集成,这样可以获取更高的并发流量
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics