- 浏览: 122605 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (145)
- java (145)
- Java网络编程 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- tomcat部署web工程的两种方法 (1)
- JAX-RS 从傻逼到牛叉 1:REST 基础知识 (1)
- FreyjaJdbcTemplate 大致上完工了,想请人重构。。 (1)
- 开始认识自己 (1)
- 设计模式-Abstract Factory 模式 (1)
- 数据库中主键的设计原则 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- mac环境变量 (1)
- STC单片机ADC转换的例子 (1)
- myeclipse 8下安装Ibator . (1)
- OSGI与Android结合 (1)
- CSDN BLOG EXPERT (1)
- Java中网络操作的开源库CommonsNet (1)
- Apache License Version 2.0 英文内容及中文翻译 (1)
- JTest (1)
- GeoCon 用C#编写的开源的地理信息数据转换工具 (1)
- ERP简易教程 (1)
- 提高站点在搜索引擎上的排名 (1)
- Wifi (1)
- 腾讯Q+开放平台,相信又是一次成功的模仿 (1)
- C#坦克大战网络版代码 (1)
- Problem16 (1)
- Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较) (1)
- ava框架数据库连接池比较(c3p0 (1)
- dbcp和proxool)bonecp (1)
- 继续向成熟男人靠拢 (1)
- Qt4.7中 默认的构造函数 (1)
- xml CDATA (1)
- 只针对中英文混合分词的中文分词器 (1)
- 典型相关分析及其适用范围和spss操作(转) (1)
- llvm (1)
- java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access (1)
最新评论
-
xm3530:
什么鬼?都没法看,发出来干嘛
Android中利用App实现消息推送机制的代码实例 -
lvtenglongxiaohei:
太经典了!
学习一下!
ERP简易教程 -
lvtenglongxiaohei:
<br> 一天中午,丈 ...
ERP简易教程 -
hzw2312:
加油~~~!!!
开始认识自己 -
123048591:
显示乱码
tomcat部署web工程的两种方法
JAX-RS 从傻逼到牛叉 1:REST 基础知识
Posted on 2011-09-16 15:31 蜀山兆孨龘 阅读(1461) 评论(2) 编辑 收藏 所属分类: Java EE 、SOA
JAX-RS(JSR 311 - Java™ API for RESTful Web Services,用于 REST 风格的 Web 服务的 Java™ API)是 Java EE 6 规范的一部分,其目标在于简化和标准化用 Java 开发 REST 风格的 Web 服务。虽然 Java EE 6 刚出炉的时候,楼主也从头到尾看过这份规范,但苦于没有实际的项目练手,看过又忘了,现在最多算达到大成傻逼的境界。这次边看边写,期望完成后至少能破入小成牛逼。先从 REST 本身开始。
REST(REpresentational State Transfer,代表性状态传输)自称是一种风格而非标准,这在楼主看来有炒作的嫌疑。如果仅仅是一种风格,那么不同的框架如何兼容?所以才有 JAX-RS 的诞生。REST 最大的贡献是带来了 HTTP 协议的复兴。为什么叫复兴呢?本来 HTTP 的功能挺丰富的,可惜长期以来只被用作传输数据,大好青年被埋没了。楼主记得刚开始学 Servlet 的时候,一向是把 doGet 和 doPost 两个方法一视同仁的,因为书上这么教,很多 Web 框架也这么搞,以至于弄了很久才搞清楚 GET 和 POST 是两种不同的请求。现在 REST 拍砖说道,HTTP 早就定义好了一堆操作,以前一直被混淆使用,现在应该重新赋予它们本来的意义了,而且如果充分发挥 HTTP 的功能,完全能够胜任分布式应用的开发(传说中的 SOA)。
SOA 的理念在于将系统设计为一系列可重用的、解耦的、分布式的服务。这也不是新鲜玩意儿了,早期有 CORBA,稍晚有 SOAP 等等。REST 作为后起之秀,能够快速崛起,也必有其非同寻常的特色。下面一一列举。
可寻址性(Addressability)
系统中的每个资源都可以通过唯一标识符来访问。小插一句,“标识”的正确读音是 biāozhì。REST 使用 URI(统一资源标识符)管理资源的地址。URI 的概念不解释。一个 URI 可以指向一个或者多个资源。
统一的受限接口(The Uniform, Constrained Interface)
实际上强调了 HTTP 操作的原意。REST 主要使用了 GET、PUT、DELETE、POST、HEAD 和 OPTIONS 这 6 种操作。此处有两个曾经被忽略的 HTTP 概念:幂等(idempotent)和安全(safe)。幂等应该是 HTTP 从数学借来的一个术语(原始的数学意义楼主也不懂),意味着若干次请求的副作用与单次请求相同,或者根本没有副作用。GET、PUT、DELETE、HEAD 和 OPTIONS 都是幂等的:GET、HEAD 和 OPTIONS 都是读操作,容易理解;PUT 用于创建或更新已知 URI 的资源,多次创建或更新同一个资源显然和一次的效果相同;DELETE 删除资源,亦然。安全表示操作不会影响服务器的状态。GET、HEAD 和 OPTIONS 是安全的。POST 既不幂等又不安全,因为和 PUT 不同,POST 创建资源的时候并不知道资源的 URI,所以多个 POST 请求将会创建多个资源。
面向表象(Representation-Oriented)
表象这个词有点拗口,传闻在一个 REST 风格的系统中,服务端和客户端之间传输的咚咚就是表象……表象可以是纯文本、XML、JSON……或者自编的山寨格式。唉,不就是数据么?只不过可以用任意的格式来传输,因为 HTTP 正文里面啥都能放。Content-Type 头用来声明格式,一般是 MIME(多用途因特网邮件扩展),像 text/plain、text/html、application/pdf 这些。MIME 可以带属性,例如 text/html; charset=UTF-8。
无态通信(Communicate Statelessly)
REST 服务器只管理资源,而不会像 Web 服务器一样记录客户的会话状态,这些应该由客户端来管理,如此就能增强 REST 服务器的伸缩性。此处的客户端可以是客户端程序、浏览器,甚至一个 Web 应用。总之,REST 只负责库管啦!
HATEOAS
猛词砸来了!HATEOAS = Hypermedia As The Engine Of Application State,超媒体作为应用状态的引擎,怎么看起来比 SaaS(Software as a Service,软件作为服务)还要吓人呢?超文本不过是一只纸老虎,超媒体也瞒不过楼主的天眼:超媒体就是是由文字、图像、图形、视频、音频……链成一体的大杂烩!很简单的一个例子,有些坑爹的电影网站经常发布一些内嵌了广告的电影,播放的时候会弹出广告窗口,里面很多链接,你去点两下就中招了:这个电影文件就算是超媒体。
其实这个词最关键的地方是“状态引擎”。例如楼主在去网购,先选了几个东西,接下来可以干啥呢?可以继续选、可以把购物车清空、可以结账……楼主可以从现状“转换”到其他某些状态,而控制状态转换的那个咚咚就被冠名为状态引擎。多么聪明的词汇啊!楼主发现凡是高手都是造词砖家呀!用超媒体来控制状态转换,就是 HATEOAS:你是要继续看电影还是看广告?看哪个广告?自己慢慢考虑……
REST 相比 CORBA、SOAP、WS-* 之流确实独树一帜,但也难逃玩弄概念的嫌疑。记得大学里讲数据库的老师说过:“你们现在学了这么多理论,其实以后在工作中未必管用。在大街上随便找一个软件培训学校出来的小伙子,他哪儿懂什么第二第三范式啊?但却能把数据库玩儿得飞转!”
发表评论
-
java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access
2012-02-08 14:17 1015<div>Java数据库连接(JDBC)由 ... -
llvm
2012-02-07 16:29 847llvm ... -
典型相关分析及其适用范围和spss操作(转)
2012-02-07 15:43 1514看文章《科学学研 ... -
只针对中英文混合分词的中文分词器
2012-02-03 10:39 975该版本说明 1、只针对中英文混合分词 需要一些中文和 ... -
xml CDATA
2012-02-03 08:45 1154<h2 style="font-si ... -
Qt4.7中 默认的构造函数
2012-02-01 09:14 1047<p><span style=&qu ... -
继续向成熟男人靠拢
2012-01-11 17:04 847转自徒儿的人人。 ... -
ava框架数据库连接池比较(c3p0,dbcp和proxool)bonecp
2012-01-11 14:13 1072<h1 style="text ... -
Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较)
2011-12-28 15:23 907<span style="font- ... -
Problem16
2011-12-28 12:53 628package com.shui.mu.yao.io. ... -
C#坦克大战网络版代码
2011-12-20 13:09 929简单C#坦克大战网络版代码 写完单机版 http ... -
腾讯Q+开放平台,相信又是一次成功的模仿
2011-12-20 10:44 827今天看到两则新 ... -
Wifi
2011-12-19 13:14 1032. Confirm if Wifi is On ... -
提高站点在搜索引擎上的排名
2011-12-19 12:04 881对于拥有网站的各位站长来说,都希望自己的站点能够在各种 ... -
ERP简易教程
2011-12-16 16:47 874注明:下面的帖子 ... -
GeoCon 用C#编写的开源的地理信息数据转换工具
2011-12-14 12:29 924<p class="MsoNorma ... -
JTest
2011-12-14 09:00 997接到parasoft公司一位先生打来的电话,说下个月第 ... -
Apache License Version 2.0 英文内容及中文翻译
2011-12-13 12:59 2209</span> <p class= ... -
Java中网络操作的开源库CommonsNet
2011-12-13 12:39 772<p class="MsoNorma ... -
CSDN BLOG EXPERT
2011-12-13 08:59 1059<img src="http://p. ...
相关推荐
With the book’s technical guide, you’ll learn how REST and JAX-RS work and when to use them. The RESTEasy workbook that follows provides step-by-step instructions for installing, configuring, and ...
[奥莱理] RESTful Java 开发 (Jax-RS 实现) (英文版) [奥莱理] RESTful Java with Jax-RS (E-Book) ☆ 图书概要:☆ Learn how to design and develop distributed web services in Java using RESTful ...
赠送jar包:jackson-jaxrs-json-provider-2.7.8.jar; 赠送原API文档:jackson-jaxrs-json-provider-2.7.8-javadoc.jar; 赠送源代码:jackson-jaxrs-json-provider-2.7.8-sources.jar; 赠送Maven依赖信息文件:...
JAX-RS(JSR 311)指的是Java API for RESTful Web Services,Roy Fielding也参与了JAX-RS的制订,他在自己的博士论文中定义了REST。对于那些想要构建RESTful Web Services的开发者来说,JAX-RS给出了不同于JAX-WS...
javax.xml.ws.Service 报错需要的包,亲测可以用,直接下载在ide里buildpath一下就可以,四个jar包 ,整合了其他的jar所以配置简单
JAX-RS REST helloworld 项目源码 下载后引入eclipse jee 启动tomcat可直接访问 访问路径为http://localhost:8080/AndroidJAX-RS/jaxrs/helloworld/html
使用到的外部jar包有(必须的部分,需要加到Web容器中) •neethi-3.0.2.jar •jsr311-api-1.1.1.jar •cxf-bundle-2.6.0.jar 使用到的外部jar包有(可选的部分,当且仅当作为一个独立的application运行时) ...
JAX-RS Rest RestLet项目源码 对初学者有帮助 实现最简单的 GET PUT DELETE UPDATE
jax-rs 2.1规范最终版,英文原版。jax-rs规范定义了java平台Rest调用风格的WebService接口。
关于JAX-RS的注解详细,本人通过网络及实际应用收集的资料
web service rest(jax-rs)整合完整的Jax-rs组件包,内含2个版本,分别是1.0和1.4版本。
JAX-RS-FileUpload-Jersey-Example
使用Eclipse开发基于SpringBoot+JAX-RS的Restful服务.docx使用Eclipse开发基于SpringBoot+JAX-RS的Restful服务.docx使用Eclipse开发基于SpringBoot+JAX-RS的Restful服务.docx使用Eclipse开发基于SpringBoot+JAX-RS的...
JAX-RS+spring
restlet_jax-rs列子 可直接运行 在我的博客里有一些描述。希望能给大家提供点帮助
REST Jersey项目源码,测试通过,精通REST java JAX-RS技术必读!
RESTful Java with JAX-RS 2.0.pdf
jax-rs官方实例,对大家学习restful开发会有很大启发。
自己下的官网的文档然后作了个CHM。。。不太会做做得不大好。。不过能看。。比HTML方便一点