【问题标题】:request don't have parameters in doPost servlet请求在 doPost servlet 中没有参数
【发布时间】:2017-11-30 20:35:09
【问题描述】:

我在 servlet 中遇到问题,我使用表单提交执行 POST 请求,但在 servlet 端,显示没有任何参数可以使用。我不知道是什么导致了这个问题或如何解决它。

这是我的表单提交:

<table>
    <form name="eliAlumno" id="eliAlumno" method="POST" action="DelAlumno">
    <tr>
        <td><input type="radio" name="radioGroup" class="radioButtonEli" value="0"></input></td>
        <td>any name</td>
        <td>any last name</td>
        <td>any string</td>
        <td>any number</td>
        <td>true or false</td>
        <td><input type="submit" id="0" value="Eliminar"></input></td>
    </tr>
    </form>
</table>

这是我的 JavaScript

$("#eliAlumno").submit(function (event) {
    event.preventDefault();
    document.getElementsByClassName("loader")[1].style.display = "block";
    setTimeout(del, 3000);

    function del() {
        document.getElementsByClassName("loader")[1].style.display = "none";
        $.ajax({
            url: "DelAlumno",
            type: "POST",
            data: $("#eliAlumno").serialize()
        })
                .done(function (json) {
                    bootbox.alert({
                        size: "small",
                        title: "Exito",
                        message: "El alumno ha sido eliminado adecuadamente."
                    });
                })
                .fail(function (xhr, status, errorThrown) {
                    bootbox.alert({
                        size: "large",
                        title: "Error",
                        message: "El alumno no se eliminó adecuadamente\n\
información del error: <br>" + errorThrown
                    });
                });
    }
});

这是我的 servlet doPost 方法

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    Gson g = new Gson();
    ProcessDataDel pdd = new ProcessDataDel();
    int id = Integer.parseInt(request.getParameter("radioGroup"));
    pdd.deleteAlu(id, g);
    response.sendRedirect("consulta.jsp");
}

但我调试时HttpServletRequest对象没有任何参数。

【问题讨论】:

  • 提交时是否至少选择了一个按钮?如果没有选择按钮,则不会提交任何参数。
  • 是的,我提交时选择了一个按钮
  • 我会先使用浏览器中的工具——Chrome 中的开发者工具或 Firefox 中的 Firebug。这将帮助您查看浏览器发送的内容。这需要您深入研究一下,因为帖子可能是 URL 编码的,但您可以首先验证 HTML/JavaScript 端发送的内容是否符合您的预期。
  • 当我提交到 servlet 时,我可以看到浏览器大小的请求实际上正在发送值为“2”的参数“radioGroup”

标签: javascript java servlets


【解决方案1】:

我认为您将控制器和 servlet 混合在一起。 您要做的是调用 Action 而不是 servlet doPost。

【讨论】:

  • 不,发帖人没有使用 Struts。
【解决方案2】:

我已经回答了我自己的问题。

出于某种原因,发送数据时 AJAX 方法的顺序非常重要。

代替:

$.ajax({
    url: "DelAlumno",
    type: "POST",
    data: $("#eliAlumno").serialize()
})

一定是:

$.ajax({
    url: "DelAlumno",
    data: $("#eliAlumno").serialize(),
    type: "POST"
})

我怀疑如果type在那个数据之前,servlet在读取参数之前进入方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多