このログイン ページを 2 回ロードする必要があります。つまり、最初にユーザーがユーザー名とパスワードを入力し、サーブレットから応答を取得すると、「メッセージ」を含むログイン jsp ページにリダイレクトされます。
ログインとログアウト用の 2 つのボタンがあります。私が試したように、カウント変数を使用してこのスクリプトを2回ロードできますか? 他の方法も優先されます。
別の問題: 各ページでユーザーが有効かどうかを確認できるように、ログインが成功した後にのみセッションを開始することはできますか?
PS: and を使用getAttribute
してみsetAttribute
ましたが、機能しません。
if(userExists) {
// check if password matches username or not
if (pwd.equals(rs.getString("password"))) {
System.out.println("Login Successful");
message = "ValidUser";
} else {
message = "Invalid Password";
System.out.println("Invalid Password from userExists");
}
} else {
message = "Invalid Username";
System.out.println("Invalid Username");
}
request.getSession().setAttribute("message", message);
request.getSession().setAttribute("count", count); // count = 1;
response.sendRedirect(dest); // dest ==> same login.jsp page
Login.jsp :-
<script type="text/javascript">
var msg = <%= request.getAttribute("message") %>;
var cnt = <%= request.getAttribute("count") %>;
function log() {
if (cnt != 1) {
// document.userlogin.login.type = "submit";
alert("Form Submitted");
alert("count is " + cnt);
alert("msg = " + msg);
} else {
document.userlogin.login.type = "button";
if (msg == "ValidUser") {
document.userlogin.login.disabled = true;
document.userlogin.logout.disabled = false;
} else if (msg == "Invalid Password") {
alert("Invalid Password");
document.userlogin.userpass.focus();
} else if (msg == "Invalid Username") {
alert("Invalid Username/ Please register and then login");
document.userlogin.username.focus();
} else {
alert("msg = " + msg);
}
}
}
</script>
<form name="userlogin" method="POST" action="../Login" onload="log();" >