2013-09-24 35 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处理,没有得到