`
whiteangell
  • 浏览: 10945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

netbeans6.8与glassfishV3体验Jee6之四rest

阅读更多
 感冒几天,病情终于有所好转;继续使用NetBean6.8+GlassFish体验JEE6。Java EE 6 中所引入的 JSR-311是Rest full webService 。REST 是英文   Representational State Transfer 的缩写,有中文翻译为“具象状态传输”。REST 这个术语是由 Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的。REST 并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。REST 基于 HTTP,URI,以及 XML 这些现有的广泛流行的协议和标准,伴随着 REST,HTTP 协议得到了更加正确的使用。
  相较于基于 SOAP 和 WSDL 的 Web 服务,REST 模式提供了更为简洁的实现方案。目前,越来越多的 Web 服务开始采用 REST 风格设计和实现,真实世界中比较著名的 REST 服务包括:Google AJAX 搜索 API、Amazon Simple Storage Service (Amazon S3) 等。
  基于 REST 的 Web 服务遵循一些基本的设计原则:
  系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址,URI 的结构应该简单、可预测且易于理解,比如定义目录结构式的 URI。
  以遵循 RFC-2616 所定义的协议的方式显式地使用 HTTP 方法,建立创建、检索、更新和删除(CRUD:Create, Retrieve, Update and Delete)操作与 HTTP 方法之间的一对一映射:
  若要在服务器上创建资源,应该使用 POST 方法;
  若要检索某个资源,应该使用 GET 方法;
  若要更改资源状态或对其进行更新,应该使用 PUT 方法;
  若要删除某个资源,应该使用 DELETE 方法。
  URI 所访问的每个资源都可以使用不同的形式加以表示(比如 XML 或者 JSON),具体的表现形式取决于访问资源的客户端,客户端与服务提供者使用一种内容协商的机制(请求头与 MIME 类型)来选择合适的数据格式,最小化彼此之间的数据耦合。
  JSR311定义的标注主要有: @GET、@POST、@PUT、@DELETE、@HttpMethod、@Path、@Consumes、@Produces等。
一、新建项目工程
启动netbeans6.8,按快捷键Ctrl+Shift+N 打开新建项目窗口如下图:

选择“Java Web” —>“WEB 应用程序”点击“下一步”打开输入项目名称对话框,在项目名称中输入“testrest”点击“下一步”则弹出如下图对话框:

在服务器选择框中选择“GlassFish V3域”,JavaEE版本中选择“Java EE6 Web”;上下文路径中输入“/testrest”点击完成。
二、新建包
选择testrest项目的“源包”单击右键分别新建二个package:com.rest与com.test。
三、新建基于模式的REST风格WEB服务
选中com.rest包单击右键选择“新建”—>“其他”如下图:

则弹出如下图对话框:

类型选择“WEB 服务”—>“基于模式的REST风格的WEB服务”点击“下一步”则弹出如下对话框:

选择“简单根资源“点击下一步,弹出如下对话框:

路径输入“rest“类名输入 “TestRest”、MIME类型输入“Application/xml“表示类输入 “java.lang.String”点击完成。

在“REST 资源配置“对话框中的REST资源路径中输入 “/resources”点击“确定“。
除去注释写入如下代码:
package com.rest;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@Path("/rest")
public class TestRest {
    @Context
    private UriInfo context;
    @GET
    @Produces("application/xml")
    public String getHelloText() {
       String text ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><com>HelloWorld!  </com>";
       return text;
    }
    @Path("/{id:\\d+}/")
    @GET
    @Produces("application/xml")
    public String getHelloById(@PathParam("id")   int id) {
       String text ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><com>The id is:"+id+"</com>";
       return text;
    }
    @Path("/{code}/")
    @GET
    @Produces("application/xml")
    public String getHelloByCode(@PathParam("code")   String code) {
       String text ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><com>The id code:"+code+"</com>";
       return text;
    }
}

四、部署并测试
  @Path("rest")是指定了资源的对应路径是/rest,之前在资源路径中输入了/resources所以完成路径就是Http://localhost:8080/testrest/resources/rest。
getHelloText方法是默认的资源路径:Http://localhost:8080/testrest/resources/rest.如果在浏览器输入这个地址则返回包含HelloWorld!的XML代码。
  getHelloById方法则是包含参数ID的资源路径如:Http://localhost:8080/testrest/resources/rest/1。
  getHelloByCode方法则是包含参数CODE的资源路径如:Http://localhost:8080/testrest/resources/rest/whiteangell。
  部属testrest应用,启动GlassFish服务器输入资源地址看看效果吧!JEE 6真是轻量级,比之前我们用struts进写ajax请求简单多了!快来试试吧!
  下一节我们继续体验Jee 6 深入研究REST WEBSERVICE。
  • 大小: 51.1 KB
  • 大小: 47.4 KB
  • 大小: 27.1 KB
  • 大小: 64 KB
  • 大小: 58.5 KB
  • 大小: 54.5 KB
  • 大小: 36.6 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics