论坛首页 Java企业应用论坛

[Spring] 轻巧使用 Spring-Controller

浏览 11144 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-20  
spring评价

    大家都知道,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参数来区分请求即可。

  现在能想到的就是这么多,以后再补充
   发表时间:2008-09-23  
我今天修改了一下,为什么发表日期还是8月20日?
0 请登录后投票
   发表时间:2008-09-23  
你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费

XML配置文件也不算问题,Annotation全搞定
0 请登录后投票
   发表时间:2008-09-24  
不会的。点“返回”后,原来填的东西仍在页面上

daquan198163 写道

你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费


0 请登录后投票
   发表时间:2008-09-24  
我也中使用spring的注入,其他沒有使用。
0 请登录后投票
   发表时间:2008-09-24  
chenjianjx 写道
不会的。点“返回”后,原来填的东西仍在页面上

daquan198163 写道

你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费




不全是。有時候會全部沒有的,我是使用struts的。沒有這個問題。
0 请登录后投票
   发表时间:2008-09-24  
chenjianjx 写道
不会的。点“返回”后,原来填的东西仍在页面上

daquan198163 写道

你这方案叫做倒退,不用多,超过五个字段的表单客户就得骂娘,一个字段填错就全白费



你的用户要求真低啊,
要点后退,然后还要记得是那个字段出了什么问题
还要在定位到相应的input,重新输入

如果你做的只是玩具级别的东西,我们也没啥好讨论的了
0 请登录后投票
   发表时间:2008-09-24  
1.出错信息里会告诉用户错在哪里,用户点返回后回去纠正一下就行了
2.这种模式在当今的网站中并不少见,尤其是在企业内部的管理系统中,客户体验上完全能够接受,而且可以减少开发人员很多的工作量


daquan198163 写道

  要点后退,然后还要记得是那个字段出了什么问题 还要在定位到相应的input,重新输入 如果你做的只是玩具级别的东西,我们也没啥好讨论的了

0 请登录后投票
   发表时间:2008-09-24  
问题是SpringMVC和commons-validator框架都把这些封装好的
你愿意不用,还在这宣传什么“轻巧使用 Spring-Controller”
0 请登录后投票
   发表时间:2008-09-26  
各别观点支持楼主,
spring的配置文件真是让人搞的头皮发麻,
感觉这么多的配置让简单的问题搞得“错综复杂”,
0 请登录后投票
论坛首页 Java企业应用版

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