java - If 语句中的 JSP session

标签 java jsp session

我无法准确理解 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/

相关文章:

Java EE webapp 不创建文件/文件夹

java - Spring MVC Controller 中的 JSON 参数

java - 推荐 JSP 表标签库吗?

java - EJB 命名查询首选项

ruby-on-rails - Rails - 删除 session 而不初始化新 session

java - 如何在两种情况下正确执行 WebDriverWait

java - 如何将 Java 中的 obj-c block 模拟为 Lambda?

Java Spring MVC View 渲染并将 ArrayList<CustomModel> 通过表单提交绑定(bind)回 Controller

session - ColdFusion:何时定义 session 变量?

php - 在各自的仪表板中使用 session 用户角色重定向用户