アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
現在私はスケジュール管理システムを作っていますけれども
セッションを使ってユーザー情報を格納したい(ログイン後の画面にユーザー情報を移す)
ときはどうしたらいいでしょうか。
後セッションで格納したユーザー情報をスケジュール編集ファイル(別ファイル)に引き出す方法
はございますか?
よろしくお願いします。
(スケジュールの内容は文字数の都合により割愛します。)

ログインチェック
<%
String username = request.getParameter("name");
String uid = request.getParameter("uid");
String pass =request.getParameter("pass");
String msg = ""; // エラーメッセージ表示用変数
String html = "";
Boolean isLogined= false; // ログイン済みフラグ

// out.println("UID="+uid);
// out.println("PASS="+pass);

if( null == uid && null == pass ){
//初回表示、もしくはログインIDと
//パスに何も記入されていないので処理を行わない
out.println("ログインIDとパスワードを入力してください。");
}else{
//ログインIDとパスワードがNULLではないので
//認証処理を実行する。

/*(3)SQL文の作成。*/
String sql="select * from user_table u left join a_table a on u.user_ID = a.u_name where user_ID='"+uid+"' and PW='"+pass+"'";

/*(4)問い合わせ*/
ResultSet rs=sta.executeQuery(sql);

while(rs.next()){
isLogined = true;
html += "<span style='visibility:hidden;' id='d_"+rs.getString("s_date")+"'>"+rs.getString("MEMO")+"</span>";
username = rs.getString("name");
}
//ログイン判定を行う ここでは失敗するように設定
if( isLogined )
{
//ログイン成功
//ログイン者の名前を取得 本来はDBから取得する
isLogined = true;
}else{
//ログインに失敗したので
//メッセージ表示用変数にエラーメッセージを格納
msg = "ログインIDとパスワードが違います。";
}
}
%>


ログインフォーム(画面)
<%
if(!isLogined)
{
%>
<form action="scheduletop1.jsp" name="roguinok" method="post">
<p>ログイン</p>
<p class="inputTitle">ユーザーID</p><p><input type="text" name="uid" size="20" maxlength="12" autocomplete="OFF" /></p>
<p class="inputTitle">パスワード</p><p><input type="password" name="pass" size="20" maxlength="12" autocomplete="OFF" /></p>
<p><INPUT type="submit" value="ログイン"></p>

ログインできたら利用者名を表示
<%
}else{
out.println("利用者名:<span class='userName'>" + username + "</span><inpu type='hidden' name='UID' id='UID' value='"+uid+"'/>" );
out.println(html);
}
%>

スケジュール変更(scheduletop1.jspがログイン後スケジュール画面です。)

<%@ page language="java" contentType="text/html; charset=Windows-31J"
pageEncoding="Windows-31J"
%>


<%!
private String createOption(int start,int end){
StringBuffer builder = new StringBuffer();
for(int i=start;i<=end;i++){
builder.append("<option value ='"+i+"'>"+i+"</option>");
}
return builder.toString();
}
%>


<html>
<head>
<title>スケジュールの編集・削除1</title>
</head>
<body>
<h1>日付を選択してください。</h1>
<form action="ScheduleHenkou2.jsp" method="POST">
<tr>
<th align="right">日付:</th>
<td>
<select name="sdate_year"><%=createOption(2000,2030)%></select>年
<select name="sdate_month"><%=createOption(1,12)%></select>月
<select name="sdate_day"><%=createOption(1,31)%></select>日
</td>
</tr>

<p>
<input type="submit"value="OK">
<input type="button"value="キャンル"onClick="location.href='http://localhost:8080/scheduletop1.jsp'">
</p>
</form>
</body>
</html>

A 回答 (1件)

ログイン成功したらセッションにセットする処理を追加する。


※本当はデータクラス(データを保持するだけのクラス)にユーザ情報をセットして
それをセッションに格納するのがスマートな方法なのだが・・・。
たぶんJSPだけでサーブレットとか使ってないようなのでユーザの値をひとつずつ
設定するやりでいきましょう。

session.setAttribute("uid", uid);
session.setAttribute("pass", pass);
session.setAttribute("userName", userName);

こんな感じで。
つぎに「scheduletop1.jsp」でセッションを取り出して表示する。

<%= session.getAttribute("uid") %>

こんな感じで。

予断ですがSQLのところでStatementを使用していると思いますが
セキュリティの関係上PreparedStatementを使用したほうがいいですよ。
趣味程度ならかまいませんが・・・。
使い方は、
「select * from user_table u left join a_table a on u.user_ID = a.u_name where user_ID= ? and PW= ?」
のようにパラメータを「?」にしといて後で値を設定してから実行します。
使い方はこのサイトみてちょ。

http://www.javadrive.jp/servlet/database/index10 …
    • good
    • 0
この回答へのお礼

返信遅れて申し訳ありません。
回答とサイトを参照して無事ログイン後に情報を保護できました。
ありがとうございました。

お礼日時:2012/02/24 00:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!