Jersey入门

package com.coshaho.learn.jersey;

import java.net.URI;

import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;

import org.glassfish.grizzly.http.server.HttpServer;

import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
import com.sun.jersey.api.core.PackagesResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;
import com.sun.jersey.spi.resource.Singleton;

@Singleton             //@Singleton表示单例模式,@PerRequest每个请求对应一个实例,默认为@PerRequest
@Path("helloWorld")    //服务名称,紧接port/
public class MyJerseyServer
{
    @Path("{sub_path:[a-zA-Z]*}")       //服务子路径,可以使用正则表达式,表示响应子路径为任意字母的请求
    @GET                                //表示接受HTTP GET请求,@POST、@PUT和@DELETE同理
    @Consumes({MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON})         //接受请求的媒体类型(MIME),不指定则可以接受任务媒体类型
    @Produces(MediaType.TEXT_PLAIN)                                       //定义响应媒体类型(MIME),不指定则可以接受任务媒体类型
    public String sayHelloWorld(
            // 使用路径定义中的sub_path变量
            @PathParam("sub_path") String service,

            // @QueryParam表示接受请求中的参数,@DefaultValue为默认值
            @DefaultValue("coshaho") @QueryParam("name") String name,

            // @Context可以获取请求上下文,包括Application,UriInfo,Request,HttpHeaders,SecurityContext
            @Context Request request,
            @Context UriInfo uriInfo,
            @Context HttpHeaders httpHeader
            )
    {
        System.out.println("Sub path is " + service + ".");
        System.out.println("Name is " + name + ".");
        System.out.println("Request method is " + request.getMethod() + ", url is " + uriInfo.getRequestUri().toString() + ".");
        return "Hello, " + name + ". Service is " + service + ".";
    }

    public static void main(String[] args)
    {
        URI uri = UriBuilder.fromUri("http://127.0.0.1").port(10000).build();
        ResourceConfig rc = new PackagesResourceConfig("com.coshaho.learn.jersey");
        try
        {
            HttpServer server = GrizzlyServerFactory.createHttpServer(uri, rc);
            server.start();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        try
        {
            Thread.sleep(1000*1000);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
    }

}
package com.coshaho.learn.jersey;

import java.util.Iterator;

import javax.ws.rs.core.MultivaluedMap;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;

public class MyJerseyClient
{
    public static void main(String[] args)
    {
        // 创建Jersey Client实例,Client实例很消耗系统资源,需要重用
        ClientConfig cc = new DefaultClientConfig();
        cc.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT, 10*1000);
        Client client = Client.create(cc);

        // 创建web资源,是线程安全的,Client实例和WebResource实例可以在多个线程间安全的共享
        WebResource resource = client.resource("http://127.0.0.1:10000/helloWorld/sayHi?name=cauchy");

        /**
         * 另一种请求方法
        URI uri = UriBuilder.fromUri("http://127.0.0.1/helloWorld/sayHello").port(10000)
                .queryParam("name", "coshaho").build();
        resource = client.resource(uri);
        */

        ClientResponse response = resource.get(ClientResponse.class);
         //        将HTTP响应打印出来
        StringBuilder strBuilder = new StringBuilder();
        strBuilder.append("HTTP/1.1 ");
        strBuilder.append(response.getStatus() + " ");
        strBuilder.append(response.getStatusInfo());
        System.out.println(strBuilder.toString());
        System.out.println();

        MultivaluedMap<String, String> headers = response.getHeaders();
        Iterator<String> iterator = headers.keySet().iterator();
        while(iterator.hasNext())
        {
            String headName = iterator.next();
            System.out.println(headName + ":" + headers.get(headName));
        }
        System.out.println();

        System.out.println(response.getEntity(String.class));
    }

}
时间: 2024-11-09 14:30:40

Jersey入门的相关文章

Java Restful框架:Jersey入门示例(官方例子)

本文主要介绍了Java Restful框架Jersey入门例子(来源于官方网站https://jersey.java.net/),废话不多说进入正题. 在Jersey官方示例中(https://jersey.java.net/documentation/latest/getting-started.html),入门例子主要采用maven构建,在这里使用eclipse来创建我们的项目 1.使用maven 骨架方式创建项目,如下图, 2.,如果在eclipser中没有上面的选项,我们需要手动添加Je

Jersey 入门与Javabean

Jersey是JAX-RS(JSR311)开源参考实现用于构建RESTful Web service,它包含三个部分: 核心服务器(Core Server) 通过提供JSR 311中标准化的注释和API标准化,可以用直观的方式开发RESTful Web服务. 核心客户端(Core Client) Jersey客户端API能够帮助开发者与RESTful服务轻松通信: 集成(Integration) Jersey还提供可以轻松继承Spring.Guice.Apache Abdera的库 设置Jers

JAVA RESTful Web Services - Jersey 入门

创建一个新项目: 使用maven  & Eclipse (Mars) Maven命令行创建一个新项目(maven环境搭建如不知晓自己查去) mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example -DartifactI

利用Jersey构建REST之入门实例

一.依赖包 1.目录结构如下: 2.对了,还需要引入junit.jar 二.服务端代码 package com.haha.manager; import java.util.concurrent.atomic.AtomicLong; public class User { private static AtomicLong seq = new AtomicLong(0); private Long id; private String name; private String sex; publ

RESTful WebService入门

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

Jersey构建Restful风格的webservices

最近一直在搞老项目的开发工作,很少写博文了.听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看. 这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料.网上的资料也比较零碎,这里整理一下. 一.helloworld 需要三个包,这里从maven获取. <dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>j

RESTful WebService入门(转)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 RESTful WebService是比基于SOAP消息的WebService简单的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都是非常的轻松容易. 以下是一个最简单的Hello World例子,以便对RESTful WebService有个感性认识.因为非常专业理论化

使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

RESTful Web 服务简单介绍 REST 在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识. client应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集.RESTful Web 服务是使用 HTTP 和 REST 原理实现的 Web 服务.通常,RESTful Web 服

RESTful WebService入门【转】

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