简化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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |