发送响应到本地文件

时间:2014-04-07 15:06:16

标签: java html xmlhttprequest

我有一个简单的html页面,只有一个按钮

<html>
<head>
    <script>
        function sender() {
            var oReq = new XMLHttpRequest();
            oReq.open('GET', 'http://localhost:8888?param2=value2', true);
            oReq.onreadystatechange = function() {
                if (oReq.readyState == 4) {
                    if (oReq.status == 200) {
                        alert(xmlhttp.responseText);
                    }
                    if (oReq.status == 404) {
                        alert("404040404!");
                    }
                }
            };
            oReq.send();
        }
    </script>
</head>
<body>
    <button id="click" onclick="sender();">Send</button>
</body>
</html>

我已经在java上编写了简单的http服务器,除了读取传入的请求并显示控制台之外什么都不做。

但是如何从服务器发送对我的文件的响应?例如,我的文件位于那里

file:///C:/Users/Admin/Desktop/development/test.html

请求看起来像这样

GET /?param2=value2 HTTP/1.1
Host: localhost:8888
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,ru-ru;q=0.8,ru;q=0.5,en-us;q=0.3
Accept-Encoding: gzip, deflate
Origin: null
Connection: keep-alive

Header parsing result: param2=value2

发送回复的位置和方式?

服务器正在读取此标题

BufferedReader reader = new BufferedReader(new InputStreamReader(
            sock.getInputStream()));
    StringBuilder sb = new StringBuilder();
    String line = null;
    while (true) {
        line = reader.readLine();
        if (line == null || line.isEmpty())
            break;
        sb.append(line + System.getProperty("line.separator"));
    }
    return sb.toString();

1 个答案:

答案 0 :(得分:1)

嗯,您已经获得了响应,如果请求正常,则响应会显示在Javascript警报中。只需执行任何操作即可将此警报​​替换为HTML页面中的实际显示。

oReq.onreadystatechange = function() {
                if (oReq.readyState == 4) {
                    if (oReq.status == 200) {
                        //This is where you should put the code (or function call) when everything went ok
                    }
                    if (oReq.status == 404) {
                        //this is when you got a 404 error
                    }
                }
            };

如果您希望将其保存到客户端计算机上的文件中,那么您应该从服务器端代码发送回文件流,然后再由客户端保存(如任何文件下载),但就我而言知道,你不能在完整的AJAX中做到这一点,你需要一个普通的http请求才能做到这一点。请注意,您错过了AJAX代码中的大部分错误处理...除了404错误之外,请求有多种方式可能会失败,实际上当您设置所有这些错误时,404错误可能是最不可能发生的事。