You might have a scenario in which a servlet wants to use only a previously-created session. It might not make sense for the checkout servlet, for example, to start a new session.
So there’s an overloaded getSession(boolean) method just for that purpose. If you don’t want to create a new session, call getSession(false), and you’ll get either null, or a pre-existing HttpSession.
The code below calls getSession(false), then tests whether the return value was null. If it was null, the code outputs a message and then creates a new session.
Q:
Q: Isn’t the code above just a stupid, inefficient way to do the same thing as the opposite page? In the end, you still created a new session.
A:
A: You’re right. The code above is just for testing how the two different versions of getSession() work. In the real world, the only time you’d want to use getSession(false) is if you do NOT want to create a new session. If your goal is to create a new session, but still respond differently if you know this is a new (versus pre-existing) session, then use the no-arg getSession() method, and simply ask the session if it’s new using the HttpSession isNew() method.
Q:
Q: So it looks like getSession(true) is exactly the same as getSession()...
A:
A: Right again. The no-arg version is a convenience for those times when you know that you always want a session, new or existing. The version that takes a boolean is useful when you know that you don’t want a new session, or when the decision of whether to make a new session happens at runtime (and you’re passing a variable into the getSession(someBoolean) method).