Spring MVC 真不咋地~~~

zhl1015 2009-08-07 12:22:56
从Struts1换到Spring MVC,真的有很多不舒服的地方,也许是习惯问题,也许是我还对Spring MVC了解不够。

我并不需要什么什么特性,什么什么功能,只需要Controller最基本的功能:request、response、还有form数据绑定,其他的我自己来实现,必要时写一子类扩展,在Struts1中,这些都有,而且没有多余的,并提供DispatchAction可供扩展。
Spring MVC提供的Controller所有的加一块,当然是包含Struts1的,但是分的太细,在项目中更多关注的是实现,感觉没什么必要。

弄了几天Spring的MVC,我基本的需求就是简单,比如XML配置:
<bean name="/logout.do" class="com.demo.control.system.LogoutController" />
它提供的其他配置方式,感觉很麻烦,自动影射类名、地址什么配置方式,又感觉怪怪的,而且还不区分大小写。这样配置,以后再新加控制器时,也就这么一句话,谁都看得懂。

返回的地址就在Controller里写return new ModelAndView("/test.jsp"); 这个写在配置文件里还是写在代码里感觉都一样,写在配置文件里还麻烦。


然后说说我遇到的问题:

1、直接使用AbstractController:XML配置格式没变,但没有form数据绑定功能,无奈放弃。之后发现第2点,想解决这个问题。

2、使用SimpleFormController:XML配置格式没变,有form数据绑定功能,但是不GET请求和POST请求被分开了。GET进来的时候需要formView属性,所以这个属性还必须要设置,不设置就报错!
而往往formView和successView是一样的,GET进控制器也是必要的,为了统一处理,我重写了isFormSubmission(),让它直接返回true,这样GET/POET就都进得来,formView也省了,successView就是return new ModelAndView("/test.jsp");
可问题又来了,commandClass这个也必须要设置,不设置就报错,可有些JSP的确是不需要数据绑定的,这就又要换回AbstractController,麻烦,这两个Controller实现的方法都不一样!
之后发现第3点,想解决这个问题。

3、使用MultiActionController:如果XML配置格式不变,那控制器的singleton就纯属扯谈了,换另一种配置,真是巨麻烦,代码就不贴了。
再说form数据绑定,有,在方法定义的第三个参数,但方法体必须写上:request.setAttribute("command", xxxBean);,不写,或者request.setAttribute("command", null);都报错。
我真就不明白,为什么null不行,有就绑定,没有就不绑定呗,Struts的form不就是这样的吗!

后来有点倾向于JODD,但这个需要在JSP页面中写上需要绑定的JavaBean全包路径,不便于维护,而且我想既然有MVC框架,干嘛还要引入其它的项目,所以也没用这个。


想不明白这么简单的事干嘛就搞的这么复杂,哎~也许是我对Srping MVC不够了解,毕竟才3天的时间,对于我的“遭遇”有经验的朋友能否给个建议,讨论讨论,给个最佳实践方案~~谢了各位!
...全文
690 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
AslenG 2011-10-16
  • 打赏
  • 举报
回复
各有所爱~都别大发感言了。
keaixiaozhu7688 2011-09-07
  • 打赏
  • 举报
回复
spring MVC。。。。让我蛋。。。碎
杰森-李 2010-12-07
  • 打赏
  • 举报
回复
很不喜欢注解的方式,Spring的MVC也不好用,还是strut的比较好用
bitray 2010-12-06
  • 打赏
  • 举报
回复
没想到看到1年前的帖子,发现有这么多奇怪的人,不懂spring mvc便说垃圾,或者不如struts2

你了解spring mvc吗?你了解你为什么用框架吗?

嫌配置文件多啊?为什么不用jdk1.5的注解方式开发啊?
嫌垃圾?你用struts2的话肯定也垃圾.spring mvc性能非常强大,有人曾经对比过spring mvc和struts2的性能,结果非常明显,10倍不到.不管是不是精确,但是这种情况必然可能发生.

有为兄弟说自己扩展了servlet接口.这个思路是完全正确的.什么action,什么controller都是对servlet的扩展.如果能够自己扩展不需要什么框架.框架是为了大项目的团队写作及尽量的解耦准备的,为了让你能更方便的维护和了解.

如果你觉得你做网站麻烦,最好别用java.用java也别用什么ssh.用play framework.敏捷开发的
如果你可以不用java.那么直接ror吧.兄弟.你不是做java的,或者java ee(java企业级应用)的.你还是回去搞那个把.别把java用在不属于他的地方
simple_pai 2009-08-11
  • 打赏
  • 举报
回复
学习~
zhl1015 2009-08-11
  • 打赏
  • 举报
回复
希望3.0不要又搞一堆的新特性,而且不要过多的封装,基础啊~~
相信有还有很多人都一样,不喜欢做出来的东西都不知道是怎么实现的
wlhyyy 2009-08-11
  • 打赏
  • 举报
回复
同样期待Spring3.0的变化。。。
luxiaoshuai 2009-08-11
  • 打赏
  • 举报
回复
spring的 mvc 没好感
bea_java 2009-08-11
  • 打赏
  • 举报
回复
我也发现了spring mvc是个垃圾 但是spring的某些做的是非常好。 取其精华
minglois 2009-08-11
  • 打赏
  • 举报
回复

不要想太多勒,其实我们用到 Spring 的也就是AOP和IOC,其它的都很少用的到,只要把AOP和IOC弄熟就可以勒,个人认为。
archko 2009-08-11
  • 打赏
  • 举报
回复
springsource 都完了.不知道有没有下一代.搞不懂它和vmware 在什么方面互补了.看似 不相关的东西.
但被收了,WEB方面我想会更弱了.
lewypd 2009-08-11
  • 打赏
  • 举报
回复
期待Spring3.0的变化。。。
why_java 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 bao110908 的回复:]
是的,极其不喜欢 Spring MVC 全是配置文件,通过 URL 找个方法得翻好几个配置文件。
[/Quote]
up
cust28 2009-08-11
  • 打赏
  • 举报
回复
Spring MVC 刚接触,学习了
zhl1015 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 kingljx 的回复:]
一年半前开始尝试SSH,四个月后完全抛弃了Spring,一年之后自己重写了Servlet接口扔了struts,要不是懒,我觉得hibernate也可以扔了.
框架就是省时的东西,要是真为了效率,宁可都不用
[/Quote]
兄弟是如何重写的,能否说下思路~
feishare 2009-08-11
  • 打赏
  • 举报
回复
spring mvc记得看过,而且那本书上还乱吹一起,当时感觉还行,现在基本上都 忘了,没感觉了额~~
chenguo13 2009-08-11
  • 打赏
  • 举报
回复
spring本身很好用,它的MVC用过两三次,有复杂化的趋势。
的确有点不好用。
kingljx 2009-08-11
  • 打赏
  • 举报
回复
一年半前开始尝试SSH,四个月后完全抛弃了Spring,一年之后自己重写了Servlet接口扔了struts,要不是懒,我觉得hibernate也可以扔了.
框架就是省时的东西,要是真为了效率,宁可都不用
polly9999 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zhl1015 的回复:]
我就是在搞这个纯纯的Spring项目,呵呵~
google一下,相关资料都很少
[/Quote]


还是很多的啊,但只要都是英文的资料
Defonds 2009-08-10
  • 打赏
  • 举报
回复
太不透明了
加载更多回复(26)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧