Где константы метода запроса в API Servlet?

Я хочу написать

if (POST.equals(req.getMethod()))

вместо

if ("POST".equals(req.getMethod()))

но я не могу найти константные определения в API сервлета (только в HttpServletRequest, где я ожидал, что это будет).

Где они (я использую большое количество библиотек, поэтому, если кто-то их определяет, это тоже сработает)?

Ответ 1

Похоже, что Java EE 6 добавила имена методов HTTP в качестве констант в интерфейс аннотации javax.ws.rs.HttpMethod. В зависимости от вашей установки они могут быть доступны вам.

http://docs.oracle.com/javaee/6/api/javax/ws/rs/HttpMethod.html

Ответ 2

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

Конечно, вы всегда можете определить свои собственные константы, если это упростит ваш код.

Ответ 3

Эти константы определены как частные в Servlet,

public abstract class HttpServlet extends GenericServlet
    implements java.io.Serializable
{
    private static final String METHOD_DELETE = "DELETE";
    private static final String METHOD_HEAD = "HEAD";
    private static final String METHOD_GET = "GET";
    private static final String METHOD_OPTIONS = "OPTIONS";
    private static final String METHOD_POST = "POST";
    private static final String METHOD_PUT = "PUT";
    private static final String METHOD_TRACE = "TRACE";
...

Это прекрасно, просто используя имя метода буквально.

Ответ 4

В Spring (так что вне JDK тоже) вы можете использовать:

org.springframework.web.bind.annotation.RequestMethod

Это перечисление, которое предоставляет все методы HTTP

Итак, вы можете использовать RequestMethod.POST.name()

Ответ 6

Если вам интересно, почему для этого нет никаких перечислений, которые объясняются в этом вопросе и ответе: Почему HttpRequest.HttpMethod - это строка вместо Enum?

В нижней строке спецификация HTTP не ограничивает набор допустимых методов, поэтому можно использовать дополнительные методы помимо тех, которые явно указаны в спецификации.