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

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

问题描述

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

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;  
  }
}

插入.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>

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

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?

推荐答案

我终于做到了,现在我可以使用 jersey(JAX - RS) webservices 执行插入和检索数据库中的数据并能够显示它在 html 页面中.

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;
    }
}

插入.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>

我的 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_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 中使用 Web 服务(JAX - RS)从数据库中检索数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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