Много doGet запросов в одном сервлете

Как прописать конкретный путь над методом doGet/doPost, чтобы была возможность иметь их несколько в одном сервлете?


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

Автор решения: Jeka_FRIZZ

Никак. Для каждого url должен быть свой сервлет. Эту возможность можно реализовать с помощью Spring-web.

→ Ссылка
Автор решения: sireni_19

Несколько 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...
   }
}
→ Ссылка