戻る
以下のようなソースコードを用意します。
■ index.jsp
<%@ page import="java.util.*, java.io.*" contentType="text/html; charset=Shift_JIS" %>
<%-------- $Id: index.jsp,v 1.2 2002/10/21 07:32:56 kishi Exp kishi $ ----------------------%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>Session管理の試験</title>
</head>
<body>
<div align=center style="color:blue; font-size:24pt">
Session管理の試験
</div>
<hr>
<a href="../">戻る</a>
<ol>
<li><a href="login.jsp">JSPでセッション管理する</li>
</ol>
</body>
</html>
■ login.jsp
<%@ page import="java.util.*, java.io.*" contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="ua" scope="session" class="common.UserAuth" />
<%-------- $Id: login.jsp,v 1.2 2002/10/21 07:32:57 kishi Exp kishi $ ----------------------%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>Session管理の試験</title>
</head>
<body>
<div align=center style="color:blue; font-size:24pt">
Session管理の試験(JSPによる)
</div>
<hr>
<a href="./">戻る</a>
<!-------------------------- ログインフォーム ---------------------------------------->
<form name="login" method="post" target="_self" action="login.jsp">
IDを入力後、送信ボタンをクリックしてください
<input type="text" name="id" value="">
<input type="submit" name="submit" value="送信">
<input type="reset" name="reset" value="クリア">
</form>
<hr>
<%
/* DEBUG */
// カウンターをインクリメントする
ua.addCounter();
out.println( ua.isOK() + "<br>" );
out.println( ua.getCounter() + "<br>" );
out.println( request.getMethod() );
%>
<%
// 既に認証済みの場合は以下のメッセージを表示
// 本当はこんな回りくどいことはしないで、さっさとユーザTOP画面へリダイレクトするのが普通
// ただ説明上便宜的に・・・
if( ua.isOK() ){
%>
<table border=0>
<tr>
<td> 既に認証済みの方はこちらから⇒</td>
<td> <a href=user_top.jsp>ログイン</a> <t/d>
</tr>
</table>
<%
}
%>
<%
// フォームから取得したIDの内容を評価する
if( request.getMethod().equals("POST") ){
// IDが正当かどうかの判断 ⇒ これもDB経由で取得するのが普通
if( request.getParameter("id").equals("kishi") ){
// 認証OKなら、ユーザ認証管理用BEANのOKのフラグを立てる
ua.setStatus( true );
%>
<jsp:forward page="user_top.jsp" />
<%
} else {
%>
<p>
お客のIDは無効です!⇒<%=request.getParameter("id")%>
<%
}
}
%>
</body>
</html>
■ logout.jsp
<%@ page import="java.util.*, java.io.*" contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="ua" scope="session" class="common.UserAuth" />
// $Id: logout.jsp,v 1.1 2002/10/21 07:31:19 kishi Exp kishi $
<%
// ユーザ認証をNGにリセット
ua.setStatus(false);
%>
<html>
<head>
<!--- メインページへリダイレクト --->
<meta http-equiv="REFRESH" content="0; URL=/MyTest/session-control-test/">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
</head>
</html>
■ user_top.jsp
<%@ page import="java.util.*, java.io.*" contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="ua" scope="session" class="common.UserAuth" />
<%-------- $Id: user_top.jsp,v 1.2 2002/10/21 07:32:58 kishi Exp kishi $ ----------------------%>
<%
if( !ua.isOK() ){
%>
<html>
<head>
<!--- メインページへリダイレクト --->
<meta http-equiv="REFRESH" content="0; URL=/MyTest/session-control-test/">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
</head>
</html>
<%
} else {
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>ユーザトップ画面</title>
</head>
<body bgcolor=#ccffff>
<div align=center style="color:blue; font-size:24pt">
TOP画面へようこそ!
</div>
<hr>
<a href="./">戻る</a>
<hr>
<%
out.println( ua.isOK() + "<br>" );
%>
<hr>
<a href=logout.jsp>ログアウト</a>
</body>
</html>
<%
}
%>
■ UserAuth.java
package common;
import java.util.*;
//-------------------------------------------------------------
// Author: Y.Kishi
// $Id: UserAuth.java,v 1.1 2002/10/21 07:34:28 kishi Exp kishi $
// ユーザ認証をつかさどります
//-------------------------------------------------------------
public class UserAuth {
private boolean status = false;
private int counter = 0;
public UserAuth(){
}
public boolean isOK(){
// 認証済みかどうかを返す
return status;
}
public void setStatus(boolean status){
this.status = status;
}
public void addCounter(){
this.counter++;
}
public void resetCounter(){
this.counter = 0;
}
public int getCounter(){
return this.counter;
}
}