Java 如何创建REST客户端,响应应该在JSP页面中出现?
我开发了使用rest开发的服务器端web服务。我的代码在检查邮递员应用程序时运行良好。但是我想得到JSP页面中所有CRUD操作的响应。每个响应都应该显示在JSP页面中,使用的数据应该是JSP页面。您能提供一个开发REST客户端的方法吗。我是新来的Rest客户 Product.javaJava 如何创建REST客户端,响应应该在JSP页面中出现?,java,rest,jsp,rest-client,advanced-rest-client,Java,Rest,Jsp,Rest Client,Advanced Rest Client,我开发了使用rest开发的服务器端web服务。我的代码在检查邮递员应用程序时运行良好。但是我想得到JSP页面中所有CRUD操作的响应。每个响应都应该显示在JSP页面中,使用的数据应该是JSP页面。您能提供一个开发REST客户端的方法吗。我是新来的Rest客户 Product.java public class Product { private long pid; private String pname; private String category; private float pric
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;
}
}
DatabaseClass.java
public class DatabaseClass {
private static Map<Long, Product> products=new HashMap<>();
public static Map<Long, Product> getProduct()
{
return 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();
}
ProductDaoImpl productService=new ProductDaoImpl();
@得到
@生成(MediaType.APPLICATION\u XML)
公共列表产品(){
return productService.getAllProducts();
}
@得到
@路径(“/{pid}”)
@生成(MediaType.APPLICATION\u XML)
公共产品getProduct(@PathParam(“pid”)长pid)
{
返回productService.getProduct(pid);
}
@职位
@生成(MediaType.APPLICATION\u XML)
@使用(MediaType.APPLICATION_XML)
公共产品添加消息(产品)
{
返回productService.addProduct(产品);
}
@放
@路径(“/{pid}”)
@生成(MediaType.APPLICATION\u XML)
@使用(MediaType.APPLICATION_XML)
公共产品更新产品(@PathParam(“pid”)长pid,产品)
{
产品设定pid(pid);
返回productService.updateProduct(产品);
}
@删除
@路径(“/{pid}”)
@生成(MediaType.APPLICATION\u XML)
public void deleteMessage(@PathParam(“pid”)长pid)
{
productService.deleteProduct(pid);
}
@得到
@路径(“类别/{category}”)
@产生(MediaType.APPLICATION_JSON)
公共列表getProductsBasedOnCategory(@PathParam(“category”)字符串类别){
返回productService.getProductByCategory(类别);
}
@得到
@路径(“基准价格”)
@产生(MediaType.APPLICATION_JSON)
公共列表getProductsBasedOnPrice(@QueryParam(“startPrice”)浮动startPrice,@QueryParam(“endPrice”)浮动endPrice){
如果(起始价格>0&&endPrice>0)
{
return productService.getProductsBasedOnPrice(startPrice,endPrice);
}
return productService.getAllProducts();
}
}您可以使用Jquery创建承诺或ajax调用来与后端交互。
另一种方法是,如果您只使用restful服务,而不使用spring MVC模块,则使用angularjs,即Angular1.x,其中您可以使用https模块进行restful调用,并使用路由模块路由页面(这也将使您的应用程序成为SPA)例如,您可以使用jersey库 然后您将得到类似这样的东西(JSON或XML到字符串)
。。。
导入com.sun.jersey.api.client.client;
导入com.sun.jersey.api.client.ClientResponse;
导入com.sun.jersey.api.client.WebResource;
//创建客户端
Client=Client.create();
WebResource WebResource=client.resource(“http://localhost:8080/");
ClientResponse response=webResource.accept(“application/json”).get(ClientResponse.class);
//状态200成功。
if(response.getStatus()!=200){
System.out.println(“失败,HTTP错误代码为:+response.getStatus());
字符串错误=response.getEntity(String.class);
System.out.println(“错误:+错误”);
返回;
}
字符串输出=response.getEntity(String.class);
System.out.println(“从服务器输出…”\n);
系统输出打印项次(输出);
...
此代码在控制台上打印响应。我想在jsp页面上显示响应。如果您想要rest api文档,请集成swagger api。
@Path("/products")
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();
}
...
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);
...