在http会话中使用getsession()

时间:2015-09-28 13:00:52

标签: http servlets

以下代码段如何始终进入else块?

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out=response.getWriter();

        request.getRequestDispatcher("link.html").include(request, response);

        HttpSession session=request.getSession();
        if(session!=null){
        String name=(String)session.getAttribute("name");
        out.print("Hello, "+name+" Welcome to Profile");
        }
        else{
            out.print("Please login first");
            request.getRequestDispatcher("login.html").include(request, response);
        }
        out.close();
    }

1 个答案:

答案 0 :(得分:0)

  来自java doc的

getSession()返回与此请求关联的当前会话,   或者如果请求没有会话,则创建一个。

在您的代码中

HttpSession session=request.getSession();

它将检查与请求关联的当前会话,如果没有,则将创建一个。 因此,检查if(session!=null){将始终为真。

如果你想检查会话是否存在那么只返回HttpSession对象,否则返回null,那么你可以使用这个方法的一个重载版本

HttpSession session=request.getSession(false);

另见