タイムアウト画面を表示させるには

SAStrutsというかServletネタ。

アプリケーションサーバー(Tomcatとか)でレルムのフォーム認証していたとする。一定時間操作がなくてセッションが破棄された時に保護されたページにアクセスするとweb.xmlで指定したページが表示される。そのログイン画面を下記のように記述するとタイムアウト時に任意の画面へ遷移出来る。

login.jsp

<%@page pageEncoding="UTF-8"%>
<%
	if(session.isNew()) {
		response.sendRedirect(request.getContextPath() + "/sessionIsNew.html");
		return;
	}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login</title>
<link rel="stylesheet" type="text/css" href="../css/sa.css" />
</head>
<body>
<form method="post" action="<% out.print(request.getContextPath()); %>/j_security_check">
<table>
<tr>
<td>ユーザ名:</td>
<td><input type="text" name="j_username"></td>
</tr>
<tr>
<td>パスワード:</td>
<td><input type="password" name="j_password"></td>
</tr>
</table>
<input type="submit" name="login" value="ログイン"/>
<form>
</body>
</html>

ポイントは

<%
	if(session.isNew()) {
		response.sendRedirect(request.getContextPath() + "/sessionIsNew.html");
		return;
	}
%>

session.isNew()でセッション生成のタイミングを確認し、セッション開始時であればリダイレクトする。


これ意外とweb上に情報がないのでメモ。スターかブクマ付くかなぁ?