ESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都非常的轻松容易。
 
下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识。因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情。看看例子就知道个大概了,再看理论就容易理解多了。
 
/** 
* RESTful WebService入门 
* @author leizhimin 2009-11-18 16:42:43 
*/ 
package example;

import com.sun.jersey.api.container.httpserver.HttpServerFactory; 
import com.sun.net.httpserver.HttpServer;

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import java.io.IOException;

//指定URI 
@Path("/helloworld") 
public class HelloWorld { 
        //处理HTTP的GET请求 
        @GET 
        // 处理请求反馈的内容格式为"text/plain" 
        @Produces("text/plain") 
        public String getClichedMessage() { 
                return "Hello World!"; 
        }

public static void main(String[] args) throws IOException { 
                //创建RESTful WebService服务 
                HttpServer server = HttpServerFactory.create("http://192.168.14.117:9999/"); 
                //启动服务,这会导致新开一个线程 
                server.start(); 
                //输出服务的一些提示信息到控制台 
                System.out.println("RESTful WebService服务已经启动"); 
                System.out.println("服务访问地址: http://192.168.14.117:9999/helloworld"); 
        } 
}

 
运行这个类,控制台输入出:
2009-11-18 17:25:37 com.sun.jersey.api.core.ClasspathResourceConfig init 
信息: Scanning for root resource and provider classes in the paths: 
    D:\jdk16\jre\lib\alt-rt.jar 
    D:\jdk16\jre\lib\charsets.jar 
    D:\jdk16\jre\lib\deploy.jar 
    D:\jdk16\jre\lib\javaws.jar 
    D:\jdk16\jre\lib\jce.jar 
    D:\jdk16\jre\lib\jsse.jar 
    D:\jdk16\jre\lib\management-agent.jar 
    D:\jdk16\jre\lib\plugin.jar 
    D:\jdk16\jre\lib\resources.jar 
    D:\jdk16\jre\lib\rt.jar 
    D:\jdk16\jre\lib\ext\dnsns.jar 
    D:\jdk16\jre\lib\ext\localedata.jar 
    D:\jdk16\jre\lib\ext\sunjce_provider.jar 
    D:\jdk16\jre\lib\ext\sunmscapi.jar 
    D:\jdk16\jre\lib\ext\sunpkcs11.jar 
    D:\netwideo\restws\out\production\restws 
    D:\IDEA8\lib\javaee.jar 
    D:\netwideo\restws\lib\mail-1.4.jar 
    D:\netwideo\restws\lib\asm-3.1.jar 
    D:\netwideo\restws\lib\wadl2java.jar 
    D:\netwideo\restws\lib\jettison-1.0.1.jar 
    D:\netwideo\restws\lib\grizzly-servlet-webserver-1.8.6.4.jar 
    D:\netwideo\restws\lib\wadl-core.jar 
    D:\netwideo\restws\lib\localizer.jar 
    D:\netwideo\restws\lib\jdom-1.0.jar 
    D:\netwideo\restws\lib\jsr311-api-1.0.jar 
    D:\netwideo\restws\lib\stax-api-1.0-2.jar 
    D:\netwideo\restws\lib\persistence-api-1.0.2.jar 
    D:\netwideo\restws\lib\jaxb-api-2.1.jar 
    D:\netwideo\restws\lib\wadl-cmdline.jar 
    D:\netwideo\restws\lib\http-20070405.jar 
    D:\netwideo\restws\lib\rome-0.9.jar 
    D:\netwideo\restws\lib\activation-1.1.jar 
    D:\netwideo\restws\lib\jaxb-impl-2.1.10.jar 
    D:\netwideo\restws\lib\jersey-bundle-1.0.3.jar 
    D:\netwideo\restws\lib\jackson-lgpl-0.9.4.jar 
    D:\netwideo\restws\lib\FastInfoset-1.2.2.jar 
    D:\netwideo\restws\lib\jaxb-xjc.jar 
    D:\IDEA8\lib\idea_rt.jar 
2009-11-18 17:25:46 com.sun.jersey.api.core.ClasspathResourceConfig init 
信息: Root resource classes found: 
    class example.HelloWorld 
2009-11-18 17:25:46 com.sun.jersey.api.core.ClasspathResourceConfig init 
信息: Provider classes found: 
RESTful WebService服务已经启动 
服务访问地址: http://192.168.14.117:9999/helloworld
 
可见,服务启动成功了,下来就是从浏览器中访问服务了,输入http://192.168.14.117:9999/helloworld,将发送一个HTTP GET请求,看看结果:
 
 
测试成功了!
 
--------------------
这个项目以来很多的包,有些事sun的,有些不是,这里我全放出来,整个项目放到附件中,在jdk5、6下运行都可以。
 
很遗憾,附件最大能上传6M的东西,这个超过6M了,只能等待51cto能放宽上传文件的大小。每个限制在10M以内最好了。----希望:),这里我列出所用的包吧:
activation-1.1.jar 
asm-3.1.jar 
FastInfoset-1.2.2.jar 
grizzly-servlet-webserver-1.8.6.4.jar 
http-20070405.jar 
jackson-lgpl-0.9.4.jar 
jaxb-api-2.1.jar 
jaxb-impl-2.1.10.jar 
jaxb-xjc.jar 
jdom-1.0.jar 
jersey-bundle-1.0.3.jar 
jettison-1.0.1.jar 
jsr311-api-1.0.jar 
mail-1.4.jar 
localizer.jar 
persistence-api-1.0.2.jar 
rome-0.9.jar 
stax-api-1.0-2.jar 
wadl-core.jar 
wadl-cmdline.jar 
wadl2java.jar
 

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/229206

RESTful WebService入门【转】的更多相关文章

  1. RESTful WebService入门(转)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 REST ...

  2. RESTful WebService入门

    RESTful WebService入门   RESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状 ...

  3. RESTful WebService 入门实例

      /* 新建MavenProject,使用以下代码,创建类和POM文件.使用命令行切换到Project根目录,运行mvn package(或者,选中pom.xml 文件右键单击 > run a ...

  4. CXF发布restful WebService的入门例子(客户端)

    上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...

  5. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  6. SOAP Webservice和RESTful Webservice

    http://blog.sina.com.cn/s/blog_493a845501012566.html REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的 ...

  7. Restful是什么,SOAP Webservice和RESTful Webservice

    首先,应该怀着这样一种心态来学习Restful——Restful你可以将其理解一种软件架构风格,并且诠释了Http协议的设计初衷,所以不要把他理解的那么神秘,Restful风格有好处,当然也是有坏处的 ...

  8. Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

  9. RESTful Webservice (一) 概念

    Representational State Transfer(表述性状态转移) RSET是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩 ...

随机推荐

  1. OpenCV学习(37) 人脸识别(2)

          在前面一篇教程中,我们学习了OpenCV中基于特征脸的人脸识别的代码实现,我们通过代码 Ptr<FaceRecognizer> model = createEigenFaceR ...

  2. OpenCV学习(19) 细化算法(7)

    最后再来看一种通过形态学腐蚀和开操作得到骨架的方法.http://felix.abecassis.me/2011/09/opencv-morphological-skeleton/ 代码非常简单: v ...

  3. 原创BULLET物理的DEMO

    原创BULLET物理的DEMO 按空格和0,1,2,3,4,5,6会发射不同的刚体. 具体的使用说明: 鼠标右键按下并拖动         旋转视角WSAD                       ...

  4. Java文件操作大全

    //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.exists()) ...

  5. 一个常见下拉菜单的样式:一体化小三角(纯css手写解决)

    类似下拉菜单2个一体化小三角,习惯上用字体图标加jQuery处理,比较方便,但是下面纯css手写解决方式,效果也还不错,对CSS知识也是一个比较好的孔固. 小三角用了2种不同处理方式:1.利用bord ...

  6. python3 识别图片文字

    1.下载相关组件 安装:pip install Pillow 或下载:https://pypi.org/project/Pillow/5.2.0/  ,https://pypi.org/project ...

  7. 【Django】Django如何保证并发操作数据一致性问题

    代码示例: 使用 select for update 数据库查询 select ... for update 是数据库层面上专门用来解决并发取数据后再修改的场景的,主流的关系数据库 比如mysql.p ...

  8. 如何:使用TreeView控件实现树结构显示及快速查询

    本文主要讲述如何通过使用TreeView控件来实现树结构的显示,以及树节点的快速查找功能.并针对通用树结构的数据结构存储进行一定的分析和设计.通过文本能够了解如何存储层次结构的数据库设计,如何快速使用 ...

  9. js正则表达式/replace替换变量方法

    转自:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html 1. javascript 正则对象替换创建和用法:/patter ...

  10. swift语言实现单例模式

    Swift实现单例模式 单例模式在各个语言中都有实现,swift语言推出已经几天了.通过这几天的看文档.特奉上写的Swift的单例实现,供大家学习交流,欢迎指正. ---若转载请注明出处,本人Gith ...