【问题标题】:not able to retrieve session attributes when i navigate through JSP pages当我浏览 JSP 页面时无法检索会话属性
【发布时间】:2012-12-17 06:50:27
【问题描述】:

我正在开发 eclipse juno 和 apache 服务器。
我有 3 页:

  • login.jsp(此页面然后重定向到 servlet(Validation.java) 进行登录验证,如果有效则导航到 search.jsp)
  • search.jsp
  • fill.jsp

    我在 Validation.java 中设置了会话变量的值,如下所示
    String s_user=request.getParameter("n_user");
    HttpSession session=request.getSession(true);
    session.setAttribute("ses_user",s_user);


    和这样的打印值:
    String s =(String)session.getAttribute("ses_user"); System.out.println(s);
    并在每个页面上打印会话值,但每次当我浏览这些页面时,它都会创建新的 sessionID

我已经检查过了

System.out.println("session ID"+request.getSession(false));

为什么我没有得到相同的会话 ID,也没有得到相同的原因?


login.jsp:

<form name="loginform" method="post" action="Validation"  >
    <br><br>
    <table width="300px" align="center" style="background-color:#C1CDCD;">
        <tr><td colspan=2></td></tr>
        <tr><td colspan=2> </td></tr>
        <tr>
         <td><b><font color="#00008B">Login Name</font></b></td>
         <td><input type="text" name="n_user" value=""></td>
        </tr>
        <tr>
            <td><b><font color="#00008B">Password</font></b></td>
            <td><input type="password" name="n_pass" value=""></td>
        </tr>

        <tr>
                <td></td>
                <td><input type="submit" name="Submit" value="Submit" onclick="return validate()"></td>
        </tr>
        <tr> <td colspan=2> </td></tr>
    </table>


</form>

【问题讨论】:

  • 我认为您需要获取会话用户而不是会话 ID
  • @MohammodHossain:是的,我想检索会话值。
  • 你能显示你的html代码吗?
  • 您的浏览器是否禁用了cookies

标签: java jsp jsp-tags


【解决方案1】:

System.out.println("session ID" + (String)(request.getSession().getAttribute("ses_user")));

您将在会话中设置属性值。 SessionId 已更改,因为验证后您创建了新会话。

【讨论】:

    【解决方案2】:
         //set session  
        HttpSession session=request.getSession(true);
        session.setAttribute("ses_user",s_user); 
    
            // get session
    
      String userid = (String)session.getAttribute("ses_user");
    if(userid  != null){
    // do something
    }
    

    【讨论】:

    • 我做了同样的事情,但无法在 fill.jsp 或 search.jsp 上检索会话值
    • 您确定,s_user 不为空吗?添加
    • 我已将此 添加到我的 login.jsp 中。但问题仍然相同
    • 我在 fill.jsp 上什么都没有,但我只是打印用户的会话值
    【解决方案3】:

    您应该只使用不带布尔参数的HttpSession session=request.getSession()

    session=request.getSession()session=request.getSession(true) 相同

    【讨论】:

    • 这有什么问题?...它将为每个登录的新用户创建新会话
    • 是的,它将为每个新用户创建新会话。另请查看您的浏览器中是否禁用了 cookie
    • 我已经检查了默认浏览器设置并启用了我的 cookie..nt 没有希望
    • 这个String s =(String)session.getAttribute("ses_user"); System.out.println(s); 的输出是什么
    • 如果我在 Validation.java 上打印.. 它显示正确..bt 如果我在 search.jsp 或 fill.jsp 上打印它正在打印 NULL
    猜你喜欢
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多