其他声明在Servlet中不起作用

时间:2015-09-15 14:31:17

标签: java servlets web

任何人都可以告诉我为什么以下代码中的else语句不起作用。我是java的初学者。

global $var

3 个答案:

答案 0 :(得分:1)

你的其他还不够,因为还有其他两个案例。首先,如果cookie名称等于“特殊”,则为else,然后为else,如果名为“special”的cookie的值不为null,则为else。而不是用两个重复的elses阻塞代码,这里最好设置一个布尔值,如下所示:

try (PrintWriter out = response.getWriter()) 
{
    request.getRequestDispatcher("link.html").include(request, response);
    String u = null;
    Cookie cookies[] = request.getCookies();
    Boolean blnFoundSpecialCookieWithValue = false; //initialize to false
    for (Cookie cookie : cookies) 
    {
        if ((cookie.getName()).equals("special")) 
        {
            String name = cookie.getValue();
            if (!name.equals(u)) 
            {
                blnFoundSpecialCookieWithValue = true; //set boolean
                out.print("<b>Welcome to Profile</b>");
                out.print("<br>Welcome, " + name);
            }
        }
    }
    //use boolean here to minimize number of else blocks needed
    //and not have to repeat the out.print()s
    if(!blnFoundSpecialCookieWithValue)
    {
        out.print(" LogIn First ");
        request.getRequestDispatcher("login.html").include(request, response);
    }
}

答案 1 :(得分:1)

那是因为u的值为空。

答案 2 :(得分:0)

在您的代码中,u等于null,然后您获得String名称并且它等于某事,在if语句中,您检查name } doens等于u,它将永远为真,而else将不会被执行。