【问题标题】:What's wrong about request.getSession().setAttribute()request.getSession().setAttribute() 有什么问题
【发布时间】:2015-07-17 21:52:07
【问题描述】:

我习惯在*.java*.jsp之间传递数据,因为这是一个MVC框架,它会先通过*.java。所以我使用request.getSession().setAttribute("test", "01010101010") 保存值,然后在*.jsp 中,使用request.getSession().getAttribute("test") 获取值。 但它总是返回一个奇怪的字符串"682342348"

【问题讨论】:

  • 乍一看,我不明白为什么这不起作用。您能否向我们展示您使用该值的 JSP 片段?
  • 现在,我发现如果我在 中使用它,一切正常。但是当我在 中使用它时,它会输出奇怪的字符串....
  • 可能是 javascript 问题 - 请参阅下面的其他答案。

标签: jsp


【解决方案1】:

现在这可能是一个 javascript 问题,请尝试在 alert 参数的值周围添加引号。

改变这个:

<script>alert(<%=request.getAttribute("test")%>);</script>

到这里:

<script>alert('<%=request.getAttribute("test")%>');</script>

【讨论】:

    【解决方案2】:

    尝试将值从会话中取出时转换为字符串:

    String.valueOf(request.getSession().getAttribute("test"));
    

    【讨论】:

      【解决方案3】:

      您的 java 类和您的 JSP 可能会以某种方式获取不同的会话对象。您可以尝试比较从 session.getId() 返回的值,以确保它们相同。

      但是,如果您只想将对象从 java 类传递到 JSP,那么您可能根本不需要使用会话。相反,将数据存储为请求属性:

      request.setAttribute("test", "01010101010")
      

      【讨论】:

      • 是的,我以前用过这个,但它也返回错误数据。当我尝试使用 request.getAttribute("test").toString() 时,它会抛出异常
      【解决方案4】:

      request.getSession() - 如果它不存在,这将创建一个新会话。如果要确保会话不存在,则需要使用request.getSession(false),它不会被创建。

      【讨论】:

        猜你喜欢
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        相关资源
        最近更新 更多