我在准确了解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有关如何以及为什么这样做的信息。

09-05 20:28
查看更多