我无法准确理解 JSP 在 session 方面的工作原理...基本上我在不同的 JSP 中设置 session ,如下所示:
<%
String category = request.getParameter("category");
session.setAttribute("category", category); %>
然后在另一个页面中,我使用 if 条件根据已发布的类别生成 HTML,例如:
<% String category = (String) session.getAttribute("category");
if(category == "movie") {
out.println("Movie Details");
} else if (category == "music") {
out.println("Music Details");
} %>
但似乎两个 if 语句都没有被命中,但如果我实际上打印出类别变量,它就会正确打印出来,即正在显示电影或音乐。是否有一些我没有掌握的 session 概念?我搜索了无数的页面试图找到这个问题的答案:/提前致谢。
最佳答案
您比较字符串的方式是错误的。您应该使用 equals(..)
而不是 ==
==
检查实例是否相同,而 .equals(..)
检查两个字符串是否具有相同的内容。你很少对前者感兴趣。
因此,对于对象(与基元不同,其中 ==
是正确的方法),请使用:
if (foo.equals(bar)) { .. }
当您拥有一些 java 和 servlet API 经验时,您应该考虑 JSP 的一些最佳实践。最重要的一点是不要在 JSP 中编写 Java 代码。 Here is an extensive explanation如何以及为何这样做。
关于java - If 语句中的 JSP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5627571/