欢迎来到天天文库
浏览记录
ID:20632174
大小:25.00 KB
页数:6页
时间:2018-10-14
《领略spring 3.x 时代spring mvc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、鼎鼎大名的Spring框架3.0版在12月5日由其作者之一——JuergenHoeller先生在博客里宣告问世,并命为里程碑版,给Spring粉丝们带来了震撼的快感。笔者即开“快车”拉了两个包回来,遗憾的是参考文档至今还没有出来(仅有API文档),这为学习Spring3.0带来了非常大的困难,但没有阻挡笔者对新产品的兴趣。Spring之父RodJohnson先生早在2003年就预言EJB将死(观点颇具争议),攻击EJB之臃肿是在虐待程序员。然而EJB3.0出来后几乎宣判Spring死刑,但自2.0版以后Spring火爆程度已经超过EJB,两者的争斗至今仍不停息,这也是
2、Spring3.0连文档还没有整理出来就匆匆推出的原因。当然,Spring与EJB有很多各自独特优势之处,例如EJB的分布式运算、标准规范,Spring的IoC、AOP切面编程、偶合集成、MVC等等,取各自之长在企业中应用如虎添翼。Spring目前已经加入了J2EE规范,J2EE世界将更加精彩......或许是用腻了Struts1那死板的WEB框架,才对SpringMVC爱不释手,尤其是2.5版本以后,支持全注解配置方式,已经使很久没有再写过xml文件了。3.0版是完全兼容2.5,因此了解2.5版的@MVC则更容易接受。正如ArjenPoutsma小伙子在他的博客里说
3、的那样,3.0时代将集中致力于表述性状态转移(REST,希望我没有翻译错,金山词霸翻译为“休息”)的网络服务和更容易的网络编程。的确增加了更多的控制器类型,并增强了SOAP/WSDL/WS这些基于分布式体系结构。先回忆下2.5注解方式的@MVC,来一个示例:@ControllerpublicclassArticleController{@RequestMapping("/articleView")publicStringgetArticle(@RequestParam("id")Stringid,HttpServletRequestrequest){request.s
4、etAttribute("article",service.find(Article.class,id));return"articleView";}}ArticleController没有实现任何接口,是一个最普通不过的pojo,如果浏览器来了articleView.do?id=xxx这个请求,Spring会找到getArticle()这个方法,该方法第一个参数绑定到了URL上的请求参数,第二个是J2EE标准的request对象(可见SpringMVC是非侵入式的,不像变态的Struts2),事实上还可以给定HttpServletResponse,ModelMap,
5、甚至自己的类型,Spring都会为你将值传入进来。通过一个逻辑层service组件根据id参数值去底层查找Article对象,并放入request作用域中,最后返回的是面页视图名,这个例子中是返回到articleView.jsp中。上例再变通下:@ControllerpublicclassArticleController{@RequestMapping("/articleView_*")publicStringgetArticle(HttpServletRequestrequest){Stringid=StringUtil.getParam(request.getR
6、equestURI(),"articleView_*");request.setAttribute("article",service.find(Article.class,id));return"articleView";}}对于articleView_aaa.do,articleView_bbbb.do,articleView_c5h8j2.do,articleView_xxx.do,这样的请求都会由getArticle()这个方法来应付,是不是很有意思?Spring3.0增加了一个@PathVariable注解来支持可变的请求路径,将上面的代码在3.0版中再变通
7、下:@ControllerpublicclassArticleController{@RequestMapping("/articleView/${id}")//可以接受articleView/aaa.do,articleView/xxx.do...publicStringgetArticle(@PathVariableStringid,HttpServletRequestrequest){request.setAttribute("article",service.find(Article.class,id));return"articleView
此文档下载收益归作者所有