Правильный синтаксис для сервлета, который «ничего не возвращает»? - PullRequest
2 голосов
/ 22 мая 2009

Как правильно завершить сервлет, который не возвращает клиенту никаких данных?

Цель рассматриваемого сервлета - получить некоторые данные из запроса Ajax и запустить TCP-сообщение на аппаратном обеспечении, чтобы сообщить ему об изменении его состояния.

Вам вообще нужно указывать ответ?

Я выбрал ссылку на поток вывода и закрыл ее, это правильно?

Должен ли я отправить обратно сообщение "эй, что сработало"?

Ответы [ 4 ]

6 голосов
/ 22 мая 2009

Если вы просто хотите предоставить статус «успешно», просто верните HTTP-код 200. Вам не нужно возвращать поток, так как вы просто хотите сказать «ОК».

public void doGet(...) {
    response.setStatus(HttpServletResponse.SC_OK); 
}
3 голосов
/ 22 мая 2009

Я думаю, что отвечать приятно, если вы посмотрите что-то вроде gmail, вы заметите много POST, которые получают

ok

как ответ, мне нравится это. Это просто и кратко.

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

2 голосов
/ 22 мая 2009

В этих ситуациях я обычно возвращаю сообщение об успехе, то есть что-то вроде (в JSON)

{ success: true }

Я считаю, что иногда это помогает при отладке! Я не думаю, что есть «правильный» ответ, однако, при условии, что ваш сервлет возвращает код ответа 200 (что, я думаю, они делают, если вы не укажете иначе), тогда проблем нет.

2 голосов
/ 22 мая 2009

Ваш сервлет отправит заголовки ответа с кодом состояния и прочее в любом случае, я не понимаю, почему вы должны что-либо выводить поверх этого. :)

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