综合百科

Jersey是什么

Jersey是个restfull 框架 类似于springmvc

服务端

maven

<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--<parent>--><!--<artifactId>demo</artifactId>--><!--<groupId>com.demo2</groupId>--><!--<version>0.0.1-SNAPSHOT</version>--><!--</parent>--><modelVersion>4.0.0</modelVersion><groupId>JERSEY_SERVER</groupId><artifactId>JERSEY_SERVER</artifactId><version>1.0</version><dependencies><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-server</artifactId><version>1.18</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-grizzly2</artifactId><version>1.18</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.3</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><!--指定main方法--><mainClass>com.sean.MyResource</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build></project>

代码

packagecom.sean;importjava.io.IOException;importjava.net.URI;importjava.util.Iterator;importjavax.ws.rs.Consumes;importjavax.ws.rs.DefaultValue;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.QueryParam;importjavax.ws.rs.core.Context;importjavax.ws.rs.core.HttpHeaders;importjavax.ws.rs.core.MediaType;importjavax.ws.rs.core.MultivaluedMap;importjavax.ws.rs.core.Request;importjavax.ws.rs.core.UriBuilder;importjavax.ws.rs.core.UriInfo;importorg.glassfish.grizzly.http.server.HttpServer;importcom.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;importcom.sun.jersey.api.core.PackagesResourceConfig;importcom.sun.jersey.api.core.ResourceConfig;importcom.sun.jersey.spi.resource.singleton;@Singleton@Path("service")publicclassMyResource{@Path("{sub_path:[a-zA-Z0-9]*}")@GET@Consumes({MediaType.TEXT_PLAIN,MediaType.APPLICATION_JSON})@Produces(MediaType.TEXT_PLAIN)publicStringgetResourceName(@PathParam("sub_path")StringresourceName,@DefaultValue("Justatest!")@QueryParam("desc")Stringdescription,@ContextRequestrequest,@ContextUriInfouriInfo,@ContextHttpHeadershttpHeader){System.out.println(this.hashCode());//将HTTP请求打印出来System.out.println("******HTTPrequest******");StringBuilderstrBuilder=newStringBuilder();strBuilder.append(request.getMethod()+"");strBuilder.append(uriInfo.getRequestUri().toString()+"");strBuilder.append("HTTP/1.1[\\r\\n]");System.out.println(strBuilder.toString());MultivaluedMap<String,String>headers=httpHeader.getRequestHeaders();Iterator<String>iterator=headers.keySet().iterator();while(iterator.hasNext()){StringheadName=iterator.next();System.out.println(headName+":"+headers.get(headName)+"[\\r\\n]");}System.out.println("[\\r\\n]");StringresponseStr=resourceName+"["+description+"]";returnresponseStr;}publicstaticvoidmain(String[]args){URIuri=UriBuilder.fromUri("http://127.0.0.1").port(10000).build();ResourceConfigrc=newPackagesResourceConfig("com.sean");try{HttpServerserver=GrizzlyServerFactory.createHttpServer(uri,rc);server.start();}catch(IllegalArgumentExceptione){e.printStackTrace();}catch(nullpointerexceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}try{Thread.sleep(1000*1000);}catch(InterruptedExceptione){e.printStackTrace();}}}

客户端

maven

<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--<parent>--><!--<artifactId>demo</artifactId>--><!--<groupId>com.demo2</groupId>--><!--<version>0.0.1-SNAPSHOT</version>--><!--</parent>--><modelVersion>4.0.0</modelVersion><groupId>JERSEY_CLIENT</groupId><artifactId>JERSEY_CLIENT</artifactId><version>1.0</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.18</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-grizzly2</artifactId><version>1.18</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.3</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><!--指定main方法--><mainClass>com.sean.JerseyClient</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build></project>

代码

packagecom.sean;importjava.net.URI;importjava.util.Iterator;importjavax.ws.rs.core.MediaType;importjavax.ws.rs.core.MultivaluedMap;importjavax.ws.rs.core.UriBuilder;importcom.sun.jersey.api.client.Client;importcom.sun.jersey.api.client.ClientResponse;importcom.sun.jersey.api.client.WebResource;importcom.sun.jersey.api.client.config.ClientConfig;importcom.sun.jersey.api.client.config.DefaultClientConfig;publicclassJerseyClient{publicstaticvoidmain(String[]args){//要使用JerseyClientAPI,必须首先创建Client的实例//有以下两种创建Client实例的方式//方式一ClientConfigcc=newDefaultClientConfig();cc.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT,10*1000);//Client实例很消耗系统资源,需要重用//创建web资源,创建请求,接受响应都是线程安全的//所以Client实例和WebResource实例可以在多个线程间安全的共享Clientclient=Client.create(cc);//方式二//Clientclient=Client.create();//client.setConnectTimeout(10*1000);//client.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT,10*1000);//WebResource将会继承Client中timeout的配置//WebResourceresource=client.resource("http://127.0.0.1:10000/service/sean?desc=description");////Stringstr=resource//.accept(MediaType.TEXT_PLAIN)//.type(MediaType.TEXT_PLAIN)//.get(String.class);//System.out.println("String:"+str);URIuri=UriBuilder.fromUri("http://127.0.0.1/service/sean").port(10000).queryParam("desc","description").build();WebResourceresource=client.resource(uri);//header方法可用来添加HTTP头ClientResponseresponse=resource.header("auth","123456").accept(MediaType.TEXT_PLAIN).type(MediaType.TEXT_PLAIN).get(ClientResponse.class);//将HTTP响应打印出来System.out.println("******HTTPresponse******");StringBuilderstrBuilder=newStringBuilder();strBuilder.append("HTTP/1.1");strBuilder.append(response.getStatus()+"");strBuilder.append(response.getStatusInfo()+"[\\r\\n]");System.out.println(strBuilder.toString());MultivaluedMap<String,String>headers=response.getHeaders();Iterator<String>iterator=headers.keySet().iterator();while(iterator.hasNext()){StringheadName=iterator.next();System.out.println(headName+":"+headers.get(headName)+"[\\r\\n]");}System.out.println("[\\r\\n]");System.out.println(response.getEntity(String.class)+"[\\r\\n]");}}