在servlet中
req.getSession().setAttribute("id", id);
req.getRequestDispatcher("/filter_file/login.jsp").forward(req, resp);
在login.jsp中
当前用户:id=<%= (String)session.getAttribute("id")%>  
可以获得session值,而且正常同在 login.jsp 页面中我设置了个超链接
<a  href="<%= request.getContextPath() + "/check_inf.jsp" %>">查看当前财务状况</a>
但在在check_inf.jsp中我用
当前用户:id=<%= (String)session.getAttribute("id") %> 得到的却是null值?
请各位大侠帮忙解析一下有什么原因导致这个null的出现呀?

解决方案 »

  1.   

    用隐藏域吧。session一般不建议使用。
    是不是session失效了,或是session在途中被invalidate了。
      

  2.   

    应该用request.getAttribute("id")接受数据
      

  3.   

    如果用隐藏域不还得建个form吗? 可以直接用超链接带数据的啊 ?id= <%= (String)session.getAttribute("id")%>    <a  href=" <%= request.getContextPath() + "/check_inf.jsp?id=<%=id%>" %>">查看当前财务状况 </a>
      

  4.   

    seesion消耗的资源很多,一般情况下如果能用request能做到的尽量不要使用session,就像楼上兄弟们的建议,使用隐藏域很好啊
      

  5.   

    应该用request.getAttribute("id")接受数据,这个才是答案
      

  6.   

    应该不会获得不到值啊。你的login.jsp有没有清楚session的代码?
    如果你不想追究这个问题,你可以利用隐藏域来实现
      

  7.   

    session的有效范围为在生成session的浏览网页中,如果URL改变也就是说当前request的传递已经终止,自然会调用session的invalidate
      

  8.   

    你哪个链接是弹出窗口吧? 弹出窗口的表现有时候很怪异,跟原窗口不是一个session
      

  9.   

    超连接是不会提交表单的,所以隐藏的域也没用,试着把;jsessionid=传回去拿session试试
      

  10.   

    问题是我的这些jsp文件要放在一个过滤器里,而这个过滤器是用来过滤当前用户是否已经登陆了,即是要检测session里的id值,而如果没有这个session值不是不能访问里面的文件了吗?