Получить данные пользователя

Необходимо получить от пользователя на сайте сначала имя фамилию, а потом измененные данные. Я пробовал делать две формы, в одной имя фамилия, во второй новые данные. Проблема в том, если я так делаю, то у меня приходят измененные данные вида "", то есть пустой строки. Если же я делаю все в одну форму, то измененные данные приходят на сервер, а вот имя и фамилия пользователя приходят в виде null. Есть идея создать новую модель только для имени и фамилии, чтобы их паковать в json и отправлять на сервер вместе с обновленными данными. Но я думаю, что есть способ проще. Итого вопрос в том, как мне отправлять данные одним запросом, чтобы на сервере они были приняты.

Код сервлета:

@WebServlet( value = "/update")
public class UpdateServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Gson gson = new Gson();
        UserDAO userDAO = UserDAO.GetInstance();

        String name = req.getParameter("UserName");
        String surname = req.getParameter("UserSurname");
        String UserData = new BufferedReader(new InputStreamReader(req.getInputStream())).lines().collect(Collectors.joining());

        User newUser = gson.fromJson(UserData,User.class);

        try {
            userDAO.UpdateUser(newUser,name,surname);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

Код JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <link rel="stylesheet" href="scc/style.css">
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/update">
    <label>Input name and surname of user you would like to change</label>
    <div class="form-group">
        <label>Name
            <input type="text" class="form-control" name="UserName" placeholder="Ivan" >
        </label>
    </div>
    <div class="form-group">
        <label>Surname
            <input type="text" class="form-control" name="UserSurname" value="" placeholder="Mingaleev">
        </label>
    </div>
    <input type="submit" class="btn btn-primary" value="Подтвердить"/>
</form>

<form id="updateForm" method="post">
    <label>Input new data of user</label>
    <div class="form-group">
        <label>Name
            <input type="text" class="form-control" id="name"  placeholder="Ivan" name="name">
        </label>
    </div>
    <div class="form-group">
        <label>Surname
            <input type="text" class="form-control" id="surname"  placeholder="Mingaleev" name="surname">
        </label>
    </div>
    <div class="form-group">
        <label>Date
            <input type="text" class="form-control" id="date" placeholder="12.12.2021" name="date">
        </label>
    </div>
    <div class="form-group">
        <label>Socials
            <input type="text" class="form-control" id="socials" placeholder="vk.com/exapmle" name="socials">
        </label>
    </div>
    <div class="form-group">
        <label>Email
            <input type="text" class="form-control" id="email"  placeholder="Your email" name="email">
        </label>
    </div>
    <input type="submit" class="btn btn-primary" value="Отправить" id=""/>
    <script src="JS/UpdadeUser.js"></script>
</form>

</body>
</html>

и код js файла

$(function (){
    let Params = {};
    $("#updateForm").submit(function (e){
        e.preventDefault();

        Params.Name = $("#name").val();
        Params.Surname = $("#surname").val();
        Params.Date = $("#date").val();
        Params.Socials = $("#socials").val();
        Params.Email = $("#email").val();

        let NewUserInfo = JSON.stringify(Params);

        $.post("update",NewUserInfo)
    });
});

Ответы (0 шт):