精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-20
大家都知道,Spring MVC提供了一些功能齐全的Controller,并和Struts一样,为这些Controller配套了很多可配置、可扩展的东西,如 successView,validator,Bean绑定框架,ResourceBundle。但我的观点是: 1.“可配置”性有意义吗?可配置是为了重用,但WEB层的东西能有几次重用?比起写一大堆配置文件的痛苦,追求一点点的重用有什么意义? 2. 有必要把validator独立出来吗?几个Controller共用一个validator的情况并不多见,而且就算要共用,也可以把校验逻辑写在pojo里,而不是写在丑陋不堪的Spring-validator里 3.Spring-Bind 通过字段级的绑定,可以在表单提交失败时给出具体的失败原因,提高用户体验,与resourceBundle结合使用还可以实现国际化。但是这个代价太大了,因为你要在表单页面中写很多 <spring-bind>这样的东西,而且,你的项目真的需要国际化吗? 4.有些Form Controller很有框架的特点(半成品),但是用起来更不顺手。以SimpleFormController为例,你要另外定义一个Form Object,要告诉系统在请求form和提交form时分别作什么,而且程序还人为地把校验逻辑和业务逻辑调用彻底分成不同的阶段,既麻烦,又不灵活 简化使用 在厌倦了这些烦人的东西之后,我开始简化地使用Spring MVC。最终我形成了自己的模式。这个模式的核心思想就是:Spring MVC仅用作URL映射和Bean注入,而它的Controller仅当作普通的Servlet,用request.getParameter()的方式获取输入,用POJO的风格来完成功能,既灵活,又舒服。具体来说: 1.基本只用最简单的AbstractController。以表单处理为例,请求form用一个controller,提交form再用一个controller,把两个步骤分开,这样的代码都比较简洁,长度少了很多;采用了POJO风格编码,可读性也强了很多 2.调用javabean的方法完成校验。既可在controller间重用,又维持了pojo风格 3.successView 可以作为表单页面的隐藏变量传到controller中来,这样就不用写XML了。其实,大多数情况下,把successView写死在Controller的代码中就够了。不同功能模块共享Controller的情况是不多见的。 4.校验异常,或者发现业务错误,直接throw Exception。然后用一个通用的处理error的JSP来处理所有Exception (这是Spring的功能),这个jsp里加上一个“返回”按钮,就可以方便用户在出错之后重新提交请求 5.相近的请求让一个controller处理就够了(如添加用户、删除用户),这样的话写URL配置就只需要写一次。仍然可以只用AbstractController,然后用一个Http Parameter参数来区分请求即可。 现在能想到的就是这么多,以后再补充 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-23
我今天修改了一下,为什么发表日期还是8月20日?
|
|
返回顶楼 | |
发表时间:2008-09-23
你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费
XML配置文件也不算问题,Annotation全搞定 |
|
返回顶楼 | |
发表时间:2008-09-24
不会的。点“返回”后,原来填的东西仍在页面上
daquan198163 写道 你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费 |
|
返回顶楼 | |
发表时间:2008-09-24
我也中使用spring的注入,其他沒有使用。
|
|
返回顶楼 | |
发表时间:2008-09-24
chenjianjx 写道 不会的。点“返回”后,原来填的东西仍在页面上
daquan198163 写道 你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费 不全是。有時候會全部沒有的,我是使用struts的。沒有這個問題。 |
|
返回顶楼 | |
发表时间:2008-09-24
chenjianjx 写道 不会的。点“返回”后,原来填的东西仍在页面上
daquan198163 写道 你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费 你的用户要求真低啊, 要点后退,然后还要记得是那个字段出了什么问题 还要在定位到相应的input,重新输入 如果你做的只是玩具级别的东西,我们也没啥好讨论的了 |
|
返回顶楼 | |
发表时间:2008-09-24
1.出错信息里会告诉用户错在哪里,用户点返回后回去纠正一下就行了
2.这种模式在当今的网站中并不少见,尤其是在企业内部的管理系统中,客户体验上完全能够接受,而且可以减少开发人员很多的工作量 daquan198163 写道 要点后退,然后还要记得是那个字段出了什么问题 还要在定位到相应的input,重新输入 如果你做的只是玩具级别的东西,我们也没啥好讨论的了 |
|
返回顶楼 | |
发表时间:2008-09-24
问题是SpringMVC和commons-validator框架都把这些封装好的
你愿意不用,还在这宣传什么“轻巧使用 Spring-Controller” |
|
返回顶楼 | |
发表时间:2008-09-26
各别观点支持楼主,
spring的配置文件真是让人搞的头皮发麻, 感觉这么多的配置让简单的问题搞得“错综复杂”, |
|
返回顶楼 | |