首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Jersey 構建 REST 服務返回 JSON:從 Dynamic Web Project 到 JAX-RS 實戰

     編輯:Java 綜合教學

專案結構

Eclipse Dynamic Web Project + Jersey JARs 放入 WEB-INF/lib。

1. Jersey 核心依賴

Jersey JARs jersey-server、jersey-core、jersey-servlet、asm、jackson(JSON)等。

2. web.xml 配置

<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>

3. Resource 類

@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
    }
}

4. POJO 實體

@XmlRootElement  // JAXB 註解,支援 XML/JSON 雙格式
public class User {
    private int age;
    private String userid;
    private String username;
    // getter/setter
}

5. 測試驗證

JSON響應 訪問 /rest/hello/getuser 返回:

{
  "age": 27,
  "userid": "005",
  "username": "Fmand"
}

關鍵註解對照

註解作用
@Path資源路徑
@GET/@POST/@PUT/@DELETEHTTP 方法
@Produces響應媒體類型
@Consumes請求媒體類型
@PathParam路徑參數綁定
@QueryParam查詢參數綁定
@XmlRootElementJAXB 根元素,啟用自動序列化

源碼下載

完整項目源碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved