仓酷云
标题:
了解下JAVA的计划REST作风的MVC框架
[打印本页]
作者:
第二个灵魂
时间:
2015-1-18 11:10
标题:
了解下JAVA的计划REST作风的MVC框架
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?
Java开辟者对MVC框架必定不生疏,从Struts到WebWork,JavaMVC框架层见叠出。我们已习气了处置*.do或*.action作风的URL,为每个URL编写一个把持器,并承继一个Action大概Controller接口。但是,盛行的Web趋向是利用加倍复杂,对用户和搜刮引擎加倍友爱的REST作风的URL。比方,来自豆瓣的一本书的链接是http://www.douban.com/subject/2129650/,而非http://www.douban.com/subject.do?id=2129650。
有履历的JavaWeb开辟职员会利用URL重写的体例来完成相似的URL,比方,为前端Apache服务器设置mod_rewrite模块,并顺次为每一个必要完成URL重写的地点编写卖力转换的正则表达式,大概,经由过程一个自界说的RewriteFilter,利用JavaWeb服务器供应的Filter和哀求转发(Forward)功效完成URL重写,不外,仍需要为每一个地点编写正则表达式。
既然URL重写云云烦琐,为什么不间接计划一个原生撑持REST作风的MVC框架呢?
要计划并完成如许一个MVC框架其实不坚苦,上面,我们从零开始,细心研讨怎样完成REST作风的URL映照,并与罕见的IoC容器如Spring框架集成。这个全新的MVC框架暂定名为WebWind。
术语
MVC:Model-View-Controller,是一种罕见的UI架构形式,经由过程分别Model(模子)、View(视图)和Controller(把持器),能够更简单完成易于扩大的UI。在Web使用程序中,Model指背景前往的数据;View指必要衬着的页面,一般是JSP大概其他模板页面,衬着后的了局一般是HTML;Controller指Web开辟职员编写的处置分歧URL的把持器(在Struts中被称之为Action),而MVC框架自己另有一个前置把持器,用于吸收一切的URL哀求,并依据URL地点分发到Web开辟职员编写的Controller中。
IoC:Invertion-of-Control,把持反转,是今朝盛行的办理一切组件性命周期和庞大依附干系的容器,比方Spring容器。
Template:模板,经由过程衬着,模板中的变量将被Model的实践数据所交换,然后,天生的内容便是用户在扫瞄器中看到的HTML。模板也能完成判别、轮回等复杂逻辑。实质上,JSP页面也是一种模板。别的,另有很多第三方模板引擎,如Velocity,FreeMarker等。
计划方针
和传统的Struts等MVC框架完整分歧,为了撑持REST作风的URL,我们其实不把一个URL映照到一个Controller类(大概Struts的Action),而是间接把一个URL映照到一个办法,如许,Web开辟职员就能够将多个功效相似的办法放到一个Controller中,而且,Controller没有强迫请求必需完成某个接口。一个Controller一般具有多个办法,每一个办法卖力处置一个URL。例如,一个办理Blog的Controller界说起来就像清单1所示。
清单1.办理Blog的Controller界说
public class Blog {
@Mapping("/create/$1")
Public void create(int userId) { ... }
@Mapping("/display/$1/$2")
Public void display(int userId, int postId) { ... }
@Mapping("/edit/$1/$2")
Public void edit(int userId, int postId) { ... }
@Mapping("/delete/$1/$2")
Public String delete(int userId, int postId) { ... }
}
@Mapping()注解唆使了这是一个处置URL映照的办法,URL中的参数$1、$2……则将作为办法参数传进。关于一个“/blog/1234/5678”的URL,对应的办法将主动取得参数userId=1234和postId=5678。同时,也无需任何与URL映照相干的XML设置文件。
利用$1、$2……来界说URL中的可变参数要比正则表达式更复杂,我们需要在MVC框架外部将其转化为正则表达式,以便婚配URL。
别的,关于办法前往值,也未作强迫请求。
<p>
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,
作者:
蒙在股里
时间:
2015-1-24 13:26
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
莫相离
时间:
2015-2-1 15:49
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者:
变相怪杰
时间:
2015-2-4 21:10
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者:
admin
时间:
2015-2-7 14:42
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
飘飘悠悠
时间:
2015-2-10 10:52
是一种将安全性(Security)列为第一优先考虑的语言
作者:
小妖女
时间:
2015-3-1 09:12
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者:
愤怒的大鸟
时间:
2015-3-10 13:02
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者:
兰色精灵
时间:
2015-3-17 07:26
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者:
分手快乐
时间:
2015-3-24 02:01
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2