如何按会话在同一个jsp页面中组合Logout \ Login按钮?

时间:2014-05-26 11:48:51

标签: javascript jsp session scriptlet

我正在尝试将此scriptlet代码放在我的jsp页面中。

<%
if(session.getAttribute("UserName").toString().equals(null) || session.getAttribute("UserName").toString().equals(""))
    out.println("<input type='button' id='Loginbtn' name='Loginbtn' value='Login' onclick='Alert.render()' style='height: 25px; width: 55px'>");
else
    out.println("<form method='POST' action='Logout'><strong><input type='submit' value='Logout' id='LogoutSubmit' name='LogoutSubmit' style='height: 25px; width: 55px'></strong></form>");
%>  

问题是 - 每次只有else块工作,即使我正在切换out.println打印,登录正常,但只有else块。

我也尝试在打印之前关闭脚本位置(组合脚本和jsp)并直接放置jsp代码。只有else块可以工作。

为什么?如果有会话,我如何在登录和退出按钮之间切换?

1 个答案:

答案 0 :(得分:0)

if(session.getAttribute("UserName").toString().equals(null)如果为null则抛出空指针异常,因为你不能在null上使用点运算符。

您可以使用if(session.getAttribute("UserName")==null,因为无论变量是String还是Object,null都是相同的。

但我建议先将会话中的值拉出变量:

String username = (String)session.getAttribute("UserName");
if(username!=null && !"".equals(username.trim()))
{