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