2013-09-24 34 views
1

我已經在jsp中編寫了一個簡單的登錄模塊(有很多scriplets在那裏:))。但是,我不斷得到NullPointer異常錯誤。我無法找到,我嘗試了很多。字符串比較時獲取空指針異常

JSP登錄代碼

<form action="loginAction.jsp" method="post" name="config-form"> 
<table align="center"> 
    <tr> 
     <td> UserName:</td> 
     <td><input type="text" name="username" required parameter=*"></td> 
    </tr> 
    <tr> 
     <td> Password:</td> 
     <td><input type="password" name="username" required parameter=*"></td> 
    </tr> 
    <tr><td><input type="submit" value="LogIn"></td></tr> 
</table> 

LoginAction.jsp

<body> 
<% 
    String username=request.getParameter("username"); 
    String password=request.getParameter("password"); 


    LoginModel login = new LoginModel(); 
    login.setUsername(username); 
    login.setPassword(password); 

    LoginValidator validator = new LoginValidator(); 
    boolean validate=validator.validateLogin(login); 

    if(validate==false) 
    { 
     response.sendRedirect("login.jsp"); 
    } 
    else 
    { 
     response.sendRedirect("index.jsp"); 
    } 

%> 

LoginModel.java

public class LoginModel { 
private String username; 
private String password; 
public String getUsername() { 
    return username; 
} 
public void setUsername(String username) { 
    this.username = username; 
} 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
} 

}

LoginValidator.java

public boolean validateLogin(LoginModel login) 
{ 
    String uname="vivekaltruist"; 
    String passwd="somePassword"; 
    System.out.println(login.getUsername()); 
    if((login.getUsername().equals(uname)) && login.getPassword().equals(passwd)) 
    { 
     return true; 
    } 
     return false; 
} 

堆棧跟蹤:

顯示java.lang.NullPointerException 在LoginValidator.validateLogin(LoginValidator.java:12)

我肯定,這將是一個愚蠢的原因,但我無法找到它。同樣的事情,我試過沒有jsp,它的工作正常。 幫我出

+0

我擔心,我可能會downvoted這個密碼值。我是JSP新手,很多腳本也在那裏。我知道,它的不好的做法,我會改變這一點 –

+1

你可能會陷入低谷的主要原因是不能識別第12行,儘管在這種情況下只有一行可能會引發異常。登錄爲空,或getUsername或getPassword返回null。 –

+1

你最好掌握NPE的本質,並把它產生的原因。如果你知道它的含義,那麼確定它的來源對你來說會非常有幫助。 – Prateek

回答

4

你命名你的密碼輸入參數username

<td><input type="password" name="username" required parameter=*"></td> 

String password=request.getParameter("password"); 

將返回null因爲通過password確定沒有請求參數,並最終導致NullPointerException當您嘗試獲取並致電equals()就可以了。將其name屬性更改爲"password"

+0

@sotirious是的..我知道會有一個愚蠢的問題。我嘗試了很多,閱讀Stacktaces和所有。 我應該從這裏刪除帖子,因爲它對任何人都沒有用嗎 –

+0

@user好的,如果這是您的意見。 –

+0

@ user1969412:儘管您的帖子在內容上適用於您,但問題還是提供了上下文和答案來說明問題。就我個人而言,我會讓它幫助別人 –

0

這裏的問題

<td><input type="text" name="username" required parameter=*"></td> 
<td><input type="password" name="username" required parameter=*"></td> 

你拖領域有相同name.While處理,沒有得到