2015-06-17 159 views
6

我正在使用Java使用數據庫的RESTful Webservice。通過在Netbeans中使用來自數據庫的RESTful Webservice選項,它會生成一些類,以便我們可以公開像count,{id}​​,{from}/{id}這樣的服務。Java RESTful Webservice使用Netbeans IDE的CRUD Opreation

我們如何編寫程序插入,使用Java Netbeans中刪除並更新。

這是我的工作環境。 enter image description here

+1

有這個這麼多的教程,如果你谷歌「REST CRUD netbeans「示例http://www.madebyjohann.com/index.php/college/learn-how/57-crud-in-a-restful-api-with-netbeans –

+1

@ring持票人我訪問了許多他們設計的網站示例Helloword程序使用RESTful Webservice,或者他們展示了基本代碼,即由IDE生成但不是CRUD操作。 –

+1

@ring持票人我遵循此鏈接http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/RESTfulWebServices/RESTfulWebservices.htm#t2其中描述示例數據庫連接並自動從數據庫選項從RESTful Webservice生成代碼選項來自Netbeans –

回答

5

插入代碼類似如下:

@POST 
@Path("insertion") 
@Produces(MediaType.TEXT_HTML) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public String register(@FormParam("passhash") String passhash, @FormParam("email") String email,@FormParam("$pswdhash") String pwd, @FormParam("phno") String phno) { 
    try { 
     Class.forName("org.apache.derby.jdbc.ClientDriver"); 
     Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/test", "app", "app"); 
     PreparedStatement pst = con.prepareStatement("insert into MMX_REGISTRATION(name,email,pswd,phno) values(?,?,?,?)"); 
     pst.setString(1, passhash); 
     pst.setString(2, email); 
     pst.setString(3, pwd); 
     pst.setString(4, phno); 
     int result = pst.executeUpdate(); 
     System.out.println(result); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return "success"; 
    //return "listform.html"; 
} 

檢索數據如下:

@Context private HttpServletRequest request; 
@GET 
@Path("session") 
@Produces(MediaType.TEXT_HTML) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public String session(@QueryParam("lname") String name1) { 
    String response2 = null; 
    //String name11 = "praveen"; 

    //String a[] = null; 

    try { 

     Class.forName("org.apache.derby.jdbc.ClientDriver"); 
     Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/test", "app", "app"); 
     //PreparedStatement pst = con.prepareStatement("insert into restdb_insertion(id,company) values(?,?)"); 
     //String str1="select * from restdb_insertion where registration=?"; 
     PreparedStatement pst = con.prepareStatement("select * from MMX_REGISTRATION where name='"+name1+"'"); 
     System.out.println("select * from MMX_REGISTRATION where name='"+name1+"'"); 

     ResultSet rs = pst.executeQuery(); 
     ResultSetMetaData rsmd = rs.getMetaData(); 
     int cols = rsmd.getColumnCount(); 


     while (rs.next()) { 
      if(!"null".equals(rs.getString(1))){ 
       request.getSession(true); 
       HttpSession session = request.getSession();  
       session.setAttribute("name","value"); 
       session.setAttribute("UserName", rs.getString(2)); 
       String username = (String)session.getAttribute("UserName"); 
       System.out.println(username); 
       // System.out.println(name); 
       //request.getSession(false); 
       //request.getSession().invalidate(); 
       //String user = (String)session.getAttribute("UserName"); 
       //System.out.println(user); 
       return "success"+" "+username; 
      } 
     } 

     //response = name1; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return "fail"; 

    //"<rss version='2.0'><channel><id>" + id + "</id><cmp>" +response.toArray()[0] + "</cmp></channel></rss>" 
} 
+0

這個問題是有用 –

+0

儘量保持DB互動在不同的層面上......這是非常緊密耦合的 –

+0

** AbstractFacade **確實具有所有這些方法。你讓自己變得複雜了,這不是一個好習慣。如果你有多少個實體,你會怎麼做? –

1

獨立工作分爲兩層DAO和服務

  • 內部DAO:把所有的數據庫交互
  • 裏面服務:僅保留你的web服務

注入你的DAO實現的依賴關係到你的Web服務層和調用你的CRUD操作(這是EJB概念,你也可以嘗試春季)

1

你應該定義你所有的CRUD操作一個安靜的班級。在每個寧靜類的方法中,你應該調用一個服務接口方法,該方法有另一個類,它的實現就是ServiceImpl。您的服務的每種方法Impl都應該與Dao層交互以進行CRUD操作。 你應該避免一次又一次地加載驅動程序類爲每個CRUD操作,你應該在這樣一個單獨的方法/靜態塊定義它: -

static Connection con; 
static{ 
try { 
    Class.forName("org.apache.derby.jdbc.ClientDriver"); 
    con = DriverManager.getConnection("jdbc:derby://localhost:1527/test", "app", "app"); 
} catch (ClassNotFoundException | SQLException e) { 
    e.printStackTrace(); 
} 
} 
相關問題