0

次のコードを見つけてください。

Service:DataResource.java

    package com.mypack.pack2;


    import java.io.IOException;

    import javax.servlet.http.HttpServletResponse;
    import javax.ws.rs.Consumes;
    import javax.ws.rs.FormParam;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Context;
    import javax.ws.rs.core.MediaType;
    import com.mypack.pack1.DataClass;

    @Path("data")
    public class DataResource {
        //Just retrieves the data members of the class
         //i.e., 10 Ram
         // Able to retrieve successfully.
        @GET
        @Produces("text/plain")
        public String display()
        {
            DataClass obj1=new DataClass();
            return obj1.getId()+obj1.getName(); 
        }

        @POST
          @Path("/{id}/{name}") 
          @Produces("text/plain")
          @Consumes("text/plain")

        public void newData(@PathParam("id") int no,
                            @PathParam("name") String name) {
            DataClass obj= new DataClass();
            obj.setData(name,no);
            System.out.println("Success");
            System.out.println("Data after changes"+obj.getId()+obj.getName());

            }
            //TodoDao.instance.getModel().put(id, todo);
         }

DataClass.java

    package com.mypack.pack1;

    public class DataClass {

        private String ename="Ram";
        private int eno=10;

        public void setData(String name,int no)
        {
            this.ename=name;
            this.eno=no;
        }
        public int getId()
        {
            return eno; 
        }

        public String getName()
        {
            return ename;
        }

    }

Web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      id="WebApp_ID" version="2.5">
      <display-name>de.vogella.jersey.jaxb</display-name>
      <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.mypack.pack2</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>
    </web-app> 

クラスメンバーenameenoの値を変更できませんDataClass。なぜ変わらないのか教えてもらえますか?コードを間違った方法で試しているからですか?

4

1 に答える 1

2

POST URI (localhost:8080/JerseyProject/rest/data/11/John) をどのように呼び出していますか? ブラウザーから呼び出していないことを確認してください。この方法では、実装されていない /data/{id}/{name} に対して動詞 GET を呼び出すことになります。これにより、ステータス 405 が表示される理由が説明されます。

通常、CREATE 操作は、コレクション URI で HTTP VERB POST を使用して使用され、そのパラメーターはパス上ではなくペイロード内にあります。この場合、/data/{id}/{name} の代わりに /data で POST を使用します。

于 2012-11-23T11:21:24.350 に答える