Сервлет, обрабатывающий несколько почтовых запросов - PullRequest
10 голосов
/ 17 марта 2012

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

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

cheers

Ответы [ 2 ]

13 голосов
/ 17 марта 2012

Для обработки нескольких запросов одним и тем же сервлетом вы должны заключить договор, чтобы иметь параметр запроса, такой как «ACTION».Затем в ваших формах добавьте это как скрытое поле со значениями, такими как «ДОБАВИТЬ» и «УДАЛИТЬ».Таким образом, в 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();
               }
      }

}
11 голосов
/ 17 марта 2012

Это все ваш выбор.Все зависит от текущих и будущих функциональных требований.Простая альтернатива - просто ввести один или два 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}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...