0

这是我的休息代码

@Path("Users")
public class ItemsResource extends stu{

  @Context
  private UriInfo context;

  /**
   * Creates a new instance of ItemsResource
   */
  public ItemsResource() {
  }

  /**
   * Retrieves representation of an instance of service.ItemsResource
   * @return an instance of java.lang.String
   */
  @GET
  @Produces("text/plain")
  public String getText() {
      //TODO return proper representation object
      throw new UnsupportedOperationException();
  }

  /**
   * POST method for creating an instance of ItemResource
   * @param content representation for the new resource
   * @return an HTTP response with content of the created resource
   */
   @POST
   @Consumes("text/plain")
   @Produces("text/plain")
   public Response postText(@PathParam("id") int id,@PathParam("Password") String Password,
                        @PathParam("Username") String Username) {
    //TODO

       super.createText(id,Password,Username);
       return Response.created(context.getAbsolutePath()).build();
      // return "success";
   }
  /**
   * Sub-resource locator method for {id}
   */   
}

这是 stu.java

class stu {

     public String createText(int id,String Username,String Password) {
        //TODO
       try 
       {
          Class.forName("com.mysql.jdbc.Driver");
          Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/users","root","789456");

          String query=  "Insert into users (id,username,password) values('"+id+"','"+Username+"','"+Password+"')";
          PreparedStatement stm = con.prepareStatement(query);         

          stm.executeUpdate(query);
        } catch(ClassNotFoundException e){
           System.err.println ("Sql Exception"+e);
        } catch(SQLException e){
           System.err.println ("Sql Exception"+e);
        }

    return "success";
  } 
}

现在,当我测试休息并发布数据时,它已成功发布,但它没有在数据库中更新,请告诉我我的错误

REST 响应如下

Request: POST localhost:8090/WebApplication16/resources/Users?
timestamp=1346152551629

Status: 201 (Created)

Time-Stamp: Tue, 28 Aug 2012 11:15:51 GMT

Sent:
1,hey,hdhb

Received:


-----------------------------------------------------------------------

Request: localhost:8090/WebApplication16/resources/application.wadl


Status: 200 (OK)

Time-Stamp: Tue, 28 Aug 2012 11:15:41 GMT

Received:

<?xml version="1.0" encoding="UTF-8"?>
   <application xmlns="research.sun.com/wadl/2006/10">
       <doc xmlns:jersey="jersey.dev.java.net/" jersey:generatedBy="Jersey: 1.5 01/14/2011 12:36 PM"/>
       <resources base="localhost:8090/WebApplication16/resources/">
           <resource path="Users">
               <param xmlns:xs="www.w3.org/2001/XMLSchema" name="id" style="template" type="xs:int"/>
               <param xmlns:xs="www.w3.org/2001/XMLSchema" name="Username" style="template" type="xs:string"/>
               <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Password" style="template" type="xs:string"/>
               <method id="getText" name="GET">
                   <response>
                       <representation mediaType="text/plain"/>
                   </response>
               </method>
               <method id="postText" name="POST">
                   <response>
                       <representation mediaType="text/plain"/>
                   </response>
               </method>
           </resource>
       </resources>
   </application> 

它能够联系我的数据库,并在表中创建一个新行,但具有 null、null、null 值。请帮我解决这个问题。

4

2 回答 2

1

我认为数据没有“成功发布”。@PathParam当你有参数时,你可以使用注释@Path,比如@Path("Users/{id}").

你是如何发送参数的?如果您使用浏览器和 POST 发送它们<form>,请尝试使用@FormParam注释。有关更多信息,请参阅此问题

于 2012-08-28T12:39:55.027 回答
0

使用准备好的声明,您不应该立即将值放入。尝试以下

String query=  "insert into users (id,username,password) values(?,?,?)";
PreparedStatement stm = con.prepareStatement(query); 
stm.setInt(1, id);
stm.setString(2, Username);
stm.setString(3, Password);
stm.executeUpdate();

API页面上有一个例子

另外,请注意您的论点。您的方法定义有createText(int id,String Username,String Password),但您传递的值与密码和用户名混合在一起。

于 2012-08-28T12:32:39.470 回答