Java HttpSession

前端 未结 5 903
眼角桃花
眼角桃花 2021-02-02 16:51

Is HttpSession in java servlet is created only after

HttpSession s = request.getSession();

?

In my code I didn\'t write that, but when

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-02 17:31

    Read JavaDocs, it says clearly:

    This says, request.getSession()

    Returns the current session associated with this request, or if the request does not have a session, creates one.

    And the other variant request.getSession(isCreate)

    Returns the current HttpSession associated with this request or, if there is no current session and create is true, returns a new session.

    If create is false and the request has no valid HttpSession, this method returns null.

    To make sure the session is properly maintained, you must call this method before the response is committed. If the container is using cookies to maintain session integrity and is asked to create a new session when the response is committed, an IllegalStateException is thrown.


    Update

    On a bit research, I have found that Session is not created unless request.getSession() is called somewhere. Since, The servlet container uses this interface to create a session between an HTTP client and an HTTP server. There are good chances that your Servlet container creates the Session for you by default.

    refer:

    1. Java Doc HttpSession
    2. Discussion on JavaRaunch: is HttpSession created automatically?

    But, to be safer side, use request.getSession() to get session, and use request.getSession(false) only when you need to verify if a session has already been created.

提交回复
热议问题