Получить данные пользователя
Необходимо получить от пользователя на сайте сначала имя фамилию, а потом измененные данные. Я пробовал делать две формы, в одной имя фамилия, во второй новые данные. Проблема в том, если я так делаю, то у меня приходят измененные данные вида "", то есть пустой строки. Если же я делаю все в одну форму, то измененные данные приходят на сервер, а вот имя и фамилия пользователя приходят в виде 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)
});
});