我想从HttpServletRequest中读取一个参数,并检查它是否符合某些条件。所以这三个条件是


参数的值只能包含字母数字(仅ASCII字符),下划线和破折号
它不能以破折号开头。
最长为200个字符。


因此,我编写了以下代码来检查它是否符合上述条件。

String tempParameter = request.getParameter("X");
if (tempParameter.matches("^[\\u0000-\\u007F]*$")
    && tempParameter.length() <= 200
    && !(tempParameter.substring(0, 1)).equals("-")) {
      A = tempParameter;
    }


因此,我运行了servlet,并在请求中将“ X”的值作为“ -sample”传递,变量“ A”为空(看起来正确)。然后,我在请求中传递“ X”的值作为“样本”,变量“ A”被分配为“样本”(仍然正确)。但是,如果我将“ X”的值更改为“ -sample”,变量“ A”将被分配为“ sample”(不应该发生)。短跑似乎在请求中被忽略。我可以在这里知道我的代码有什么问题吗?抱歉,如果我缺少明显的内容。谢谢。

更新:如果我重新启动Web应用程序,代码似乎可以正常运行,但是在没有Dash的任何请求之后,它将忽略Dash。

最佳答案

您在哪里声明A

似乎代码是正确的,但是您的变量保留了过去的结果。

尝试在A = null块中设置else

10-06 12:50