【问题标题】:use of getsession() in http sessions在 http 会话中使用 getsession()
【发布时间】:2015-09-28 13:00:51
【问题描述】:

为什么下面的代码sn-p总是进入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();
    }

【问题讨论】:

    标签: http servlets


    【解决方案1】:

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

    在你的代码中

    HttpSession session=request.getSession();
    

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

    如果要检查是否存在会话,则仅返回 HttpSession 对象,否则返回 null,则可以使用此方法的一个重载版本

    HttpSession session=request.getSession(false);
    

    另见

    【讨论】:

    • 我从问题中引用:“总是进入else块”
    • getSession() 应该总是返回一个非空实体。那么它是如何进入 else 块的呢?关于可能是什么原因的任何想法?
    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    相关资源
    最近更新 更多