当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

简化Spring(3) Controller层[Java编程]

赞助商链接



  本文“简化Spring(3) Controller层[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Struts与Webwork的扇子请跳过本篇.

MVC不就是把M、V、C脱离么?至唯物朴实的做法是两个JSP一个负责View,一个负责Controller,再加一个负责Model的Java Bean,已经可以工作得很好,当时刻一切都很简单.

而目前为了一些不是本质的功效,冒出这么多非尺度的Web框架,实在让人一阵忧郁.像Ruby On Rails那样简便开辟,可用可不用,并且没有太多的限制需求学习的,比方Webwork这型还可以考虑.但像Struts那样越用框架越麻烦,大概像Tapestry那样有严重自闭偏向,额上凿着"高手专用玩具"的,用在团队里就是不负责任的行为了.

so,我的MVC筹划是利用Spring MVC的Controller接口,写最普通的JavaBean作为Controller,本质就和昔时拿JSP作Controller差不多,但拥有了Spring IOC的特点.

之所以用这么悲观的挑选尺度,是因为认为这一代MVC框架离重回RAD时代的尺度还很远,注定了只是一段短暂的,过渡的技术,不值得投资太多精神和团队学习本钱.

1. 原理

Spring MVC按植物分类学属于Martin Flower〈企业利用情势〉里的静态配置型Front Controler,利用DispatchServlet截获全部*.do的恳求,按照xml文件的配置,调用对应的Command对象的handleRequest(request,response)函数,同时举行依靠对象的注入.

我们的Controller层,就是实现handleRequest(request,response)函数的普通JavaBean.

2. 上风

Spring MVC与struts相比的上风:

一是它的Controller有着从松到紧的类层次构造,用户可以挑选实现只有一个HandleRequest()函数的接口,也可以利用它有很多回调函数的SimpleFormController类.

二是不需求Form Bean,也不需求Tapestry那所谓面向对象的页面对象,关于深怕类膨胀,改一个东西要动N个地方的人最合适不过.

三是不需求强XML配置文件,宣布式编程是好的,但假如强迫成框架,什么都要在xml里面宣布,写的时刻烦琐,看的时刻也要代码配置两边看才能懂得就对比麻烦了.

那Webwork呢?没有实战过,不过因为对MVC框架所求就不多,单用Spring MVC的Controller已经可以满意需求,就不多搞一套Webwork来给团队设坎,还有给日后保护,spring,ww2之间的版本进级添麻烦了.真有什么需求增添的,Spring MVC源代码量很少,很简单掌控和扩大.

3.化简

3.1. 直接implement Controller,实现handleRequest()函数

首先,simple form controller非我所好,一点都不simple.所以有时我会直接implement Controller接口.这个接口的唯一函数是供Front Controller调用的handleRequest(request,response).

假如需求application对象,比方想用application.getRealPath()时,就要extends webApplicationObjectSupport.

3.2.每个Controler负责一组相关的action

我是果断支持一个Controler负责多个action的,一个Controler一个action就像一个function一个类一样无聊.所以我用最传统的方法,用URL参数如msg="insert"把一组相关action交给一个Controler掌握.ROR与制作中的Groovy On Rails都是这种情势,Spring也有MultiActionController支持.

以上三者都是把URL参数直接反射为Controller的函数,而Stripes的计划可用annotation标注url action到呼应函数的映射.

3.3.xml宣布式编程的取舍

我的取舍很简单,反正Spring没有任何强迫,我只在大概需求不重新编译而改变某些东西的时刻,才把东西放在xml里动态注入.jsp途径之类的就通通收回到controller里面定义.

3.4.Data Binder

Data Binder是Controller的必有环节,关于Spring供应的DataBinder,照理完好可用,唯一不爽是对象假若有内嵌对象,如订单对象里面包含了Customer对象,Spring需求你先自行成立了Customer对象并把它赋给了Order对象,才大概实现order.customer.customer_no这样的绑定.我偷懒,又拿Jakarta BeanUtils出来自己做了一个Binder.

3.5.提取基类

最后还是不由得提取了一个基类,负责MultiAction和其他一些简便的办法.Sprnig的MultiActionController做得太死,规定全部函数的第1,2个参数必须是request和response,不懂动态的,温柔的举行参数注入.

经过化简再化简,已经是很简单一个Java Bean ,任谁都可以轻松上手,即便某年某月技术的大潮把目前全部MVC框架都沉没了,也不至于没人识得保护.


  以上是“简化Spring(3) Controller层[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 简化Spring(1) 配置文件
  • 简化Spring(4) View层
  • 简化Spring(2) Model层
  • 简化Spring(3) Controller层
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .