0

チュートリアルの簡単な手順に従っていますが、今までエラーが表示される理由がわかりません。

シンプルな JAX-RS アプリケーションを使用してシンプルな JSON を返そうとしています。以下は私のコードとweb.xml設定です:

package ws;

import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;

@Path("/employee/{empno}")
public class EmployeeResource {

    @Context
    private UriInfo context;

    public EmployeeResource() {
    }

    @GET
    @Produces("application/json")
    public String getJson( @PathParam("empno") int empno) {
      switch(empno) {
          case 1 :
              return "{'name':'George Koch', 'age':58}";
          case 2:
              return "{'name':'Peter Norton', 'age':50}";
          default:
              return "{'name':'unknown', 'age':-1}";
      }
    }

    @PUT
    @Consumes("application/json")
    public void putJson(String content) {
    }
}

web.xml以下のとおりであります:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
           http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <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>ws</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
      <servlet-name>Jersey REST Service</servlet-name>
      <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>

    <session-config>
      <session-timeout>30</session-timeout>
    </session-config>
  </web-app>

そして、私はアドレスを使用します:

localhost:8084/restdemo/resources/employee/empno=1

しかし、404エラーが表示されます。

4

1 に答える 1

4

電話

localhost:8084/restdemo/resources/employee/1

A@PathParamは ではありません@QueryParam。その名前は、 のような名前ではなく、クエリ パス内の位置から派生​​しますempno=1。あなた@Path

@Path("/employee/{empno}")

の位置にある URL パスの要素は、{empno}自動的に に割り当てられます@PathParam empno

編集:

次のような URL を呼び出したい場合

localhost:8084/restdemo/resources/employee?empno=1

使用する必要があります

@Path("/employee")
public String getJson(@QueryParam("empno") int empno) 

?左側の URL パスと右側のクエリの間の境界線であることに注意してください。

ヒント:

JSON が無効です。"一重引用符の代わりに二重引用符を使用する必要があり'ます。

return "{\"name\":\"George Koch\", \"age\":58}";
于 2012-10-22T09:57:17.763 に答える