检测空白HTML表单输入值

时间:2015-09-26 06:23:59

标签: servlets

当我提交包含空白数据的HTML表单时,它仍然会进入下面的else块:

    String n=request.getParameter("uname");
    String e=request.getParameter("mail");
    String p=request.getParameter("pwd");   

    if(n==null || e==null || p==null)
    {
        // ...
    } else
    {
       // ...
    }

如何确保它进入if区块?

3 个答案:

答案 0 :(得分:2)

这是因为 uname,mail,pwd 变量不为null,而是这些参数包含空字符串。

即。     UNAME = “”;     邮件= “”;     PWD = “”;

当你检查这些参数是否为空时,它会导致为false,你的else块会执行并将记录保存到数据库中。

你可以创建一个检查空字符串的方法。

 public static boolean checkEmpty(String value){
    if(!(value==null))
       return value.isEmpty();

    return true;
 }

用这个替换你的if条件:

if(checkEmpty(n) || checkEmpty(e) || checkEmpty(p)){

}

答案 1 :(得分:1)

空白提交的输入值未以null到达。相反,它们作为空字符串到达​​。 null仅表示根本没有提交输入值(即输入字段在表单中完全没有)。

如果您不想区分表单中特定输入字段的存在,请将String#isEmpty()检查添加到if块。

if (n == null || n.isEmpty() || e == null || e.isEmpty() || p == null || p.isEmpty()) {
    // ...
}

您甚至可以为此烘焙自定义实用程序方法。

public static boolean isEmpty(String string) {
    return (string == null || string.isEmpty());
}
if (isEmpty(n) || isEmpty(e) || isEmpty(p)) {
    // ...
}

你甚至可以在varargs的帮助下进一步重构。

public static boolean isOneEmpty(String... strings) {
    for (String string : strings) {
        if (string == null || string.isEmpty()) {
            return true;
        }
    }

    return false;
}
if (isOneEmpty(n, e, p)) {
    // ...
}

如果您还希望覆盖空白,请在string.isEmpty()之前将string.trim().isEmpty()替换为所有地方。

另见:

答案 2 :(得分:1)

String n=request.getParameter("uname");
if (n != null) n = n.trim();
if (n == null) n = "";

String e=request.getParameter("mail");
if(e != null) e = e.trim();
if(e == null) e = "";

String p=request.getParameter("pwd");   
if(p != null) p = p.trim();
if(p == null) p = "";

//
// only process if values for all three exist
//

if((n.length() < 1) || (e.length() < 1) || (p.length() < 1))
{
    // ...
} else
{
   // ...
}