Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSP中的doPost()返回_Java_Http_Jsp_Rest_Servlets - Fatal编程技术网

Java 从JSP中的doPost()返回

Java 从JSP中的doPost()返回,java,http,jsp,rest,servlets,Java,Http,Jsp,Rest,Servlets,我试图在不使用任何框架的情况下实现REST类型的体系结构。因此,我基本上是从我的客户端调用一个JSP,在提供服务的远程服务器上执行doPost()。现在我能够以JSON格式将数据从客户端传递到服务器,但我不知道如何读取响应。有人能帮我解决这个问题吗 客户端: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

我试图在不使用任何框架的情况下实现REST类型的体系结构。因此,我基本上是从我的客户端调用一个JSP,在提供服务的远程服务器上执行
doPost()
。现在我能够以JSON格式将数据从客户端传递到服务器,但我不知道如何读取响应。有人能帮我解决这个问题吗

客户端:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ....
    ....
    HttpPost httpPost = new HttpPost("http://localhost:8080/test/Login");
    ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();

    //Send post it as a "json_message" paramter.
    postParameters.add(new BasicNameValuePair("json_message", jsonStringUserLogin)); 
    httpPost.setEntity(new UrlEncodedFormEntity(postParameters));
    HttpResponse fidresponse = client.execute(httpPost);

   ....
   ....
 }

我刚开始使用servlet,想自己实现一个REST服务。如果你有任何其他建议,请分享。。。谢谢,

在doPost中,您只需执行以下操作:

response.setContentType("application/json; charset=UTF-8;");
out.println("{\"key\": \"value\"}"); // json type format {"key":"value"}
这将把json数据返回给客户机或servlet

使用jquery ajax读取返回的数据…
在客户端使用jquery执行以下操作:

$.getJSON("your servlet address", function(data) {
                    var items = [];
                    var keys= [];
                    $.each(data, function(key, val) {
                        keys.push(key);
                        items.push(val);

                    });
                    alert(keys[0]+" : "+items[0]);           
                }); 

在servlet上,您知道如何在执行post后读取json数据,您可以像这样准备响应

HttpEntity entity  = fidresponse.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));

String l = null;
String rest = "";
while ((l=br.readLine())!=null) {
  rest=rest+l;
}
这里rest将包含json响应字符串。
您也可以使用StringBuffer。

您是在询问如何从请求中获取json字符串还是如何反序列化json字符串?我想知道如何从请求中获取json字符串?…从远程计算机上的另一个servlet…响应正文将包含您的json响应。从fidresponse中读取响应正文。(我还不确定我是否理解你的问题)@subirkumarsao我已经编辑了我的帖子。我基本上设置了一个名为“LoginResponse”的属性。我如何从我的fidresponse对象访问它?它是System.out.println(…)?我实际上希望JSON回到我的客户机servlet上。我试过你的解决方案。它只是打印到控制台上。您知道如何使用fidresponse对象在客户端中使用键访问值吗?PrintWriter out=response.getWriter();此语句将从触发请求的位置而不是控制台上写回数据。在服务器端我应该怎么做?我只是把它打印出来吗?
HttpEntity entity  = fidresponse.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));

String l = null;
String rest = "";
while ((l=br.readLine())!=null) {
  rest=rest+l;
}