我希望我的这个登录页面加载两次,即第一次用户输入用户名和密码,然后从 servlet 获得响应,然后它将被重定向到带有“消息”的登录 jsp 页面。
我有两个用于登录和注销的按钮。这个脚本可以像我尝试过的那样使用计数变量加载两次吗?任何其他方法也将是优选的。
另一个问题:我可以在登录成功后才开始会话,以便我可以检查每个页面上的用户是否有效?
PS:我尝试过使用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
登录.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();" >