【问题标题】:Full RESTFUL WebService with GSON and Java具有 GSON 和 Java 的完整 RESTFUL WebService
【发布时间】:2015-01-14 19:02:40
【问题描述】:

我创建了一个 RESTFUL 网络服务,女巫返回一个 json,但此时我只咨询并显示一个简单的 select * ,我需要创建一个完整的 CRUD 解决方案,如果有人有一些示例可以分享,我将不胜感激.

向大家致以最诚挚的问候

到目前为止我的代码是:

DAO - Access.java

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import dto.Usuarios;

public class Access
{
    public ArrayList<Usuarios> getUsuarios(Connection con) throws SQLException
    {
        ArrayList<Usuarios> usuariosList = new ArrayList<Usuarios>();
        PreparedStatement stmt = con.prepareStatement("SELECT * FROM usuarios");
        ResultSet rs = stmt.executeQuery();
        try
        {
            while(rs.next())
            {
                Usuarios usuariosObj = new Usuarios();
                usuariosObj.setUsr_id(rs.getInt("usr_id"));
                usuariosObj.setUsr_login(rs.getString("usr_login"));
                usuariosObj.setUsr_pwd(rs.getString("usr_pwd"));
                usuariosList.add(usuariosObj);

            }
        } catch (SQLException e)
        {       
            e.printStackTrace();
        }
        return usuariosList;

    }
}

DTO - Usuarios.java

package dto;

public class Usuarios
{
    private int usr_id;
    private String usr_login;
    private String usr_pwd;

    public Usuarios()
    {

    }

    public Usuarios(int usr_id, String usr_login, String usr_pwd)
    {
        super();
        this.usr_id = usr_id;
        this.usr_login = usr_login;
        this.usr_pwd = usr_pwd;
    }

    public int getUsr_id()
    {
        return usr_id;
    }

    public void setUsr_id(int usr_id)
    {
        this.usr_id = usr_id;
    }

    public String getUsr_login()
    {
        return usr_login;
    }

    public void setUsr_login(String usr_login)
    {
        this.usr_login = usr_login;
    }

    public String getUsr_pwd()
    {
        return usr_pwd;
    }

    public void setUsr_pwd(String usr_pwd)
    {
        this.usr_pwd = usr_pwd;
    }


    @Override
    public String toString()
    {
        return "[ {usr_id=" + usr_id + ", usr_login=" + usr_login + ", usr_pwd=" + usr_pwd + "} ]";
    }

}

模型 - AccessManager.java

package model;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import dao.Access;
import dao.Database;
import dto.Usuarios;

public class AccessManager
{
    public ArrayList<Usuarios> getUsuarios() throws Exception
    {
        ArrayList<Usuarios> usuariosList = new ArrayList<Usuarios>();
        Database db = new Database();
        Connection con = db.getConnection();
        Access access = new Access();
        usuariosList = access.getUsuarios(con);
        return usuariosList;
    }
}

WebService - UsuariosService.java

package webService;

import java.util.ArrayList;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import com.google.gson.Gson;

import model.AccessManager;
import dto.Usuarios;

@Path("/UsuariosService")
public class UsuariosService
{
    @GET
    @Path("/usuarios")
    @Produces("application/json")
    public String usuarios()
    {
        String usuarios = null;
        ArrayList<Usuarios> usuariosList = new ArrayList<Usuarios>();
        try
        {
            usuariosList = new AccessManager().getUsuarios();
            Gson gson = new Gson();
            //usuarios = gson.toJson(usuariosList);
            usuarios = "{\"usuarios\" :" + gson.toJson(usuariosList) + "}";
        } catch (Exception e)
        {
                e.printStackTrace();
        }
        return usuarios;
    }
}

【问题讨论】:

    标签: java json web-services rest sapui5


    【解决方案1】:

    通常您应该询问您遇到的具体问题,而不是索取样品。看起来你有一个结构化的代码,你所需要的只是实现所有作为服务公开的操作。

    如果您需要样本,网络上有相当多的资源。像这样:https://code.google.com/p/javaee6-crud-example/

    我将尝试在下面为您提供一些快速提示:

    WebService - UsuariosService.java

    @POST
    @Path("/usuarios")
    public Response save(Usuario user) {
        try {
            manager= new AccessManager();
            manager.save(user);
            return Response.ok("User has been created.").build();
        } catch (Exception e) {
                e.printStackTrace();
        }
        return usuarios;
    }
    
    @DELETE
    @Path("/usuarios/{id}")
    public Response delete(@PathParam("id") String id) {
        try {
            manager= new AccessManager();
            manager.delete(id);
            return Response.ok("User has been deleted.").build();
        } catch (Exception e) {
                e.printStackTrace();
        }
        return usuarios;
    }
    
    @PUT
    @Path("/usuarios/{id}")
    public Response delete(@PathParam("id") String id, Usuario user) {
        try {
            manager= new AccessManager();
            manager.update(id, user);
            return Response.ok("User has been updated.").build();
        } catch (Exception e) {
                e.printStackTrace();
        }
        return usuarios;
    }
    

    如果您不了解 PUT、DELETE、POST 等的用法,建议您阅读HTTP Method Tutorial。有几个关于这个的讨论,但你可能会跳过一段时间。

    我想你可能会从这里得到一个想法。您的DAO 也需要实现方法来执行 CRUD 接口。我添加的链接有一个非常简单的示例,可能也会有所帮助。您也可以查看此JPA 链接。

    不确定上述信息是否有帮助,但我认为这是一个开始,因为您必须对其进行编码才能了解更多信息:)

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 2013-04-06
      相关资源
      最近更新 更多