问题描述
- jsp中session无法获取值
-
流程是这样的,登录,采用ajax根据用户名把密码从数据库取出来,再和用户输入的密
码对比,我在取密码的时候,就已经设置了session值(代码1),密码匹配则跳转到主
页面,主页面(index.jsp)是一个用frameset设置的框架(代码2),我想在其中一个
frame(admin_top.jsp)显示用户名,用作欢迎信息(代码3),但是呢,session取出来的值是NULL。
我在(代码1)中输出了session,值也没错。这是为什么呢?麻烦大家给点意见;代码1:
//这句SQL语句要改 String sql ="select Admin_Pwd from tb_admin where Admin_Account="+"'"+username+"'"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); if (rs.next()) // 说明查询到了客户记录 { HttpSession session = request.getSession(); session.setAttribute("adminUser",username); System.out.println(username+" "+session.getAttribute("adminUser")); String password = ""; password = rs.getString(1); out.write(password); //System.out.println(password); } else { out.write("nouser"); }
代码2
<frameset rows="64,*" frameborder="NO" border="0" framespacing="0"> <frame src="BackStage/admin_top.jsp" noresize="noresize" frameborder="NO" name="topFrame" scrolling="no" marginwidth="0" marginheight="0" target="main" /> <frameset cols="186,*" rows="860,*" id="frame"> <frame src="BackStage/left.jsp" name="leftFrame" noresize="noresize" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" target="main" /> <frame src="BackStage/customer_manage.jsp" name="main" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" target="_self" /> </frameset> </frameset> <noframes> <body> <%=session.getAttribute("adminUser")%> </body> </noframes>
代码3
<td width="78%" height="64" class="admin_txt">管理员:${SessionScope.adminUser} 您好,感谢登陆使用! <object> 系统时间: <embed style="RIGHT: 390px; POSITION: absolute; TOP: -12px" align=center src=BackStage/images/Time.swf width="100" height="60 " type=application/x-shockwave-flash wmode="transparent" quality="high";> </embed> </object></td>
解决方案
${SessionScope.adminUser}是不是大小写错了${sessionScope.adminUser}
解决方案二:
使用EL的话, 可以这样调用${sessionScope.variable}来获取值.variable为你设定的key值,那应该是大小写的问题
解决方案三:
在你返送ajax之前,session中至少应该没有adminUser这一个key吧,所以即便你登录成功了,admin_top.jsp中显示的忍然是上一次的结果,只有在ajax登录成功之后让admin_top.jsp刷新一下才可以看见用户名adminUser的值
时间: 2024-08-30 14:52:55