Servlet API中的请求方法常量在哪里?

Thi*_*ilo 44 java servlets

我想写

if (POST.equals(req.getMethod()))
Run Code Online (Sandbox Code Playgroud)

代替

if ("POST".equals(req.getMethod()))
Run Code Online (Sandbox Code Playgroud)

但是我在Servlet API中找不到常量定义(只在HttpServletRequest中查找,我希望它们在那里).

他们在哪里(我使用了大量的库,所以如果其他人定义它们,那也会有用)?

Mat*_*olm 25

似乎Java EE 6将HTTP方法名称作为常量添加到javax.ws.rs.HttpMethod注释接口.根据您的设置,它们可能适用于您.

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


Mat*_*att 12

据我所知,该特定财产没有任何常数.但是,您可以查看完整的常量列表,以查看可用的内容.

当然,如果它使代码更容易编写,您总是可以定义自己的常量.


ZZ *_*der 12

这些常量在Servlet中被定义为private,

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";
...
Run Code Online (Sandbox Code Playgroud)

只是字面上使用方法名称就可以了.

  • 是的,因为错别字从来没有发生过。 (4认同)

Mat*_*s M 7

在Spring中(所以在JDK之外)你可以使用:

org.springframework.web.bind.annotation.RequestMethod
Run Code Online (Sandbox Code Playgroud)

这是一个提供所有HTTP方法的枚举

所以你可以使用 RequestMethod.POST.name()