У меня простое 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
- задача выяснения того, как сопоставляются пути с обработчиками запроса лежит на реализующем сервлет (т.е. на вас).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеНе могу подключиться к mysql серверу, пишет что max_allowed_packet очень маленький и нужно редактировать это поле на сервере
Есть метод, в котором обрабатываю нажатие по элементу: