HTTP请求中缺少元素 - 空或空?

时间:2013-02-22 16:08:01

标签: java servlets jax-rs

我有一个HTTP请求javax.servlet.http.HttpServletRequest,它传入一个值,用于使用JAX-RS在Java Web服务中处理的某些代码中。 Java中的POST函数正在使用application/json。有两个可能的值要传递给请求,调用一个X而另一个Y,假设两个都是字符串。该请求要求至少两个可能值中的一个被视为“有效”。

当请求进入时,如果提供了X并且Y完全不在请求中,那么检查Y是否存在的正确方法是什么?你会检查Y.isEmpty()还是Y == null?提供X并不保证Y存在,反之亦然。

2 个答案:

答案 0 :(得分:13)

如果没有像这样指定参数,

http://example.com/context/servlet?x=foo

然后它将返回null

String x = request.getParameter("x"); // "foo"
String y = request.getParameter("y"); // null

如果指定了参数,但没有这样的值,

http://example.com/context/servlet?x=foo&y

然后它将返回一个空字符串:

String x = request.getParameter("x"); // "foo"
String y = request.getParameter("y"); // ""

有道理,对吧?

答案 1 :(得分:1)

测试请求中是否存在参数

httpServletRequest.getParameter( "Y" ) == null

以下代码测试参数的值(如果存在)

if ( httpServletRequest.getParameter( "Y" ) != null )
{
    String value = httpServletRequest.getParameter( "Y" );

    // Put your test code here.  Include a empty value check
}