Много doGet запросов в одном сервлете
Как прописать конкретный путь над методом doGet/doPost, чтобы была возможность иметь их несколько в одном сервлете?
Ответы (2 шт):
Никак. Для каждого url должен быть свой сервлет. Эту возможность можно реализовать с помощью Spring-web.
Несколько doGet или doPost методов в одном сервлете нельзя переопределить. Но зато можно выкрутиться так: в одном doGet() методе можно сделать несколько if else блоков, каждый из которых отрабатывает при определенном значении параметра action(action-это имя параметра, оно может быть любым), который передается в url-e в метод doGet get-запросом. Например какая-то КНОПКА на html-странице имеет ссылку на сервлет(servlet_name) и параметр action=update: (action-имя параметра, update- значение этого параметра)
<a href='/путь к проекту/servlet_name?action=update'>КНОПКА</a>"
Тогда в сервлете метод doGet:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
if (action != null) {
if (action.equals("delete")) {
//нужная логика...
}else if(action.equals("update"){
// нужная логика 2...
}
}
} получается один doGet метод может работать с одного рода url, имеющими разные значения параметра action Для doPost похожая схема: Можно в одну html форму включить
<input type="hidden" name="form" value="form1"/>,
в другую
<input type="hidden" name="form" value="form2"/>
разным value для разных форм. А в методе doPost делать такую-же проверку
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String parameter = req.getParameter("form");
if (parameter.equals("form1")){
some code...
}else if (parameter.equals("form2"){
some code 2...
}
}