Eclipse Dynamic Web Project + Jersey JARs 放入 WEB-INF/lib。
jersey-server、jersey-core、jersey-servlet、asm、jackson(JSON)等。
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.demo.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() { return "hello jersey, first demo"; }
@GET
@Path("/{param}")
@Produces("text/plain;charset=UTF-8")
public String sayHelloToUTF8(@PathParam("param") String username) {
return "Hello " + username;
}
@GET
@Path("/getuser")
@Produces(MediaType.APPLICATION_JSON)
public User getUserJson() {
User user = new User();
user.setAge(27);
user.setUserid("005");
user.setUsername("Fmand");
return user; // 自動轉 JSON
}
}
@XmlRootElement // JAXB 註解,支援 XML/JSON 雙格式
public class User {
private int age;
private String userid;
private String username;
// getter/setter
}
訪問 /rest/hello/getuser 返回:
{
"age": 27,
"userid": "005",
"username": "Fmand"
}
| 註解 | 作用 |
|---|---|
@Path | 資源路徑 |
@GET/@POST/@PUT/@DELETE | HTTP 方法 |
@Produces | 響應媒體類型 |
@Consumes | 請求媒體類型 |
@PathParam | 路徑參數綁定 |
@QueryParam | 查詢參數綁定 |
@XmlRootElement | JAXB 根元素,啟用自動序列化 |