从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天的时间,对于我的“遭遇”有经验的朋友能否给个建议,讨论讨论,给个最佳实践方案~~谢了各位!
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天的时间,对于我的“遭遇”有经验的朋友能否给个建议,讨论讨论,给个最佳实践方案~~谢了各位!
解决方案 »
- 用jspsmartuplod在做文件上传时怎么删除上传的本地文件文件
- WebService客户端调用报错,哪位好心人给点方案!!!!!
- 关于网页表格显示的问题,大家帮忙解决哈
- eclipse+jboss测试servlet小问题
- struts的一个比较奇怪的问题
- 使用smartupload组件实现下载在浏览器中显示乱码问题
- struts中怎样在登录验证完毕后跳回原来的页面
- 100分-肯定加--求动态菜单原吗
- 初学者,询问哪儿有经典的jsp方面的书下载啊(如:完整的jsp高级编程),准散分的
- 大虾请进!!百思不得其解!!resin的servlet问题!!紧急求救!!
- 求amchart 拆线图(amline)如何在配置文件里面配置两个value,也就是两条Y坐标
- jsp开发前台后台如何实现的?
你有良好的jsp-servlet-bean,就已经是很好的mvc了。
哎,框架横行的年代阿,说这些话大多数情况下是被鄙视的。那注释的写法啊。是java5令人激动的一个新特性。然而学过之后,就知道这是个注定被滥用的东西。
被滥用,也就是过分使用了。原因有两个:
第一,这东西太好了。
第二,这东西好到仅从程序员的角度看不到他的坏处。其实这个功能有点学c#里面注释的感觉。但是c#的注释是好的,java的是不好的。可是,我想问问大家,我们拼命的作配置是为了什么?
说高深点叫什么解耦。说白了就是为了重用和维护的时候方便。但是一旦用了java的注释,也就意味着,
所有变化都需要修改代码,然后重新编译。原来用xml配置,我们可以写手册,留给维护人员、用户和后来的
开发者,告诉他们应该如何配置,讲清楚大概的原理就好了。现在,只要修改配置,就要修改代码重新编译。
如果应用在服务器上,甚至需要重新打包。这个怎么能叫做降低耦合呢?java的注释是不好的,因为他是面向代码的,造成了代码对注释的依赖。而C#中的注释是内置的,有限的,影响的范围是组件级别的,也就是说这个东西是打包部属时候的影响,好像在组件中可以设置(多年不用c#,凭记忆说的)。所以说java的不好,C#的好。反正,为了维护的时候,能够拿出一个具有可操作性的东西,对维护人员要求不高的系统,我在java5放出来,学了一下这个功能,以后就再也没用过。而且也不想用。
google一下,相关资料都很少
框架就是省时的东西,要是真为了效率,宁可都不用
的确有点不好用。
但被收了,WEB方面我想会更弱了.
不要想太多勒,其实我们用到 Spring 的也就是AOP和IOC,其它的都很少用的到,只要把AOP和IOC弄熟就可以勒,个人认为。
嫌垃圾?你用struts2的话肯定也垃圾.spring mvc性能非常强大,有人曾经对比过spring mvc和struts2的性能,结果非常明显,10倍不到.不管是不是精确,但是这种情况必然可能发生.有为兄弟说自己扩展了servlet接口.这个思路是完全正确的.什么action,什么controller都是对servlet的扩展.如果能够自己扩展不需要什么框架.框架是为了大项目的团队写作及尽量的解耦准备的,为了让你能更方便的维护和了解.如果你觉得你做网站麻烦,最好别用java.用java也别用什么ssh.用play framework.敏捷开发的
如果你可以不用java.那么直接ror吧.兄弟.你不是做java的,或者java ee(java企业级应用)的.你还是回去搞那个把.别把java用在不属于他的地方