У меня простое web приложение на tomcat с несколькими функциями. Есть меню навигации и я пытаюсь реализовать одну из функций(удаление), она должна получив данные с одной jsp страницы просто напечатать их на другую (базу потом прикручу и будет удалять). То есть с delete.jsp после заполнения формы с id для удаления меня должно перенаправлять на answer.jsp где будет напечатан этот id.
У меня проблемы с пониманием как многократно использовать методы doGet и doPost при этом учитывая что страниц может быть и много.
Есть главная страница с ней все хорошо хотя-бы в том смысле что навигация работает:
index.jsp
<body>
<ul>
<li><a href="find.jsp">Найти пользователя по id</a></li>
<li><a href="addition.jsp">Добавить пользователя</a></li>
<li><a href="edition.jsp">Редактировать пользователя</a></li>
<li><a href="delete.jsp">Удалить пользователя</a></li>
</ul>
</body>
Это delete.jsp он принимает данные.
<body>
<form action="answer.jsp" method="post">
<input type="number" placeholder="id" name="id"><br>
<input type="submit" value="ответить">
</form>
</body>
Это answer.jsp он должен напечатать данные:
<body>
${serverAnswer}
</body>
И сервлет который должен это выполнять, тут все мои муки:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
//тут я хочу вытащить из запроса id и послать его в ответ.
final String id = req.getParameter("serverAnswer");
req.setAttribute("id", id);
doGet(req, resp);
}
И что-то я запутался.
Как мне контролировать с каким из jsp файлов я работаю в методах, особенно если один метод работает с разными файлами? И почему в doPost выражение id = req.getParameter("serverAnswer") не дает мне результата? Вероятно я не указал от какого файла он должен его получить, но если я это укажу, то как мне потом с этим методом работать с другими файлами...
Как мне сделать что-бы это заработало. Только-только начал разбираться с сервлетами, пожалуйста не кидайте тухлыми яйцами.
doGet() и doPost() - это низкоуровневые методы, которые просто принимают любой запрос определенного типа (и, на самом деле, не очень нужны при наличии service(). Предполагается, что между этими методами и реальным обработчиком запроса должен существовать некоторый дополнительный компонент, который находит этот обработчик и передает ему запрос. Если бы вы использовали какой-то фреймворк, то там то уже было бы сделано за вас, в данном случае необходимо реализовать этот сервис руками. В результате у вас получится следующая схема:
Еще раз подчеркну, что .doXXX() - это такие сервлетные черные дыры, куда поступают все запросы соответствующего HTTP-метода - вне зависимости от того, какая страница была запрошена. Таким образом туда может попасть и find.jsp, и answer.jsp - задача выяснения того, как сопоставляются пути с обработчиками запроса лежит на реализующем сервлет (т.е. на вас).
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники