【问题标题】:How to compare session attribute and string java如何比较会话属性和字符串java
【发布时间】:2017-02-14 11:36:21
【问题描述】:

我有一个会话属性和一个相同的字符串:

    out.println("<br>");
    out.println(request.getSession().getAttribute("token").toString());
    out.println("<br>");
    out.println(hidden_token);
    out.println("<br>");
    out.println(request.getSession().getAttribute("token").toString() == hidden_token);

但我得到了一个意想不到的结果

07581d61db9213eb4549b12388f8c106
07581d61db9213eb4549b12388f8c106
false 

【问题讨论】:

  • 您正在检查它们是否是同一个对象 (==)。如果您想查看两个对象是否“相等”,请使用equals()(其中“相等”表示方法的具体实现意味着什么)。在equals()String 实现中,如果它们的内容是相同的字符序列,则它们被认为是相等的。
  • 相同的结果与等号:(
  • 如果 equals 不起作用,请尝试修剪它们:request.getSession().getAttribute("token").toString().trim().equals(hidden_token.trim())
  • 谢谢,现在可以了,修剪很有帮助
  • 所以你意想不到的原始结果(false)毕竟是正确的:两个字符串不同。仅通过视觉上比较两个字符串很难捕捉到前导和尾随空格。出于这个原因,当我为调试记录或打印字符串变量时,我几乎总是用引号将它们打印出来。

标签: java jakarta-ee glassfish string-comparison


【解决方案1】:

使用

request.getSession().getAttribute("token").toString().equals(hidden_token)

【讨论】:

  • 您能解释一下为什么使用equals 方法吗?或者提供equals== 之间的简要比较。没有 cmets 的单行代码是没有用的。
猜你喜欢
  • 1970-01-01
  • 2012-02-14
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
相关资源
最近更新 更多