jsp页面中判断session为空

<%
String userName = session.getAttribute("userName").toString();
%>
这样写,首次登陆会报错,但是:
<%
String userName = session.getAttribute("userName");
%>
这样写就不报错了,为什么,请解释?
上面写错了:
改成:String userName = (String)session.getAttribute("userName");
就正常了,麻烦大家解释,谢谢!

空指针异常,解释如下:
session.getAttribute("userName“)首次返回值肯定是null,
因此 String userName = null, 然后你后调username.tostring();就相当于写null.toString();
明显空指针。

第二种写法虽然也返回null,但是String username = (String)null,这句没有语法错误,返回结果是null。

呵呵,明白了吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-15
jsp中判断session为空的办法是从session取值:
比如代码从session中取adminname;如果是null,证明session是空的。
<% String name=(String)session.getAttribute("adminname");
if(name!=null){%>
+显示内容
<%}else{ %>
<%response.sendRedirect("index.jsp"); %>
<%} %>本回答被网友采纳
第2个回答  2012-06-01
首先要弄清楚session.getAttribute()的返回值的数据类型,再看看有没有toString()方法。
第3个回答  2018-04-15
首次登陆,session里面还没有“userName”得嘛,getAttribute得到的结果就是null啊,然后你又调用null的toString()方法,就会报NullPointerException啊
第4个回答  2018-03-31
首次登陆session.getAttribute("userName")为NULL,而NULL.toString()会报错。