2013-08-22 167 views
0

我想我的這個登錄頁面加載兩次,即第一次用戶輸入用戶名和密碼,然後從servlet獲得響應,然後它將被重定向到用「messages」登錄jsp頁面, 。JSP:登錄頁面到servlet登錄頁面消息傳遞

我有兩個用於登錄和註銷的按鈕。這個腳本可以通過使用count變量加載兩次,因爲我試過了?任何其他方法也將是首選。

另一個問題:只有登錄成功後我纔可以開始會話,以便我可以檢查每個頁面上的用戶是否有效?

P.S:我嘗試過使用getAttributesetAttribute,但他們不工作。

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();" > 

回答

0

的一個問題,我可以看到的是,在您的.jsp頁面您正在尋找在request對象messagecount屬性這實際上是存在於session不在request。 所以更改如下:

var msg = '<%= request.getAttribute("message") %>'; // Here session needs to be checked 
var cnt = '<%= request.getAttribute("count") %>'; // Here session needs to be checked 

從JSP中的隱含會話對象獲取屬性。

​​

另一個問題can i have a session start only after login successfull so that i can check if user is valid or not at each page 只要一個用戶對一個新的會話創建服務器的請求(如果以前的會話不存在)。所以沒有辦法阻止創建會話。

此外,如果登錄失敗,你可以使用會話數googd東西例如您可以通過存儲在會話登錄嘗試的次數,並將其與比較幾經失敗限制用戶最大登錄嘗試maximum login attempts allowed檢查登錄信息之前。

+0

他也可以使用更寬容的'page.findAttribute(「message」)'。另外,如果'message'是一個String(就像它的名字所暗示的那樣),那麼JavaScript代碼片段中恰當的語法就是:'var msg ='<%= session.getAttribute(「message」)%>';'。 –

+0

@AlonsoDominguez:謝謝你指出這個錯誤。 –

+0

好吧......我只是指出了「msg」JavaScript變量的語法......另一個('cnt')似乎是一個整數(因爲它只是一個計數器),因此不需要引號。 –