0

我开发了用 rest 开发的服务器端 web 服务。我的代码在使用 POSTMAN 应用程序检查时工作正常。但我想获得 JSP 页面中所有 CRUD 操作的响应。每个响应都应该显示在 JSP 页面中,并且消费的数据应该是 JSP 页面。您能否提供如何开发 REST 客户端的方法。我是 Rest Client 的新手。

产品.java

public class Product {

private long pid;
private String pname;
private String category;
private float price;
private long stock;
private String remarks;

public Product()
{

}

public Product(long pid,String pname,String category,float price,long stock,String remarks){
    this.pid=pid;
    this.pname=pname;
    this.category=category;
    this.price=price;
    this.stock=stock;
    this.remarks=remarks;
}
public long getPid() {
    return pid;
}
public void setPid(long pid) {
    this.pid = pid;
}
public String getPname() {
    return pname;
}
public void setPname(String pname) {
    this.pname = pname;
}
public String getCategory() {
    return category;
}
public void setCategory(String category) {
    this.category = category;
}
public float getPrice() {
    return price;
}
public void setPrice(float price) {
    this.price = price;
}
public long getStock() {
    return stock;
}
public void setStock(long stock) {
    this.stock = stock;
}
public String getRemarks() {
    return remarks;
}
public void setRemarks(String remarks) {
    this.remarks = remarks;
}

}

数据库类.java

public class DatabaseClass {

private static Map<Long, Product> products=new HashMap<>();

public static Map<Long, Product> getProduct()
{
    return products;
}   

}

ProductDaoImpl.java

public class ProductDaoImpl implements ProductDao {

private Map<Long, Product> products=DatabaseClass.getProduct();

public ProductDaoImpl()
{
    products.put(1L, new Product(1L,"TV","Entertinement",10000F,250L,"This is best TV!"));
    products.put(2L, new Product(2L,"Computer","Technology",20000F,350L,"My Computer name Hp and SONY ViVo!"));
    products.put(3L, new Product(3L,"DeskTopComputer","Technology",15000F,150L,"My Desktop Computer name Accer and SONY ViVo!"));
}

//Get All products
public List<Product> getAllProducts() {

    return new ArrayList<Product>(products.values());
}

//Get product by product id
public Product getProduct(long pid) {

    return products.get(pid);
}

//To Add the products 
public Product addProduct(Product product) {
    product.setPid(products.size()+1);
    products.put(product.getPid(), product);
    return product;
}

//Update the product
public Product updateProduct(Product product) {
    if(product.getPid()<=0)
    {
        return null;
    }
    products.put(product.getPid(), product);
    return product;
}

// Delete the product
public Product deleteProduct(long pid) {

    return products.remove(pid);

}



//Get the product by category
public List<Product> getProductByCategory(String category) {

    List<Product> list = new ArrayList<Product>();

    if (products.size()<=0) {
        return null;
    }

    else{

        for(Product p: this.products.values()){

            if(p.getCategory().equals(category))
                list.add(p);    
        }
        return list;    
    }

}

//Get the product by price
public List<Product> getProductsBasedOnPrice(float startPrice, float endPrice) {

    List<Product> list = new ArrayList<Product>();

    if (products.size()<=0) {
        return null;
    }

    else{

        for(Product p: this.products.values()){

            if(startPrice<=p.getPrice() && endPrice>=p.getPrice())
            {
                list.add(p);    
            }
        }
        return list;    
    }

}}

ProductServiceImpl.java

@Path("/products")

公共类 ProductServiceImpl 实现 ProductService {

ProductDaoImpl productService=new ProductDaoImpl();

@GET
@Produces(MediaType.APPLICATION_XML)
public List<Product> getProducts() {

    return productService.getAllProducts();
}

@GET
@Path("/{pid}")
@Produces(MediaType.APPLICATION_XML)
public Product getProduct(@PathParam("pid") long pid)
{
    return productService.getProduct(pid);
}

@POST
@Produces(MediaType.APPLICATION_XML) 
@Consumes(MediaType.APPLICATION_XML)
public Product addMessage(Product product)
{
    return productService.addProduct(product);
}

@PUT
@Path("/{pid}")
@Produces(MediaType.APPLICATION_XML) 
@Consumes(MediaType.APPLICATION_XML)
public Product updateProduct(@PathParam("pid") long pid,Product product)
{
    product.setPid(pid);
    return productService.updateProduct(product);
}

@DELETE
@Path("/{pid}")
@Produces(MediaType.APPLICATION_XML) 
public void deleteMessage(@PathParam("pid") long pid)
{
    productService.deleteProduct(pid);
}

@GET
@Path("category/{category}")
@Produces(MediaType.APPLICATION_JSON)
public List<Product> getProductsBasedOnCategory(@PathParam("category") String category) {

    return productService.getProductByCategory(category);
}


@GET
@Path("basedOnPrice")
@Produces(MediaType.APPLICATION_JSON)
public List<Product> getProductsBasedOnPrice(@QueryParam("startPrice") float startPrice, @QueryParam("endPrice") float endPrice) {
            if(startPrice>0 && endPrice>0)
            {
            return productService.getProductsBasedOnPrice(startPrice, endPrice);    
            }
    return productService.getAllProducts();
}

}

4

2 回答 2

0

您可以使用 Jquery 创建 Promise 或 ajax 调用以与后端交互。另一种方式,如果你只使用restful服务而不是spring MVC模块,那么是使用angularjs,即angular 1.x,你可以使用https模块进行restful调用并使用路由模块来路由页面(这也将让你申请SPA)

于 2018-08-07T05:26:24.523 回答
0

您可以使用球衣库,例如https://jersey.github.io/

然后你会得到这样的东西(JSON 或 XML 到字符串)

    ...
    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.ClientResponse;
    import com.sun.jersey.api.client.WebResource;

    // Create Client
         Client client = Client.create();

         WebResource webResource = client.resource("http://localhost:8080/<yourpath to resource>");

         ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);

         // Status 200 is successful.
         if (response.getStatus() != 200) {
             System.out.println("Failed with HTTP Error code: " + response.getStatus());
             String error= response.getEntity(String.class);
             System.out.println("Error: "+error);
             return;
         }

         String output = response.getEntity(String.class);

         System.out.println("Output from Server .... \n");
         System.out.println(output);
         ...
于 2018-08-07T05:37:39.730 回答