我想我的這個登錄頁面加載兩次,即第一次用戶輸入用戶名和密碼,然後從servlet獲得響應,然後它將被重定向到用「messages」登錄jsp頁面, 。JSP:登錄頁面到servlet登錄頁面消息傳遞
我有兩個用於登錄和註銷的按鈕。這個腳本可以通過使用count變量加載兩次,因爲我試過了?任何其他方法也將是首選。
另一個問題:只有登錄成功後我纔可以開始會話,以便我可以檢查每個頁面上的用戶是否有效?
P.S:我嘗試過使用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();" >
他也可以使用更寬容的'page.findAttribute(「message」)'。另外,如果'message'是一個String(就像它的名字所暗示的那樣),那麼JavaScript代碼片段中恰當的語法就是:'var msg ='<%= session.getAttribute(「message」)%>';'。 –
@AlonsoDominguez:謝謝你指出這個錯誤。 –
好吧......我只是指出了「msg」JavaScript變量的語法......另一個('cnt')似乎是一個整數(因爲它只是一個計數器),因此不需要引號。 –