req.getParameter returns 空

req.getParameter returns null

我试图从我的请求中获取值,但它 return 为空。有什么问题?

这是我的表格:

    <form class="register-form">
        <input class="name" type="text" placeholder="name"/>
        <input class="password" type="password" placeholder="password"/>
        <button id="register">create</button>
    </form>

我的post方法:

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        String name = req.getParameter("name"); 
        if (Objects.isNull(projectService.getByName(name))) {
            logger.info("Registration new project " + name); //NAME == NULL ???
            String password = req.getParameter("password");
            int budget = Integer.parseInt(req.getParameter("budget"));

         ...

        resp.setContentType("text/plain");
        resp.setCharacterEncoding("UTF-8");
        resp.getWriter().write("Success");
    }

和JS部分:

$(document).ready(function () {
    $("button#register").click(function () {
        var name = $("form.register-form input.name").val();
        var password = $("form.register-form input.password").val();
        if (name == '' || password == '') {
            alert("Please fill all fields...!!!!!!");
        }  else {
            var projectRegistration = {
                projectName: name,
                projectPassword: password
            };
            $.post("registration", projectRegistration, function (data) {
                if (data === 'Success') {
                    $("form")[0].reset();
                }
            });
        }
    });
});

我正在使用 Tomcat 版本 8.5.56

在 JS 代码中,您正在构建一个传递给 post 请求的对象 projectRegistration。这个对象有键 projectNameprojectPassword 应该在 servlet 中使用:

String name = req.getParameter("projectName");

希望对您有所帮助。

问题的根本原因是您没有传递名称为 name 的任何参数,因为您没有名称为 name.[=14= 的输入字段]

替换

<input class="name" type="text" placeholder="name"/>

<input class="name" type="text" placeholder="name" name="name"/>