{"id":353,"date":"2023-05-07T15:08:57","date_gmt":"2023-03-13T18:09:15","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/index.php\/2023\/11\/30\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/"},"modified":"2025-08-02T01:19:54","modified_gmt":"2025-08-01T17:19:54","slug":"%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/","title":{"rendered":"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1"},"content":{"rendered":"<p>\u8fd9\u662f\u6587\u7ae0\u300a\u6cfd\u897f\uff08Jersey\uff09Java\u6559\u7a0b\u300b\u7684\u7b2c1\u90e8\u5206\uff08\u51712\u90e8\u5206\uff09\u3002<\/p>\n<p>\u5185\u5bb9\u7247\u6bb5: \u6b22\u8fce\u6765\u5230Java Jersey\u6559\u7a0b\u3002\u6700\u8fd1\uff0c\u6211\u5f00\u59cb\u4f7f\u7528JAX-RS Jersey\u6846\u67b6\u6765\u8fdb\u884c\u4e00\u4e2aRestful web\u670d\u52a1\u9879\u76ee\u7684\u5de5\u4f5c\u3002<\/p>\n<h2>Java Jersey Framework\u662f\u4ec0\u4e48\uff1f<\/h2>\n<p>Java Jersey\u9879\u76ee\u8ffd\u8e2aJAX-RS API\uff0c\u7528\u4e8e\u5728Java\u4e2d\u521b\u5efaRestful\u7684Web\u670d\u52a1\u3002<\/p>\n<h3>\u8fd9\u4e2a\u6559\u7a0b\u9002\u5408\u8c01\u4f7f\u7528\uff1f<\/h3>\n<p>\u672c\u6559\u7a0b\u65e8\u5728\u5e2e\u52a9\u5bf9\u4f7f\u7528JAX-RS API\u548cJAXB\u5f00\u53d1\u548c\u90e8\u7f72Restful Web\u670d\u52a1\u611f\u5174\u8da3\u7684Java\u7a0b\u5e8f\u5458\u4eec\u3002<\/p>\n<h3>2. \u5148\u51b3\u6761\u4ef6<\/h3>\n<p>\u8fd9\u4e2a\u6559\u7a0b\u7684\u8303\u56f4\u662f\u4f7f\u7528Jersey API\u521b\u5efaRestful Web\u670d\u52a1\uff0c\u4f7f\u7528Java\u5ba2\u6237\u7aef\u7a0b\u5e8f\u8c03\u7528Web\u670d\u52a1\uff0c\u5e76\u4f7f\u7528\u5de5\u5177\u6d4b\u8bd5Web\u670d\u52a1\u3002\u8981\u8f7b\u677e\u7406\u89e3\u8fd9\u4e2a\u6559\u7a0b\uff0c\u9700\u8981\u57fa\u672c\u4e86\u89e3Java\u3001Web\u670d\u52a1\u3001XML\u3001Maven\u548c\u5e94\u7528\u670d\u52a1\u5668\uff08JBoss\/Tomcat\uff09\u3002<\/p>\n<h3>3. \u8f6f\u4ef6\u548c\u5de5\u5177<\/h3>\n<ul class=\"post-ul\">\n<li>JDK \u7248\u672c 1.8.0_131<\/li>\n<li>Apache Maven 3.5.3<\/li>\n<li>Mac OS X 10.13.4<\/li>\n<li>Tomcat 8.5.16<\/li>\n<li>Eclipse Java EE IDE Oxygen 4.7.3<\/li>\n<\/ul>\n<h2>\u521b\u5efaJersey Eclipse Maven\u9879\u76ee<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564842aa4b2f92e6c72fa8a\/10-0.png\" alt=\"jersey java tutorial eclipse project\" \/><\/div>\n<h2>Java Jersey Restful Web Service \u9879\u76ee\u89e3\u91ca<\/h2>\n<p>1. pom.xml\uff1a\u9879\u76ee\u914d\u7f6e\u7ec6\u8282\uff0c\u8bf7\u6ce8\u610f\u63d0\u4f9b\u7684Jersey\u4f9d\u8d56\u9879\uff0c\u5176\u4ed6\u7ec6\u8282\u5bf9\u4e8e\u7c7b\u4f3c\u7684Maven\u9879\u76ee\u662f\u901a\u7528\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code>&lt;project xmlns=\"https:\/\/maven.apache.org\/POM\/4.0.0\"\r\n\txmlns:xsi=\"https:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"https:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n\t&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n\t&lt;groupId&gt;com.Olivia.jersey&lt;\/groupId&gt;\r\n\t&lt;artifactId&gt;my-jersey-project&lt;\/artifactId&gt;\r\n\t&lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\r\n\t&lt;packaging&gt;war&lt;\/packaging&gt;\r\n\r\n\t&lt;dependencies&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.sun.jersey&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;jersey-server&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.14&lt;\/version&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.sun.jersey&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;jersey-servlet&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.14&lt;\/version&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.sun.jersey&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;jersey-client&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.14&lt;\/version&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t&lt;\/dependencies&gt;\r\n\r\n\t&lt;build&gt;\r\n\t\t&lt;finalName&gt;My-Jersey-Project&lt;\/finalName&gt;\r\n\t\t&lt;plugins&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;artifactId&gt;maven-compiler-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;3.7.0&lt;\/version&gt;\r\n\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t&lt;source&gt;1.8&lt;\/source&gt;\r\n\t\t\t\t\t&lt;target&gt;1.8&lt;\/target&gt;\r\n\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;artifactId&gt;maven-war-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;3.0.0&lt;\/version&gt;\r\n\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t&lt;warSourceDirectory&gt;WebContent&lt;\/warSourceDirectory&gt;\r\n\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t&lt;\/plugins&gt;\r\n\t&lt;\/build&gt;\r\n&lt;\/project&gt;\r\n<\/code><\/pre>\n<p>2. EmpRequest.java\uff1a\u8bf7\u6c42\u5bf9\u8c61\u7684Java Bean\u3002\u91cd\u8981\u7684\u662f\u8981\u6ce8\u610f @XmlRootElement \u6ce8\u89e3\uff0c\u5c06\u8be5\u7c7b\u6620\u5c04\u4e3a\u4e00\u4e2aXML\u5143\u7d20\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.Olivia.model;\r\n\r\nimport javax.xml.bind.annotation.XmlRootElement;\r\n\r\n@XmlRootElement(name = \"empRequest\")\r\npublic class EmpRequest {\r\n\tprivate int id;\r\n\tprivate String name;\r\n\r\n\tpublic int getId() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\tpublic void setId(int id) {\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>EmpResponse.java\uff1a\u7528\u4e8e\u54cd\u5e94\u5bf9\u8c61\u7684Java bean\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.Olivia.model;\r\n\r\nimport javax.xml.bind.annotation.XmlRootElement;\r\n\r\n@XmlRootElement(name = \"empResponse\")\r\npublic class EmpResponse {\r\n\tprivate int id;\r\n\tprivate String name;\r\n\r\n\tpublic int getId() {\r\n\t\treturn id;\r\n\t}\r\n\r\n\tpublic void setId(int id) {\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n}\r\n<\/code><\/pre>\n<p>4. ErrorResponse.java\uff1a\u5728\u5f02\u5e38\u60c5\u51b5\u4e0b\u4f5c\u4e3a\u54cd\u5e94\u53d1\u9001\u7684Java Bean\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.Olivia.model;\r\n\r\nimport javax.xml.bind.annotation.XmlRootElement;\r\n\r\n@XmlRootElement(name = \"errorResponse\")\r\npublic class ErrorResponse {\r\n\r\n\tprivate String errorCode;\r\n\tprivate int errorId;\r\n\r\n\tpublic String getErrorCode() {\r\n\t\treturn errorCode;\r\n\t}\r\n\r\n\tpublic void setErrorCode(String errorCode) {\r\n\t\tthis.errorCode = errorCode;\r\n\t}\r\n\r\n\tpublic int getErrorId() {\r\n\t\treturn errorId;\r\n\t}\r\n\r\n\tpublic void setErrorId(int errorId) {\r\n\t\tthis.errorId = errorId;\r\n\t}\r\n\r\n}\r\n<\/code><\/pre>\n<p>5. EmpNotFoundException.java\uff1a\u5728\u7f51\u7edc\u670d\u52a1\u4e2d\u629b\u51fa\u7684\u666e\u901a\u5f02\u5e38\u7c7b\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.Olivia.exception;\r\n\r\npublic class EmpNotFoundException extends Exception {\r\n\r\n\tprivate static final long serialVersionUID = 4351720088030656859L;\r\n\tprivate int errorId;\r\n\r\n\tpublic int getErrorId() {\r\n\t\treturn errorId;\r\n\t}\r\n\r\n\tpublic EmpNotFoundException(String msg, int errorId) {\r\n\t\tsuper(msg);\r\n\t\tthis.errorId = errorId;\r\n\t}\r\n\r\n\tpublic EmpNotFoundException(String msg, Throwable cause) {\r\n\t\tsuper(msg, cause);\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>6. web.xml\uff1aWeb\u670d\u52a1\u7684\u90e8\u7f72\u63cf\u8ff0\u7b26\u3002\u56e0\u6b64\uff0c\u4efb\u4f55\u4ee5URI\u4e3ahttps:\/\/:\/My-Jersey-Project\/rest\/*\u7684\u8bf7\u6c42\u5c06\u7531Jersey ServletContainer Servlet\u8fdb\u884c\u5904\u7406\u3002\u4f20\u9012\u7ed9&#8221;com.sun.jersey.config.property.packages&#8221;\u53c2\u6570\u7684init-param\u503c\u5b9a\u4e49\u4e86Jersey\u5c06\u5bfb\u627e\u7684Web\u670d\u52a1\u7c7b\u6240\u5728\u7684\u5305\u3002\u6b64\u5c5e\u6027\u5fc5\u987b\u6307\u5411\u60a8\u7684\u8d44\u6e90\u7c7b\u3002\u5b83\u8fd8\u4f1a\u5728\u5b50\u5305\u4e2d\u67e5\u627e\u8d44\u6e90\u7c7b\u3002<\/p>\n<pre class=\"post-pre\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;web-app xmlns:xsi=\"https:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txmlns=\"https:\/\/java.sun.com\/xml\/ns\/javaee\"\r\n\txsi:schemaLocation=\"https:\/\/java.sun.com\/xml\/ns\/javaee https:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_3_0.xsd\"\r\n\tid=\"WebApp_ID\" version=\"3.0\"&gt;\r\n\t&lt;display-name&gt;My Jersey Project&lt;\/display-name&gt;\r\n\r\n\t&lt;!-- Jersey Servlet configurations --&gt;\r\n\t&lt;servlet&gt;\r\n\t\t&lt;servlet-name&gt;Jersey REST Service&lt;\/servlet-name&gt;\r\n\t\t&lt;servlet-class&gt;com.sun.jersey.spi.container.servlet.ServletContainer&lt;\/servlet-class&gt;\r\n\t\t&lt;init-param&gt;\r\n\t\t\t&lt;param-name&gt;com.sun.jersey.config.property.packages&lt;\/param-name&gt;\r\n\t\t\t&lt;param-value&gt;com.Olivia&lt;\/param-value&gt;\r\n\t\t&lt;\/init-param&gt;\r\n\t\t&lt;load-on-startup&gt;1&lt;\/load-on-startup&gt;\r\n\t&lt;\/servlet&gt;\r\n\t&lt;servlet-mapping&gt;\r\n\t\t&lt;servlet-name&gt;Jersey REST Service&lt;\/servlet-name&gt;\r\n\t\t&lt;url-pattern&gt;\/rest\/*&lt;\/url-pattern&gt;\r\n\t&lt;\/servlet-mapping&gt;\r\n\t&lt;!-- Jersey Servlet configurations --&gt;\r\n\r\n&lt;\/web-app&gt;\r\n<\/code><\/pre>\n<p>7. EmpRouter.java\uff1a\u5904\u7406\u4e0d\u540c\u8bf7\u6c42\u7c7b\u578b\u7684\u8d44\u6e90\u7c7b\u3002<\/p>\n<ul class=\"post-ul\">\n<li>@Path(&#8220;\/emp&#8221;) &#8211; \u6240\u6709URI\u4e3ahttps:\/\/:\/My-Jersey-Project\/rest\/emp\/\u7684\u8bf7\u6c42\u5c06\u7531\u8fd9\u4e2a\u8d44\u6e90\u7c7b\u5904\u7406\u3002<\/li>\n<li>@Path(&#8220;\/getEmp&#8221;) &#8211; \u6240\u6709URI\u4e3ahttps:\/\/:\/My-Jersey-Project\/rest\/emp\/getEmp\u7684\u8bf7\u6c42\u5c06\u7531\u8fd9\u4e2a\u65b9\u6cd5\u5904\u7406\u3002<\/li>\n<li>@POST &#8211; \u8fd9\u4e2a\u6ce8\u89e3\u5b9a\u4e49\u4e86\u4f7f\u7528\u7684HTTP\u65b9\u6cd5\u5e94\u8be5\u662fPOST\u3002\u5176\u4ed6\u53ef\u80fd\u7684\u503c\u5305\u62ec@GET\u3001@PUT\u3001@DELETE<\/li>\n<li>@Consumes(MediaType.APPLICATION_XML) &#8211; \u8be5\u65b9\u6cd5\u63a5\u53d7XML\u5143\u7d20<\/li>\n<li>@Produces(MediaType.APPLICATION_XML) &#8211; \u8be5\u65b9\u6cd5\u8fd4\u56deXML\u5143\u7d20<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code>package com.Olivia.router;\r\n\r\nimport com.Olivia.exception.EmpNotFoundException;\r\nimport com.Olivia.model.*;\r\n\r\nimport javax.ws.rs.Consumes;\r\nimport javax.ws.rs.POST;\r\nimport javax.ws.rs.Path;\r\nimport javax.ws.rs.Produces;\r\nimport javax.ws.rs.core.MediaType;\r\nimport javax.ws.rs.core.Response;\r\nimport javax.xml.bind.JAXBElement;\r\n\r\n@Path(\"\/emp\")\r\npublic class EmpRouter {\r\n\r\n\t@POST\r\n\t@Path(\"\/getEmp\")\r\n\t@Consumes(MediaType.APPLICATION_XML)\r\n\t@Produces(MediaType.APPLICATION_XML)\r\n\tpublic Response getEmp(JAXBElement&lt;EmpRequest&gt; empRequest)\r\n\t\t\tthrows EmpNotFoundException {\r\n\t\tEmpResponse empResponse = new EmpResponse();\r\n\t\tif (empRequest.getValue().getId() == 1) {\r\n\t\t\tempResponse.setId(empRequest.getValue().getId());\r\n\t\t\tempResponse.setName(empRequest.getValue().getName());\r\n\t\t} else {\r\n\t\t\tthrow new EmpNotFoundException(\"Wrong ID\", empRequest.getValue()\r\n\t\t\t\t\t.getId());\r\n\t\t}\r\n\t\treturn Response.ok(empResponse).build();\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>8. EmpNotFoundExceptionMapper.java\uff1a\u5f02\u5e38\u6620\u5c04\u5668\u7c7b\uff0c\u5c06EmpNotFoundException\u6620\u5c04\u5230\u54cd\u5e94\u5bf9\u8c61\u3002\u8be5\u7c7b\u5e94\u8be5\u5e26\u6709@Provider\u6ce8\u89e3\u3002\u8fd9\u4e2a\u7c7b\u5e94\u8be5\u653e\u5728web.xml\u4e2d\u4e3a\u8d44\u6e90\u7c7b\u63d0\u4f9b\u7684\u5305\u4e2d\u3002toResponse()\u65b9\u6cd5\u7684\u5b9e\u73b0\u751f\u6210ErrorResponse\u5bf9\u8c61\uff0c\u5e76\u5c06\u5176\u8bbe\u7f6e\u4e3aResponse\u5bf9\u8c61\u7684\u5b9e\u4f53\uff0c\u72b6\u6001\u4e3aINTERNAL_SERVER_ERROR\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.Olivia.exceptionmapper;\r\n\r\nimport javax.ws.rs.core.MediaType;\r\nimport javax.ws.rs.core.Response;\r\nimport javax.ws.rs.ext.ExceptionMapper;\r\nimport javax.ws.rs.ext.Provider;\r\n\r\nimport com.Olivia.exception.EmpNotFoundException;\r\nimport com.Olivia.model.ErrorResponse;\r\n\r\n@Provider\r\npublic class EmpNotFoundExceptionMapper implements\r\n\t\tExceptionMapper&lt;EmpNotFoundException&gt; {\r\n\r\n\tpublic EmpNotFoundExceptionMapper() {\r\n\t}\r\n\t\r\n\tpublic Response toResponse(\r\n\t\t\tEmpNotFoundException empNotFoundException) {\r\n\t\tErrorResponse errorResponse = new ErrorResponse();\r\n\t\terrorResponse.setErrorId(empNotFoundException.getErrorId());\r\n\t\terrorResponse.setErrorCode(empNotFoundException.getMessage());\r\n\t\treturn Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(\r\n\t\t\t\terrorResponse).type(\r\n\t\t\t\tMediaType.APPLICATION_XML).build();\r\n\r\n\t}\r\n\r\n}\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u7684\u7f51\u7edc\u670d\u52a1\u5df2\u7ecf\u51c6\u5907\u5c31\u7eea\uff0c\u53ea\u9700\u6784\u5efa\u5b83\u4ee5\u521b\u5efaWAR\u6587\u4ef6\u5e76\u90e8\u7f72\u5230\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u3002<\/p>\n<h2>\u6cfd\u897f\u5ba2\u6237\u7aef\u793a\u4f8b<\/h2>\n<p>\u8fd9\u662f\u6587\u7ae0\u300a\u6cfd\u897f\uff08Jersey\uff09Java\u6559\u7a0b\u300b\u7684\u7b2c2\u90e8\u5206\uff08\u51712\u90e8\u5206\uff09\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528Jersey\u5ba2\u6237\u7aef\u6765\u4ee5\u7f16\u7a0b\u65b9\u5f0f\u8c03\u7528\u6211\u4eec\u7684web\u670d\u52a1\u5e76\u83b7\u53d6\u54cd\u5e94\u3002EmpClient.java\uff1a\u8fd9\u662f\u4e00\u4e2a\u793a\u4f8bJava\u7a0b\u5e8f\uff0c\u901a\u8fc7\u5b83\u6211\u4eec\u8c03\u7528\u6211\u4eec\u7684web\u670d\u52a1\u3002\u6211\u4eec\u4f7f\u7528Jersey Client API\u6765\u8c03\u7528\u670d\u52a1\uff0c\u5e76\u6839\u636e\u54cd\u5e94\u72b6\u6001\u5c06\u54cd\u5e94\u5b9e\u4f53\u89e3\u6790\u4e3aEmpResponse\u6216ErrorResponse\u7c7b\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.Olivia.client;\r\n\r\nimport javax.ws.rs.core.MediaType;\r\n\r\nimport com.Olivia.model.EmpRequest;\r\nimport com.Olivia.model.EmpResponse;\r\nimport com.Olivia.model.ErrorResponse;\r\nimport com.sun.jersey.api.client.Client;\r\nimport com.sun.jersey.api.client.ClientResponse;\r\nimport com.sun.jersey.api.client.WebResource;\r\n\r\npublic class EmpClient {\r\n\r\n\t\/**\r\n\t * @param args\r\n\t *\/\r\n\tpublic static void main(String[] args) {\r\n\t\tString uri = \"https:\/\/localhost:8080\/My-Jersey-Project\/rest\/emp\/getEmp\";\r\n\t\tEmpRequest request = new EmpRequest();\r\n\t\t\/\/ set id as 1 for OK response\r\n\t\trequest.setId(2);\r\n\t\trequest.setName(\"PK\");\r\n\t\ttry {\r\n\t\t\tClient client = Client.create();\r\n\t\t\tWebResource r = client.resource(uri);\r\n\t\t\tClientResponse response = r.type(MediaType.APPLICATION_XML).post(ClientResponse.class, request);\r\n\t\t\tSystem.out.println(response.getStatus());\r\n\t\t\tif (response.getStatus() == 200) {\r\n\t\t\t\tEmpResponse empResponse = response.getEntity(EmpResponse.class);\r\n\t\t\t\tSystem.out.println(empResponse.getId() + \"::\" + empResponse.getName());\r\n\t\t\t} else {\r\n\t\t\t\tErrorResponse exc = response.getEntity(ErrorResponse.class);\r\n\t\t\t\tSystem.out.println(exc.getErrorCode());\r\n\t\t\t\tSystem.out.println(exc.getErrorId());\r\n\t\t\t}\r\n\t\t} catch (Exception e) {\r\n\t\t\tSystem.out.println(e.getMessage());\r\n\t\t}\r\n\t}\r\n\r\n}\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564842aa4b2f92e6c72fa8a\/33-1.png\" alt=\"Jersey\u5ba2\u6237\u7aef\u5f02\u5e38\u793a\u4f8b\" \/><\/div>\n<h2>\u603b\u7ed3<\/h2>\n<p>\u5728\u8fd9\u7bc7\u6587\u7ae0\u4e2d\uff0c\u6211\u4eec\u5b66\u4e60\u4e86\u5982\u4f55\u4f7f\u7528Jersey API\u521b\u5efaREST Web\u670d\u52a1\u3002\u6211\u4eec\u8fd8\u7814\u7a76\u4e86\u5982\u4f55\u4f7f\u7528Jersey\u5ba2\u6237\u7aef\u901a\u8fc7Java\u7a0b\u5e8f\u8c03\u7528\u6211\u4eec\u7684REST API\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u4ece\u6211\u4eec\u7684GitHub\u4ed3\u5e93\u4e2d\u68c0\u51fa\u5b8c\u6574\u7684\u9879\u76ee\u4ee3\u7801\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u662f\u6587\u7ae0\u300a\u6cfd\u897f\uff08Jersey\uff09Java\u6559\u7a0b\u300b\u7684\u7b2c1\u90e8\u5206\uff08\u51712\u90e8\u5206\uff09\u3002 \u5185\u5bb9\u7247\u6bb5: \u6b22\u8fce\u6765\u5230Java Jerse [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[232,1176,1173,1174,1175],"class_list":["post-353","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-java","tag-jax-rs","tag-jersey","tag-restful-api","tag-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u672cJava Jersey\u6846\u67b6\u6559\u7a0b\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Jersey\u5f00\u53d1RESTful Web\u670d\u52a1\u3002\u4ece\u73af\u5883\u914d\u7f6e\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5168\u9762\u8bb2\u89e3Jersey\u7684\u6838\u5fc3\u6982\u5ff5\u3001API\u4f7f\u7528\u65b9\u6cd5\u548c\u6700\u4f73\u5b9e\u8df5\uff0c\u5e2e\u52a9Java\u5f00\u53d1\u8005\u5feb\u901f\u638c\u63e1RESTful\u670d\u52a1\u5f00\u53d1\u6280\u80fd\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6cfd\u897f\uff08jersey\uff09java\u6559\u7a0b\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1\" \/>\n<meta property=\"og:description\" content=\"\u672cJava Jersey\u6846\u67b6\u6559\u7a0b\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Jersey\u5f00\u53d1RESTful Web\u670d\u52a1\u3002\u4ece\u73af\u5883\u914d\u7f6e\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5168\u9762\u8bb2\u89e3Jersey\u7684\u6838\u5fc3\u6982\u5ff5\u3001API\u4f7f\u7528\u65b9\u6cd5\u548c\u6700\u4f73\u5b9e\u8df5\uff0c\u5e2e\u52a9Java\u5f00\u53d1\u8005\u5feb\u901f\u638c\u63e1RESTful\u670d\u52a1\u5f00\u53d1\u6280\u80fd\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6cfd\u897f\uff08jersey\uff09java\u6559\u7a0b\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-13T18:09:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-01T17:19:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564842aa4b2f92e6c72fa8a\/10-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/\",\"name\":\"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-03-13T18:09:15+00:00\",\"dateModified\":\"2025-08-01T17:19:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"description\":\"\u672cJava Jersey\u6846\u67b6\u6559\u7a0b\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Jersey\u5f00\u53d1RESTful Web\u670d\u52a1\u3002\u4ece\u73af\u5883\u914d\u7f6e\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5168\u9762\u8bb2\u89e3Jersey\u7684\u6838\u5fc3\u6982\u5ff5\u3001API\u4f7f\u7528\u65b9\u6cd5\u548c\u6700\u4f73\u5b9e\u8df5\uff0c\u5e2e\u52a9Java\u5f00\u53d1\u8005\u5feb\u901f\u638c\u63e1RESTful\u670d\u52a1\u5f00\u53d1\u6280\u80fd\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1 - Blog - Silicon Cloud","description":"\u672cJava Jersey\u6846\u67b6\u6559\u7a0b\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Jersey\u5f00\u53d1RESTful Web\u670d\u52a1\u3002\u4ece\u73af\u5883\u914d\u7f6e\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5168\u9762\u8bb2\u89e3Jersey\u7684\u6838\u5fc3\u6982\u5ff5\u3001API\u4f7f\u7528\u65b9\u6cd5\u548c\u6700\u4f73\u5b9e\u8df5\uff0c\u5e2e\u52a9Java\u5f00\u53d1\u8005\u5feb\u901f\u638c\u63e1RESTful\u670d\u52a1\u5f00\u53d1\u6280\u80fd\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u6cfd\u897f\uff08jersey\uff09java\u6559\u7a0b\/","og_locale":"zh_CN","og_type":"article","og_title":"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1","og_description":"\u672cJava Jersey\u6846\u67b6\u6559\u7a0b\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Jersey\u5f00\u53d1RESTful Web\u670d\u52a1\u3002\u4ece\u73af\u5883\u914d\u7f6e\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5168\u9762\u8bb2\u89e3Jersey\u7684\u6838\u5fc3\u6982\u5ff5\u3001API\u4f7f\u7528\u65b9\u6cd5\u548c\u6700\u4f73\u5b9e\u8df5\uff0c\u5e2e\u52a9Java\u5f00\u53d1\u8005\u5feb\u901f\u638c\u63e1RESTful\u670d\u52a1\u5f00\u53d1\u6280\u80fd\u3002","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6cfd\u897f\uff08jersey\uff09java\u6559\u7a0b\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-03-13T18:09:15+00:00","article_modified_time":"2025-08-01T17:19:54+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564842aa4b2f92e6c72fa8a\/10-0.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/","name":"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-03-13T18:09:15+00:00","dateModified":"2025-08-01T17:19:54+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"description":"\u672cJava Jersey\u6846\u67b6\u6559\u7a0b\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Jersey\u5f00\u53d1RESTful Web\u670d\u52a1\u3002\u4ece\u73af\u5883\u914d\u7f6e\u5230\u5b9e\u9645\u5e94\u7528\uff0c\u5168\u9762\u8bb2\u89e3Jersey\u7684\u6838\u5fc3\u6982\u5ff5\u3001API\u4f7f\u7528\u65b9\u6cd5\u548c\u6700\u4f73\u5b9e\u8df5\uff0c\u5e2e\u52a9Java\u5f00\u53d1\u8005\u5feb\u901f\u638c\u63e1RESTful\u670d\u52a1\u5f00\u53d1\u6280\u80fd\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Java Jersey\u6846\u67b6\u5165\u95e8\u6559\u7a0b\uff1a\u8f7b\u677e\u6784\u5efaRESTful Web\u670d\u52a1"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%b3%bd%e8%a5%bf%ef%bc%88jersey%ef%bc%89java%e6%95%99%e7%a8%8b\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":4,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"predecessor-version":[{"id":109884,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/353\/revisions\/109884"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}