質問: req.getSession(); } ``` 出力結果 ---- セッションの値org.apache.catalina.session.StandardSessionFacade@480a871f not null --- このコードの前にセッションを作っていないので、sessionの値がnullになることは間違いないと思うのですが、なぜかifの分岐で処理がelseに進みません。 セッションの値をSystem.out.printlnで出力すると謎の値が出てきます。これは何なのでしょうか?教えていただけませんか。
回答: 「nullになるはずの場面でnullになりません」の前提条件が書かれていないので、明確な回答ではないかもしれませんが、HttpSessionが **nullになりそうでならない場面** はあります。 * ブラウザにセッションクッキーが残っている(JSESSIONID)が残っているため、コンテナが新しいセッションと認識しない * JSPから画面遷移した = デフォルトではJSPをレスポンスしたタイミングでJSESSIONIDが発行され、HttpSessionが生成されます。 * サーブレットやJSPから **リダイレクト** した 他にもフレームワークなどの仕様によってHttpSessionが常に発行(or再利用)されるものも、いくつかあります。 一番簡単にnullの状態を試すには、ブラウザのクッキーを破棄した後、サーブレットへ直接リクエストを飛ばすと、HttpSession.getSession(false) は null になります。 ご参考までに。