Сервлет, обрабатывающий несколько запросов post

У меня есть одно имя сервлета EditEvent и один JSP, который содержит две формы. Один для добавления нового события, другой для удаления события.

считается ли хорошей практикой использовать два отдельных сервлета для обработки одного JSP? Если нет, то как бы вы обрабатывали два запроса post от одного сервлета? Я. e запрос на добавление и удаление события.

ура

2 ответов


для обработки нескольких запросов одним сервлетом вы должны заключить контракт, чтобы иметь параметр запроса, такой как "действие". Затем в ваших формах добавьте это как скрытое поле со значениями типа "добавить" и "удалить". Таким образом, в doPost() вы можете проверить это значение параметра и вызвать соответствующие методы обработки в том же сервлете.

class YourServlet extends HttpServlet{

      public void doPost(HttpReq req, HttpResp resp){
               String action = reg.getParameter('ACTION');
               if('ADD'.equals(action)){
                   addEvent();
               }
               if('REMOVE'.equals(action)){
                   removeEvent()
               } else {
                   defaultAction();
               }
      }

}

Это все ваш выбор. Все зависит от текущих и будущих функциональных требований. Простой вариант-просто ввести один или два if блоки в сервлете, где вы проверяете, какая кнопка была нажата:

if (request.getParameter("add") != null) {
    // Perform add.
}
else if (request.getParameter("remove") != null) {
    // Perform remove.
}

предполагая, что кнопки выглядят так:

<input type="submit" name="add" value="Add" />
<input type="submit" name="remove" value="Remove" />

сложной альтернативой является переход к нормальной структуре MVC, где вам просто нужно указать конкретные методы действий. Например, JSF:

<h:commandButton value="Add" action="#{bean.add}" />
<h:commandButton value="Remove" action="#{bean.remove}" />