在Java中检查请求参数是否等于一个字符串

3

我想用Java实现这个功能。

if(request.getParameter("page") == "page1")
// page1
else if(request.getParameter("page") == "page2")
// page2

对于刚接触Java的人来说,为什么上面的代码不起作用,以及我想要做的最好方法是什么?

2个回答

11

由于String是一个对象,而不是原始类型,所以==只会通过引用比较它们,而不是对象的内部表示。你需要使用equals()来进行比较。

if("page1".equals(request.getParameter("page")))
// do something
else if("page2".equals(request.getParameter("page")))
// do something else
(注意,这种样式的作用是为了防止潜在的NullPointerException。例如当参数返回null时,request.getParameter("page").equals("page1"))

相关问题:


与问题无关,JSP不是执行此任务的最佳场所,请考虑使用Servlet


两种风格之间的差异,你说得很好。我从未这样想过。 - jamesmortensen

1
您正在使用错误的等号。请尝试这个:
  if(request.getParameter("page") != null) {
    if(request.getParameter("page").equals("page1")) {
         // do stuff
    } else if(request.getParameter("page").equals("page2")) {
         // do other stuff
    }
  }

== 比较对象引用以查看它们是否相等,而 .equals 检查这些对象引用的值是否相等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接