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)?确保你没有从浏览器调用它,因为这样你会调用动词 GET o 没有实现的 /data/{id}/{name}。这可以解释为什么你会得到状态 405。

通常 CREATE 操作是在集合 URI 上使用 HTTP VERB POST 使用的,其参数在有效负载中而不是在路径上。在这种情况下,在 /data 而不是 /data/{id}/{name} 上使用 POST。

于 2012-11-23T11:21:24.350 回答