Использовать сервлет для обработки запросов AJAX? - PullRequest
3 голосов
/ 11 ноября 2011

В основном вопрос да или нет, но я также ищу советы по наилучшей практике для реализации.

Дайте мне знать, когда / если я начну ошибаться.

  • IУ меня есть определенный сервлет (AjaxServlet?), который будет обрабатывать все запросы AJAX
  • AjaxServlet сопоставляется с / ajax / *, поэтому все URL-адреса запроса, такие как / ajax / getDataFromServer, будут обрабатываться им
  • Мой переопределение doGetфункция - это длинная цепочка if / elseif, проверяющая request.getPathInfo () каждый раз
  • Каждый блок if в doGet обрабатывает определенный URL-вызов (/ ajax / getDataFromServer)

Я хочучтобы вернуть JSON, и до сих пор я сам строил эти строки.Есть ли легкий пакет JSON, который я мог бы использовать.Я знаю, что может , например, расширить ArrayList (ArrayListJson?) И добавить метод toJson (), а затем привести любой ArrayList к ArrayListJson, но я уверен, что это уже сделано.

Ответы [ 3 ]

5 голосов
/ 11 ноября 2011

Ваша основная идея звучит нормально, но было бы лучше иметь несколько классов, каждый из которых выполняет свою задачу.Метод, который я успешно использовал, состоит в том, чтобы использовать один сервлет для перехвата вызова, а затем передать задачу другому классу, который фактически выполняет реализацию.Например, вы можете создать интерфейс (например, с именем AJAXHandler), который имеет метод public String performTask(HttpServletRequest request), и использовать шаблон фабрики в вашем сервлете для создания экземпляра соответствующего класса (который реализует AJAXHandler) и позволить этому классу выполнять свою работу.Результаты из метода executeTask (строка JSON) затем отправляются.Когда вам нужен новый вызов AJAX, вы просто добавляете новый класс, который реализует AJAXHandler, и обновляете Factory с новой информацией о классе.

Для обработки JSON, я предлагаю вам взглянуть на json-simple,на http://code.google.com/p/json-simple/

Фабричный шаблон описан на http://www.oodesign.com/factory-pattern.html

Удачи !!!

0 голосов
/ 11 ноября 2011

Я бы сказал, пойти на REST вместо длинной цепочки if / else if на сервлете, что также дает вам больше возможностей для сборки используемых сервисов.

0 голосов
/ 11 ноября 2011

Если вы ищете легкое решение для замены большого блока IF, вы можете использовать рефлексию для вызова методов объекта на основе параметров запроса.
как для json для java: http://json.org/java/

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