我想从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