Ajax 和 java servlet 数据传输使用 java 脚本

Ajax and java servlet data transfer using java script

大家好,我是 ajax 的新手,正在尝试使用 javascript 在 servlet 和 html 页面之间创建一个简单的基本数据传输(不知道 jQuery ).但这不起作用尝试阅读教程但仍然无法找出问题所在。谁能告诉我哪里做错了。

Html 页 index.html

<body>
    <button onClick="run()">Click</button>
    <script>
        function run() {
            if(window.XMLHttpResquest) xmlhttp=new XMLHttpResquest();
            else  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("GET","/test",false);
            xmlhttp.send(null);
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("demo").innerHTML=xmlhttp.responseText;
                }
            }
        }
    </script>
    <br>
    <p id="demo">Static</p>
</body>

小服务程序:Test.java

package foo;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Test extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException {
        res.setContentType("text/plain");
        res.getWriter().write("Dynamic");
    }
}

我使用的 WebServer 是 tomcat、web.xml

<web-app>
    <servlet>
        <servlet-name>tst</servlet-name>
        <servlet-class>foo.Test</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>tst</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

编辑:

我面临的问题是 - 当我点击 'click button' 时,段落元素的 innerHTML 应该改变,但它没有改变。我尝试从地址栏运行 servlet 以检查它正在工作的 servlet 错误它打印 "Dynamic " 所以不是 servlet 和 Web.xml 文件的问题。

在'onreadystatechange'函数后写'xmlhttp.send(null)'。希望它能奏效。 此外,您不需要在发送中传递 'null'。

以下代码非常适合我的文件。我做的另一个改变是添加“。”在 open() 中的“/”之前 URL 中的句点。在为 onreadystatechange 声明函数后,我调用了 send()。

<body>
    <button onClick="run()">Click</button>
     <script>
        function run() {
            if(window.XMLHttpResquest) xmlhttp=new XMLHttpResquest();
            else  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("GET","./test",false);
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("demo").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.send();
        }
    </script>
    <br>
    <p id="demo">Static</p>
</body>