如何将简单数据从javascript发送到java应用程序

时间:2015-04-09 20:41:43

标签: java javascript post xmlhttprequest

我正在尝试从javascript发送一条简单的消息。我想在java程序(服务器)中接收数据,但我似乎无法弄清楚如何在java中获取消息。

这是我的javascript:

   if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    xmlhttp.open("POST", ip, true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send("posX=" + posX + "&posX = " + posX);

我有2个问题。

  • 以上是从中发送简单字符串数据的最快方法 javascript到java程序或者你能推荐一个替代方案 溶液
  • 如何从带有java的javascript中收到上述POST请求?

我真的希望有人可以帮助我。 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

由于我从未做过这样的事情,我不知道是否有任何最快的方法,但这样Java应用程序必须侦听TCP端口80,应该是这样。它还应该发送HTTP响应。

编辑: 在深入探讨这个问题后,我想出了两件事:

  1. POST数据部分不会被换行符终止,因此如果您使用BufferedReader及其readLine方法,它只会挂起并等待。它不会因为#2
  2. 而终止
  3. AJAX请求显然没有关闭套接字,因此java程序读取的流不会终止,因此您无法通过等待read InputStreamReader方法来结束读取返回-1。我发现这一点的唯一方法是检查输入流是否准备就绪。 所以一个非常粗糙,但最小的例子是:

    import java.io.*;
    import java.net.*;
    
    
    class TCPServer {
    
         public static void main(String argv[]) throws Exception {
            ServerSocket welcomeSocket = new ServerSocket(80);
    
            while(true) {
                Socket connectionSocket = welcomeSocket.accept();
                InputStreamReader inFromClient = new InputStreamReader(connectionSocket.getInputStream());
                int c = 0;
    
                while(true) {
                    c = inFromClient.read();
                    System.out.print((char)c);
                    if(!inFromClient.ready()) {
                        break;
                    }
                }
                System.out.println("-------------------------");
            }
        }
    }
    

答案 1 :(得分:0)

我认为HttpServer正是您所寻找的。 它侦听端口80以接受Http-Requests

HttpServer