该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-01
最后修改:2012-02-01
哦,诚如楼上解惑,第四点没完全回答疑问,
看了下,@requestmapping貌似不支持继承,如果父类中标记有@requestmapping的方法如果被一个没有标记为requetmapping的子类方法override,于是,这父类的注解应该就没效了吧,我说的这个意思,这样在项目中可能产生一个问题,许多具有很多相似情形的url都必须在各自的action中各自定义方法,并@requestmappinged 注解才可以,而这些代码很多都是重复的, 例如 对象 A,B,C,D,E 都将有基本的curd等等常规操作,在s2里 设计定义父类 curd四个等等通用方法, ,然后各自的action只需要继承父类,父类的方法会被自动调用之,sring需要在各个子类中分别写curd方法才可以吧,这样代码冗余量岂不是很大,还要做很多额外的扩展才可以,s2直接就支持,s2还支持自动包名的namespace,也不需要注解,其实s2目前只需要很少的几个必要的注解,就可以实现url映射了,这点springmvc还做不到吧!!! 其次,springmvc还没发现拦截器机制,而s2的拦截器机制目前来说还是独一无二的吧,有时候,面对复杂的问题,你会发现拦截器这个东西,会让你删繁就简的喜悦啊!!! |
|
返回顶楼 | |
发表时间:2012-02-01
整个浏览了一遍这个PPT,基本上没有发现错误,还是比较可靠的一个开发指南,初学者了解可以参考。推荐一下!!
kjj 写道 提以下疑问:
a. struts2里 方法映射url非常方便,可以直接actionName!method,而不需要在方法上加什么注解,spring 每个方法都需要@注解才可以调用到方法,spring有struts2这方面方便吗!!!spring 就是对url template支持方便,除了这个还有哪里更好的!!!!! b. struts2的conversion 插件和config插件可以很好的查看url配置,spring要总揽action配置只有去翻代码了,springmvc的代码,满篇都是@requestmapping 注解,代码量多出不知道多少!!!!!!!!!! c . 要命的是springmvc 需要送到request的attribute需要手动去set,这个你们觉得很方便吗,相对于struts2,自动把action的property送过去,少了很多map.put这种代码 d. 刚才看了一下,@requestmapping注解不支持继承,也就是说,每个方法如果需要被url调用,都必须注解 这就让action的方法难以重载使用,代码量减少了还是加大了!!!!. PS: springmvc 真有你们吹得那么好吗!!!! 这些问题在我SpringMVC系列文章里面会有解答,敬请期待。 SpringMVC和Struts2目前来说各有千秋,也有各自超越对方的杀手锏。不过目前SpringMVC的发展态势比较凶猛,所以大家会更倾向一些。其实有关框架的话题,还是应该看得深一点,不要纠结于一些细枝末节。 |
|
返回顶楼 | |
发表时间:2012-02-01
个人还是比较喜欢配置文件的方式
|
|
返回顶楼 | |
发表时间:2012-02-01
刚好在学习spring mvc,在书店找过找不到好的资料啊,谢谢作者分享啊
|
|
返回顶楼 | |
发表时间:2012-02-01
没有讲缓存啊?
|
|
返回顶楼 | |
发表时间:2012-02-01
stamen 写道 javalinjx 写道 stamen 写道 个人觉得Spring MVC和Struts比已经远远超出了,Struts从1到2完全不兼容,而Spring MVC至诞生以来基础框架就没有变更过,高版本完全兼容低版本,很好的体现了“开闭原则”的设计模式,也从另一个方面说明Spring MVC框架的天生优势。
另外,Spring MVC 3.0的REST风格,URl的Annotation映射真的太好用了,对静态资源的处理也做得很好。如果要用Struts+Spring+Hibernate,我个人建议直接改为Spring MVC+Spring+Hibernate,这样既可以少学一个框架,另一方面Spring MVC不但比Struts简单,而且和Spring的天然整合的。 这个,本人也深有同感,spring的思想,实践方面都有比较好的体现。。 不但现在很少用Struts了,而且也渐渐少用Hibernate了,Hibernate对于复杂的应用不方便控制,驾驭难度太大,我现在的网站架构已经改成: Spring MVC+Spring+MyBatis/Spring JDBC,自己做了一个分库框架(原来用amoeba,但还是满足不了,且问题多),使用memcached做缓存,使用自己实现的用户会话控制(可进行分布式会话),单点登录,使用Freemarker做网站静态化,使用solr做全文索引,使用类淘宝的服务总线结构(强烈不建议用笨重的WebService),使用testng+uitilies+mockito做测试框架。 象这种其实也可以出一本书洛,市面上应该没这么全的。 |
|
返回顶楼 | |
发表时间:2012-02-01
最后修改:2012-02-01
好奇怪一个帖子全是说MVC牛逼的。。。
刚使用Spring MVC做完项目,我也觉得MVC在对VIEW层的代码冗余方面做的不太好,另外还有一些S2下很方便的URL处理链在MVC下也不方便。。 至于MVC的拦截器倒是可以通过方法参数注入进来,只是没有S2的类属性那么看着简洁. 不知道@kjj是不是指的这个拦截器。 总体来说还是觉得MVC上手快一些。 |
|
返回顶楼 | |
发表时间:2012-02-02
文档做得很用心,值得赞赏!
|
|
返回顶楼 | |
发表时间:2012-02-02
最后修改:2012-02-02
kjj 写道 哦,诚如楼上解惑,第四点没完全回答疑问,
看了下,@requestmapping貌似不支持继承,如果父类中标记有@requestmapping的方法如果被一个没有标记为requetmapping的子类方法override,于是,这父类的注解应该就没效了吧,我说的这个意思,这样在项目中可能产生一个问题,许多具有很多相似情形的url都必须在各自的action中各自定义方法,并@requestmappinged 注解才可以,而这些代码很多都是重复的, 例如 对象 A,B,C,D,E 都将有基本的curd等等常规操作,在s2里 设计定义父类 curd四个等等通用方法, ,然后各自的action只需要继承父类,父类的方法会被自动调用之,sring需要在各个子类中分别写curd方法才可以吧,这样代码冗余量岂不是很大,还要做很多额外的扩展才可以,s2直接就支持,s2还支持自动包名的namespace,也不需要注解,其实s2目前只需要很少的几个必要的注解,就可以实现url映射了,这点springmvc还做不到吧!!! 其次,springmvc还没发现拦截器机制,而s2的拦截器机制目前来说还是独一无二的吧,有时候,面对复杂的问题,你会发现拦截器这个东西,会让你删繁就简的喜悦啊!!! 1.呵呵,Spring MVC一开始就有拦截器了,3.0对配置进行了简化,提供了专门的schema,如下所示: <mvc:interceptors> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> </mvc:interceptors> 2.父类的@RequestMapping方法可以被子类继承,默认情况下,Spring MVC方法的所对应的URL是: 引用 类级别@RequestMapping+方法级别所对应的@RequestMapping
如果有一个父类: public class MyBase { @RequestMapping("/create") public String create(){ return "create"; } @RequestMapping("/update") public String update(){ return "update"; } } 它被ChildController1和ChildController2继承: @RequestMapping("/child1") public class ChildController1 extends MyBase { } @RequestMapping("/child2") public class ChildController1 extends MyBase { } 则可以通过: /child1/create 映射ChildController1的create()方法, /child2/create 则映射ChildController2的create()方法。 PS:不够这些确实是技术细节,不必过于在意,个人觉得一个框架是否优秀不在于这些细节,而在于扩展性,灵性活,兼容性,集成性等方面,这些方面个人认为Spring MVC是超越Struts的。 |
|
返回顶楼 | |
发表时间:2012-02-02
好教程,一直用的是struts,现在正准备研究哈springmvc
|
|
返回顶楼 | |