戻る
以下のようなソースコードを用意します。

■ 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;
	}
}

inserted by FC2 system