如何使用Java在eclipse中使用webservices(JAX - RS)从数据库中检索数据 [英] How to retrieve data from database using webservices (JAX - RS) in eclipse using Java

查看:139
本文介绍了如何使用Java在eclipse中使用webservices(JAX - RS)从数据库中检索数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在数据库中插入了一个记录,但是我不知道如何检索它。
我的代码是:
Account.java:

  package com。取; 

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;

public class Account implements Serializable
{
@Id
private long id;

@Column(name =NAME)
private String name;

public Account()
{

}

public Account(int id,String name)
{
this.id = id;
this.name = name;
}

public long getId()
{
return id;
}

public void setId(long id)
{
this.id = id;
}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}
}

MyAccount.java:

  package com.fetch; 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;

@WebService()
@Entity
@Table(name =CUSTOMER)
@Path(/ user)
@NamedQuery name =loginquery,query =select ID,NAME from CUSTOMER)
public class MyAccount
{
private Account ac;
public MyAccount()
{
// TODO自动生成的构造函数存根
ac = new Account();
}

@POST
@Path(/ fetch)
@WebMethod(operationName =insert)
public String insert(@FormParam (name)String name)
{
try
{
Class.forName(com.mysql.jdbc.Driver);
连接con = DriverManager.getConnection(jdbc:mysql:// localhost:3306 / studentinfo,root,root);

String query =insert into CUSTOMER+(NAME)VALUES+(?);
PreparedStatement st = con.prepareStatement(query);
st.setString(1,name);
st.executeUpdate();
}
catch(异常e)
{
System.out.println(e.getMessage());
}
return记录插入成功;
}
public Account getAc()
{
return ac;
}
public void setAc(Account ac)
{
this.ac = ac;
}
}

insert.html:

 <!DOCTYPE html PUBLIC -  // W3C // DTD HTML 4.01 Transitional // ENhttp:// www.w3.org/TR/html4/loose.dtd\"> 
< html>
< head>
< meta http-equiv =Content-Typecontent =text / html; charset = UTF-8>
< title>插入< / title>
< / head>
< body>
< form action =rest / user / fetchmethod =POST>
< p>
名称:< input id =namename =name/>
< / p>
< input type =submitvalue =Add/>
< input type =submitvalue =Retrive/>
< / form>
< / body>
< / html>

web.xml:

 <?xml version =1.0encoding =UTF-8?> 
< web-app xmlns =http://java.sun.com/xml/ns/javaeexmlns:web =http://java.sun.com/xml/ns/javaee/web -app_2_5.xsdxmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation =http://java.sun.com/xml/ns/javaee http:// java.sun.com/xml/ns/javaee/web-app_3_0.xsdid =WebApp_IDversion =3.0>
< display-name&FetchAndInsert< / display-name>
< servlet>
< servlet-name> REST Servlet< / 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.fetch< / param-value>
< / init-param>
< load-on-startup> 1< / load-on-startup>
< / servlet>
< servlet-mapping>
< servlet-name> REST Servlet< / servlet-name>
< url-pattern> / rest / *< / url-pattern>
< / servlet-mapping>
< / web-app>

当用户点击检索按钮时,如何从数据库中检索数据,并显示所有记录在另一个HTML表单?
请给出如何做的建议。



在我的应用程序中,当用户单击检索按钮时,它正在执行插入操作。
但是我想要的是,当用户点击它应该转到另一个页面,并从数据库中显示数据。



任何人可以告诉错误什么我已经完成了,并提出了寻找解决方案的建议,以及当用户单击检索按钮时如何在其他页面中显示动态表?

解决方案

Account.java:

  package com.fetch; 

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;

public class Account implements Serializable
{
@Id
private long id;

@Column(name =NAME)
private String name;

public Account(int id,String name)
{
this.id = id;
this.name = name;
}
public long getId(){
return id;
}
public void setId(long id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}

MyAccount.java:

  package com.fetch; 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.Entity;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@WebService()
@Entity
@Path(/ user)
public class MyAccount
{
@POST
@Path(/ fetch)
@WebMethod(operationName =insert)
public String insert(@FormParam(name)String name)
{
尝试
{
Class.forName(com.mysql.jdbc.Driver);
连接con = DriverManager.getConnection(jdbc:mysql:// localhost:3306 / studentinfo,root,root);
String query =insert into CUSTOMER+(NAME)VALUES+(?);

PreparedStatement st = con.prepareStatement(query);
st.setString(1,name);
st.executeUpdate();
}
catch(异常e)
{
System.out.println(e.getMessage());
}
return记录插入成功;


@GET
@Path(/ retrive)
@Produces(text / html)
@WebMethod(operationName = retrive)
public String retrive()
{
ResultSet rs = null;
String details =;
try
{
Class.forName(com.mysql.jdbc.Driver);
连接con = DriverManager.getConnection(jdbc:mysql:// localhost:3306 / studentinfo,root,root);

String query =select ID,NAME from CUSTOMER;

PreparedStatement st = con.prepareStatement(query);
rs = st.executeQuery();

details =< html>< body>;
details = details +< table border = 1>;
details = details +< tr>< td>< Strong> Id< / Strong>< / td> +
< td>< Strong> Name< / Strong>< / td> +< / tr>;
while(rs.next())
{
details = details +< tr>< td> + rs.getInt(ID)+< / td> +
< td> + rs.getString(NAME)+< / td>< / tr>;
}
details + =< / table>< / body>< / html>;
}
catch(异常e)
{
System.out.println(e.getMessage());
}
返回详细信息;
}
}

insert.html:

 <!DOCTYPE html PUBLIC -  // W3C // DTD HTML 4.01 Transitional // ENhttp:// www.w3.org/TR/html4/loose.dtd\"> 
< html>
< head>
< meta http-equiv =Content-Typecontent =text / html; charset = UTF-8>
< title>插入< / title>
< / head>
< body>
< form action =rest / user / fetchmethod =POST>
< p>
名称:< input id =namename =name/>
< / p>
< input type =submitvalue =Add/>
< / form>
< form action =rest / user / retrivemethod =GET>
< input type =submitvalue =Retrive/>
< / form>
< / body>
< / html>

我的 web.xml 是:

 <?xml version =1.0encoding =UTF-8?> 
< web-app xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xmlns =http://java.sun.com/xml/ns / javaeexmlns: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_3_0.xsd
id =WebApp_IDversion =3.0>
< display-name&FetchAndInsert< / display-name>
< welcome-file-list>
< welcome-file> index.jsp< / welcome-file>
< / welcome-file-list>
< servlet>
< servlet-name> REST Servlet< / 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.fetch< / param-value>
< / init-param>
< load-on-startup> 1< / load-on-startup>
< / servlet>
< servlet-mapping>
< servlet-name> REST Servlet< / servlet-name>
< url-pattern> / rest / *< / url-pattern>
< / servlet-mapping>
< / web-app>


I have done inserting a record into database but I don't know how to retrieve it. My code is: Account.java:

package com.fetch;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;

public class Account implements Serializable 
{   
  @Id
  private long id;

  @Column(name="NAME")  
  private String name;

  public Account()  
  {

  }

  public Account(int id, String name)   
  {     
     this.id = id;      
     this.name = name;  
  }

  public long getId() 
  {     
     return id; 
  }

  public void setId(long id) 
  {     
     this.id = id;  
  }

  public String getName() 
  {     
     return name;   
  }

  public void setName(String name)
  {     
     this.name = name;  
  }
}

MyAccount.java:

package com.fetch;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;

@WebService()
@Entity
@Table(name = "CUSTOMER")
@Path("/user")
@NamedQuery(name="loginquery", query="select ID,NAME from CUSTOMER")
public class MyAccount 
{   
   private Account ac;  
   public MyAccount()   
   {    
     // TODO Auto-generated constructor stub      
     ac = new Account();    
   }    

   @POST    
   @Path("/fetch")  
   @WebMethod(operationName = "insert") 
   public String insert(@FormParam("name") String name) 
   {     
      try   
      {     
         Class.forName("com.mysql.jdbc.Driver");        
         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentinfo", "root", "root");

         String query = "insert into CUSTOMER"+"(NAME) VALUES"+"(?)";
     PreparedStatement st = con.prepareStatement(query);    
         st.setString(1,name);  
     st.executeUpdate();
      }     
      catch (Exception e)   
      {     
         System.out.println(e.getMessage());    
      } 
      return"Record inserted successfully";
   }    
  public Account getAc() 
  {     
     return ac; 
  } 
  public void setAc(Account ac) 
  {     
     this.ac = ac;  
  }
}

insert.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert</title>
</head>
<body>
    <form action="rest/user/fetch" method="POST">
        <p>
            Name : <input id="name" name="name" />
        </p>
        <input type="submit" value="Add" />
            <input type="submit" value="Retrive" />
    </form>
</body>
</html>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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" id="WebApp_ID" version="3.0">
   <display-name>FetchAndInsert</display-name>
   <servlet>
      <servlet-name>REST Servlet</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.fetch</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
      <servlet-name>REST Servlet</servlet-name>
      <url-pattern>/rest/*</url-pattern>
   </servlet-mapping>
</web-app>

How to retrieve the data from the database when the user clicks on the retrieve button, and display all the records in another HTML form? Please give suggestions on how to do it.

In my application, when the user clicks the retrieve button it is performing the insert operation. But I want is, when the user clicks it should go to the another page and display the data in table from database.

Can anybody tell the mistake what I have done, and give suggestions for finding solution for it and how to display the dynamic table in other page when the user clicks the retrieve button?

解决方案

Finally I have done it, Now I am able to perform both insertion and retriving of data from database using jersey(JAX - RS) webservices and able to display it in a html page.

Account.java:

package com.fetch;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;

public class Account implements Serializable 
{
    @Id
    private long id;

    @Column(name = "NAME")
    private String name;

    public Account(int id, String name)
    {
        this.id = id;
        this.name = name;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

MyAccount.java:

package com.fetch;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.Entity;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@WebService()
@Entity
@Path("/user")
public class MyAccount
{
    @POST
    @Path("/fetch")
    @WebMethod(operationName = "insert")
    public String insert(@FormParam("name") String name) 
    {
        try 
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentinfo", "root", "root");
            String query = "insert into CUSTOMER"+"(NAME) VALUES"+"(?)";

            PreparedStatement st = con.prepareStatement(query);
            st.setString(1,name);
            st.executeUpdate();     
        } 
        catch (Exception e) 
        {
            System.out.println(e.getMessage());
        }
        return"Record inserted successfully";
    }

    @GET
    @Path("/retrive")
    @Produces("text/html")
    @WebMethod(operationName = "retrive")
    public String retrive() 
    {
        ResultSet rs = null;
        String details = ""; 
        try 
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentinfo", "root", "root");

            String query = "select ID,NAME from CUSTOMER";

            PreparedStatement st = con.prepareStatement(query);
            rs = st.executeQuery();

            details = "<html><body>"; 
            details = details + "<table border=1>";
            details = details + "<tr><td><Strong>Id </Strong></td>" +
                                    "<td><Strong>Name </Strong></td>" + "</tr>";
            while (rs.next()) 
            {
                details = details + "<tr><td>" + rs.getInt("ID") + "</td>" +
                                        "<td>" + rs.getString("NAME") + "</td></tr>";
            }
            details += "</table></body></html>"; 
        } 
        catch (Exception e) 
        {
            System.out.println(e.getMessage());
        }   
        return details;
    }
}

insert.html:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert</title>
</head>
<body>
    <form action="rest/user/fetch" method="POST">
        <p>
            Name : <input id="name" name="name" />
        </p>
        <input type="submit" value="Add" />
    </form>
    <form action="rest/user/retrive" method="GET">
        <input type="submit" value="Retrive" />
    </form>
</body>
</html>

my web.xml is:

 <?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_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>FetchAndInsert</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>REST Servlet</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.fetch</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>REST Servlet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

这篇关于如何使用Java在eclipse中使用webservices(JAX - RS)从数据库中检索数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆