这篇文章主要介绍“Jersey是什么”,在日常操作中,相信很多人在Jersey是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jersey是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Jersey是个restfull 框架 类似于springmvc
服务端
maven
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.0 http://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>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--指定main方法-->
<mainClass>com.sean.MyResource</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
代码
package com.sean;
import java.io.IOException;
import java.net.URI;
import java.util.Iterator;
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.MultivaluedMap;
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
@Path("service")
public class MyResource {
@Path("{sub_path:[a-zA-Z0-9]*}")
@GET
@Consumes({MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON})
@Produces(MediaType.TEXT_PLAIN)
public String getResourceName(
@PathParam("sub_path") String resourceName,
@DefaultValue("Just a test!") @QueryParam("desc") String description,
@Context Request request,
@Context UriInfo uriInfo,
@Context HttpHeaders httpHeader) {
System.out.println(this.hashCode());
// 将HTTP请求打印出来
System.out.println("****** HTTP request ******");
StringBuilder strBuilder = new StringBuilder();
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()){
String headName = iterator.next();
System.out.println(headName + ":" + headers.get(headName) + "[\\r\\n]");
}
System.out.println("[\\r\\n]");
String responseStr =resourceName + "[" + description + "]";
return responseStr;
}
public static void main(String[] args) {
URI uri = UriBuilder.fromUri("http://127.0.0.1").port(10000).build();
ResourceConfig rc = new PackagesResourceConfig("com.sean");
try {
HttpServer server = GrizzlyServerFactory.createHttpServer(uri, rc);
server.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
Thread.sleep(1000*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
客户端
maven
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.0 http://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>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--指定main方法-->
<mainClass>com.sean.JerseyClient</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
代码
package com.sean;
import java.net.URI;
import java.util.Iterator;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriBuilder;
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 JerseyClient {
public static void main(String[] args) {
// 要使用Jersey Client API,必须首先创建Client的实例
// 有以下两种创建Client实例的方式
// 方式一
ClientConfig cc = new DefaultClientConfig();
cc.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT, 10*1000);
// Client实例很消耗系统资源,需要重用
// 创建web资源,创建请求,接受响应都是线程安全的
// 所以Client实例和WebResource实例可以在多个线程间安全的共享
Client client = Client.create(cc);
// 方式二
// Client client = Client.create();
// client.setConnectTimeout(10*1000);
// client.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT, 10*1000);
// WebResource将会继承Client中timeout的配置
// WebResource resource = client.resource("http://127.0.0.1:10000/service/sean?desc=description");
//
// String str = resource
// .accept(MediaType.TEXT_PLAIN)
// .type(MediaType.TEXT_PLAIN)
// .get(String.class);
// System.out.println("String:" + str);
URI uri = UriBuilder.fromUri("http://127.0.0.1/service/sean").port(10000)
.queryParam("desc", "description").build();
WebResource resource = client.resource(uri);
//header方法可用来添加HTTP头
ClientResponse response = resource.header("auth", "123456")
.accept(MediaType.TEXT_PLAIN)
.type(MediaType.TEXT_PLAIN)
.get(ClientResponse.class);
// 将HTTP响应打印出来
System.out.println("****** HTTP response ******");
StringBuilder strBuilder = new StringBuilder();
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()){
String headName = 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]");
}
}
到此,关于“Jersey是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3730149/blog/3072761