ログイン処理その1
|
これから本格的に開発に入っていきたいと思います。最初にログイン処理を考えていきたいと思います。
ログイン処理を行って、間違っていればエラーで返し、合っていればログインしてメニュー画面を表示します。 |
 |
まずは、HTMLでIDとパスワードの入力画面をつくります。IDとパスワードを入力する必要があるので、
IDとパスワード用のテキストボックスとボタンを作ります。
学校では、学生証番号が基本になっていて、Windowsのログインにも使っています。Windowsで使っているものと同じIDとパスワードを使ってログインの処理をさせます。
ログインのボタンを押すと、「login」サーブレットを呼び出すように設定しています。 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>ログイン</TITLE>
</HEAD>
<BODY>
<FORM action="login" method="POST">
<TABLE border="0">
<TBODY>
<TR>
<TD>学生証番号</TD>
<TD>
<INPUT size="10" type="text" maxlength="10" name="uid">
</TD>
</TR>
<TR>
<TD>パスワード</TD>
<TD>
<INPUT size="10" type="password" maxlength="10" name="pass">
</TD>
</TR>
<TR>
<TD colspan="2" align="right">
<INPUT type="submit" name="login" value="ログイン">
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</BODY>
</HTML> |
|
次に、Loginの処理をするサーブレットを考えていきたいと思います。
ログインの処理ではユーザーIDとパスワードを受け取り、データベースと照会してあっていればログインOKとし、同一のIDとパスワードがない場合は、エラーとして処理を戻すようにします。 |
まず、「LoginServ」というクラスを作成し、そこにログインの処理を記述して行きます。
まず最初に行うことは、ログイン画面で入力したIDとパスワードを取得することです。
フォームからの入力を取得するには「getParameter()」メソッドを使用します。
ユーザーとパスワードを取得するための記述は次のとおりです。
String uid = req.getParameter("uid");
String pid = req.getParameter("pass"); |
getParameterメソッドのでログイン画面で指定した名前を与えることでデータを取得することが出来ます。 |
取得したデータを元にしてデータベースと照合していきます。
以前に登録した生徒テーブルの値と照合し、登録されているかどうかの判断を行います。
生徒テーブル |
student_table |
id |
id |
int |
ユーザーID |
user_id |
char(6) |
パスワード |
pass |
char(8) |
氏名 |
name |
varchar(20) |
学科・学年 |
study_id |
int |
在籍状況 |
enrollment |
smallint |
登録日時 |
set_date |
datetime |
以前に登録した生徒テーブル内容です。
登録されたIDとパスワード以外に、在籍状況もチェックします。
在籍状況は(0:在籍、1:休学、2:卒業、3:退学)のいずれかの値がセットされているものとして考えて行きます。
今回は在籍している生徒のみを対象として考えます。
String sql = "SELECT * FROM student_table where user_id = '"
+ uid + "' " + "and pass = '" + pid + "' and
enrollment = 0" ; |
ユーザーIDとパスワードが合致し、在籍している生徒を検索しています。 |
「executeQuery()」メソッドを使ってデータベースの検索を行い、結果を確認します。
ResultSet result
= statement.executeQuery(sql); |
検索結果は「ResultSet」オブジェクトにセットされているので、その内容を確認します。
「ResultSet」オブジェクトの「next()」メソッドでデータを取得できます。
該当データが存在する場合は「true」、1件もデータがない場合や、該当データを全件処理した場合には、
「false」が帰ってくるので、trueの場合はログイン、falseの場合はエラーという風に処理を分けて行きます。
String url = "";
if (result.next() == true){
ログイン処理
url = "/main.jsp";
}else {
エラー処理
url = "/error.jsp";
}
RequestDispatcher rd = req.getRequestDispatcher(url);
rd.forward(req,res); |
ログインOKの場合には、「main.jsp」をセットし、
エラーの場合には、「error.jsp」をワークエリア「url」にセットします。
「RequestDispatcher」オブジェクトの
「forward」メソッドを使うことでJSPファイルを呼び出します。
ログインOKの場合は「main.jsp」、
エラーの場合は「error.jsp」ファイルを呼び出します。
|
ログイン処理の基本的な流れと、データベースへのアクセスは一通り出来ていると思います。
次回はセッション管理を含め、ログインからログアウトまでの処理を一通り行いたいと思います。 |
DataSourceを使ったMySQLのWeb出力 UP ログイン処理その2 |
  |