以下は私のコードです。
この場合、「非アクティブ状態が 0 秒続くとタイムアウト」と言っているため、セッションはすぐにタイムアウトします。
したがって、session.getAttribute("foo")は例外を与える必要があります。しかし、セッションがまったくタイムアウトしなかったかのように、コードは問題なく動作します。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
session.setAttribute(“foo”, “42”);
session.setMaxInactiveInterval(0);
String foo = (String) session.getAttribute(“foo”);
if (session.isNew()) {
out.println(“This is a new session.”);
} else {
out.println(“Welcome back!”);
}
out.println(“Foo: “ + foo);
}
getMaxInactiveInterval()を使用する場合も同様の問題があります。
最初にsetMaxInactiveInterval()を明示的に呼び出すと、正しい結果が得られます。ただし、プログラムで設定されていない場合、getMaxInactiveIntervalはデフォルトのセッション タイムアウト (30 分) を表示しません。代わりに、結果として常に60 秒が返されます。
私のサーバーはApache Tomcat 7です。助けてくれてありがとう