Обработка запросов сервлетов - PullRequest
1 голос
/ 29 ноября 2010

Привет,

У меня есть сервлет, который извлекает параметр "action" из строки запроса. На основании этой строки я выполняю требуемое действие.

Как лучше всего проверить значение параметра «действие». В настоящее время мой код длинный, если, еще если, еще если, еще если ... когда я предпочел бы иметь какое-то отображение из строки в метод, где у меня не было так много условий ветвления.

С уважением,

Ken

Ответы [ 3 ]

3 голосов
/ 29 ноября 2010

Заполните Map<String, Action>, где String представляет собой условие, для которого вы хотите получить действие, а Action - интерфейс, который вы определили для своих действий.

* 1006 Е.Г. *

Action action = actions.get(request.getMethod() + request.getPathInfo());
if (action != null) {
    action.execute(request, response);
}

Подробный пример вы можете найти в этом ответе .

0 голосов
/ 29 ноября 2010

Может быть, использование вспомогательного класса с типом enum может помочь:

public class ActionHelper {
    public enum ServletAction {
         ActionEdit,
         ActionOpen,
         ActionDelete,
         ActionUndefined
    }

    public static ServletAction getAction(String action)
    {
         action = action != null ? action : "";
         if (action.equalsIgnoreCase("edit")) 
             return ServletAction.ActionEdit;
         else if (action.equalsIgnoreCase("open")) 
             return ServletAction.ActionOpen;
         else if (action.equalsIgnoreCase("delete")) 
             return ServletAction.ActionDelete;
         return ServletAction.ActionUndefined;
    }
}

Тогда ваш сервлет будет иметь что-то короткое и простое, например:

ServletAction sa = ActionHelper.getAction(request.getParameter("action"));
switch (sa) {
    case ServletAction.ActionEdit:
        //
        break;
    // ... more cases
}
0 голосов
/ 29 ноября 2010

Один из возможных способов - сохранить их в файле (файл XML или файл свойств).Загрузите их в память.Это может быть сохранено в некоторой карте.На основании ключа можно определить операцию (значение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...