java - 如何将 HTML 表单数据发送到 Java http 服务器

标签 java ajax websocket

我想将一些 HTML 表单数据发送到我用 Java 编写的程序。我打算使用 AJAX 发送数据并向我的 Java 代码添加一些类,使其充当 http 服务器。到目前为止,我一直使用 php 来做这些事情,但我对 AJAX 和设置 http 服务器都很陌生。我在网上查找了指南,但大多数页面要么与我正在做的事情不够相似,要么对于像我这样的初学者来说太困惑了。

有人可以向我展示一个基本示例:(1) 使用 AJAX 发送表单元素以及 (2) 在 Java 中检索该数据吗?即使是一个像样的指南(显示两者)的链接也将不胜感激。

我知道有一些示例展示了如何执行 (1),但我似乎无法在没有工作服务器的情况下测试客户端,反之亦然。

我也不确定用 Java 实现哪种服务器解决方案。我已经准备好了建议 Jetty 的指南,其他建议是 Simple 的,还有建议 websocket 是前进方向的指南。我尚未决定如何继续。

对于(2),我假设您必须以某种方式从http请求中提取数据?如何做到这一点?

我不是在寻找完整的解决方案,也不是在寻找具体的答案。只是让我开始的东西(无论是代码还是指南),但这与我想做的事情相关。干杯。

最佳答案

由于您是 Java 应用程序的新手,我向您推荐 Java Servlet,这是最基本的 Java 服务器类型。

这里是我的所有示例代码,考虑到服务器的 AJAX,并在 Java servlet 中检索数据。

您可以自己将程序部署在Tomcat上,但使用一些IDE(Intellij IDEA、Eclipse、NetBeans...)更容易。

这是我的代码。这些就是您所需要的一切,仅此而已。

Servlet.java

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


public class Servlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException
    {
        String text = request.getParameter("text");  //Retrieve data
        PrintWriter out = response.getWriter();
        out.println("Hello, you've typed" + text);
    }
}

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: pwwpche
  Date: 2014/4/21
  Time: 14:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>

    <title></title>
    <script type="text/javascript" src="bootstrap/js/jquery.min.js"></script>
    <script type="text/javascript">
        function submit(){
            var msgContent = document.getElementById("txtMessage").value;
            $.ajax({
                url: "myServlet",
                data: {
                    text : msgContent
                },
                success: function (data) {
                    alert(data);
                },
                error: function (data) {
                    console.log(data);
                }
            });
        }
    </script>
</head>
<body>
<form action="myServlet">
    <input type="text" name="mytext" id="mytext">
    <input type="submit" onclick="submit()">
</form>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>servlet</servlet-name>
        <servlet-class>Servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>servlet</servlet-name>
        <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>
</web-app>

至于如何部署,你可以通过让IDE来完成这项工作来节省精力。由于一些网络问题,我无法在这里上传图片:(但是你可以用关键字“java servlet tomcat”或其他东西Google一下。网上有大量的教程:)

关于java - 如何将 HTML 表单数据发送到 Java http 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823744/

相关文章:

java - 使用 Dagger 2 进行方法注入(inject)

java - 验证对象参数

java - 如何在一个迭代器循环中显示两个数组列表?

javascript - AJAX 搜索系统中的空格不起作用

java - Jetty:套接字连接作为websocket连接

java - Websocket HandshakeRequest 抛出 ClasscastException

java - 关于 lambda 语法

javascript - OpenWeatherMap API - 附加经度和纬度时出现问题

html - 从AJAX向用户显示错误时出现问题

web-services - 如何在 API 和各种客户端之间创建全双工通信?