2013-02-22 68 views
6

我有一个HTTP请求javax.servlet.http.HttpServletRequest传入一个值,用于在使用JAX-RS的Java Web服务中处理的某些代码中。 Java中的POST函数消耗application/json。有两种可能的值传入请求中,调用一个X和另一个Y,假设都是字符串。该请求需要至少两个可能的值之一被视为“有效”。HTTP请求中缺少元素 - 空还是空?

当请求到来时,如果X提供和Y留出全部的要求,什么是检查是否Y是有正确的方法是什么?你会检查是否Y.isEmpty()Y == null?提供X并不保证Y存在,反之亦然。

+1

你在说Servlet API的上下文吗?即你在谈论'ServletRequest#getParameter()'等等?请澄清/标记至少涉及的API。标准Java SE API中没有这样的东西。 – BalusC 2013-02-22 16:10:25

+1

用更多的信息更新了这个问题。它是一个利用JAX-RS的java web服务,并且特定的功能正在消耗JSON – Walls 2013-02-22 16:15:37

+0

在涉及'javax.servlet。*'API的未来问题中,请使用'[servlets]'标签。 – BalusC 2013-02-22 16:16:46

回答

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"); // "" 

有道理,对不对?

+0

感谢您的澄清,这个答案正是我需要的。再次感谢,我会记住将来的servlet标签。 (会接受什么时候让我) – Walls 2013-02-22 16:20:56

+0

不客气。 – BalusC 2013-02-22 16:28:35

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 
} 
+0

您应该在if子句之前移动'String value = httpServletRequest.getParameter(“Y”);'''''''''''''''''''''''''''' – 2013-02-22 16:16:17

+1

该代码不打算成为单个代码块。我只是指出如何检查一个参数是否通过。还有如何使用它来检查参数的值。 – mightyrick 2013-02-22 16:17:42

+3

哦,我明白了,所以请求参数两次更多的是教学选择,以显示如何处理它;我同意,这使得每一行的目的更清晰。 – 2013-02-22 17:33:53