歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Json與Java間傳參常用的幾種方式

Json與Java間傳參常用的幾種方式

日期:2017/3/1 9:51:21   编辑:Linux編程

Json與Java間傳參常用的幾種方式

(一)Get方式傳參
Get方式傳參,是典型的URL傳參方式,在URL後面加上變量和所要傳遞的值即可,這種方式比較簡單,下面以示例的形式展示其使用方法


  URL:
    http://localhost:8080/favccxx/rs/findInspectJobByJobId?jobId=525b8818d52cc6f835bb9e41
  Java源代碼:
@GET
@Path("/findInspectJobByJobId")
@Produces({ MediaType.TEXT_XML })
public String findInspectJobByJobId(@QueryParam("jobId") String jobId,
@Context HttpServletRequest request) {
InspectJob inspectJob = inspectJobService.findOne("jobId", jobId);
return JsonUtil.toJson(inspectJob);
}

(二)POST方式傳參
  2.1使用URL做變量
  將URL最後的位置當做變量去處理,如下所示的000,既是URL的地址,也是需要傳遞的參數。
  URL:
  http://localhost:8080/favccxx/rs/getInspectJobByJobId/000
  Java源代碼:


@POST
@Path("/getInspectJobByJobId/{jobId}")
@Produces({ MediaType.TEXT_XML })
public String getInspectJobByJobId(@PathParam("jobId") String jobId,
@Context HttpServletRequest request) {
InspectJob inspectJob = inspectJobService.findOne("jobId", jobId);
return JsonUtil.toJson(inspectJob);
}

  2.2 使用傳統的&連接符傳遞多個參數
  一直誤認為Json向java端傳遞參數,就是使用Json的格式傳遞的,其實並不是,默認情況下,Json向後端傳遞參數仍然是使用=、&連接符傳遞參數的。示例代碼如下:


  URL:
  http://localhost:8080/favccxx/rs/queryInspectJobById
  參數:
    jobId=123456&jobName=A任務
  Java源代碼:
@POST
@Path("/queryInspectJobById")
@Produces({ MediaType.APPLICATION_JSON })
public String queryInspectJobById(@FormParam("jobId") String jobId,
@FormParam("jobName") String jobName, @Context HttpServletRequest request) {
System.out.println("jobId:"+ jobId + ",AndjobName is:" + jobName) ;
InspectJob inspectJob = inspectJobService.findOne("jobId", jobId);
return JsonUtil.toJson(inspectJob);
}

  2.3 使用Json格式傳遞,使用POJO類解析參數
  使用此類方式傳遞參數時,Json格式數據中的變量,必須是Pojo類中的參數,這樣可靈活傳遞參數,後端根據實際需要解析此參數,進行業務處理。


  URL:
    http://localhost:8080/favccxx/rs/queryInspectJobByJobId
  參數:
   {
     "jobId" : "123456",
     "jobName" : "A任務"
   }
  Java源代碼:
@POST
@Path("/queryInspectJobByJobId")
@Produces({ MediaType.APPLICATION_JSON })
public String queryInspectJobByJobId(@RequestBody String body,
@Context HttpServletRequest request) {
InspectJob inspectJobReq = JsonUtil.fromJson(body, InspectJob.class);
InspectJob inspectJob = inspectJobService.findOne("jobId", inspectJobReq.getJobId());
return JsonUtil.toJson(inspectJob);
}

  2.4使用Json格式傳參,使用自定義類QueryMap解參,適合分頁查詢
  前端傳參格式不變,後端封裝一個QueryMap類,用來查詢進行分頁相關的數據。
  URL:
  http://localhost:8080/favccxx/rs/pageQueryJob
  參數:
{
    "pageIndex" : 2,
   "queryMap" : {
  "jobId" :"525b8818d52cc6f835bb9e41"
}
}
Java源代碼:
123456789 @POST
@Path("/pageQueryJob")
@Produces({ MediaType.APPLICATION_JSON })
public String pageQueryJob(@RequestBody String body,
@Context HttpServletRequest request){
PageQuery pageQuery= JsonUtil.fromJson(body,PageQuery.class);
String jobId = pageQuery.getQueryMapByKey("jobId").toString();
returnnull;
}

Copyright © Linux教程網 All Rights Reserved