2017-11-16 3 views
0

Wenn ich meine Servlets laufen bekomme ich diesen Fehler: java.lang.NullPointerException bitte ich viele Lösungen ausprobiert, aber es hat nicht funktioniert, es ist einfacher Codejava.lang.NullPointerException in Servlet-Fehler 500

public LoginServlett() { 
    super(); 

} 

protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 


    String name = request.getParameter("UserName"); 
    String pass = request.getParameter("Password"); 

    RequestDispatcher d=null; 

    if (name.contentEquals("Gestionnaire") && pass.contentEquals("1234")) { 
     HttpSession session; 
     session =request.getSession(true); 
      d =request.getRequestDispatcher("/EspaceGestionnaire.html"); 
     session. setAttribute("NomSauvegardé" ,name); 
    } 

    else { 
     d = request.getRequestDispatcher("/Authentification.html"); 
     d.forward(request, response); 

    } 
} 

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { 
} 

}

+1

An welchem ​​Punkt beschwert es sich über eine NPE? Das Protokoll sollte es dir sagen. Meine Vermutung ist, dass eine dieser Dateien nicht existiert – Gibolt

+0

NullPointerException ist so üblich und JEE-Maschinen sind so groß, es könnte alles sein. Versuchen Sie, ein wenig tiefer zu graben, experimentieren Sie mit dem Code und veröffentlichen Sie dann den vollständigen Stack-Trace. – teejay

+0

Die Protokolldateien existes LoginServlett in C: \ Benutzer \ pc \ JEE-Arbeitsbereich \ AgenceLocations \ build \ classes \ LoginServlett.class die anderen/EspaceGestionnaire &/Authentifizierung in C: \ Benutzer \ pc \ JEE-Arbeitsbereich \ AgenceLocations \ WebContent – Soona

Antwort

0

Eine NPE wird aus dem Code ausgelöst, wenn die Parameter Benutzername und Kennwort nicht festgelegt sind. Wenn sie nicht festgelegt sind, sind die Variablen user und pass null, und wenn die contentEquals-Methoden aufgerufen werden, wird als Ergebnis eine NPE ausgelöst.

Ein Weg, dies zu tun wäre, um die Gleichheit prüft zu umkehren, so dass die Operation auf Zeichenfolge wollen Sie überprüfen aufgerufen:

if ("Gestionnaire".contentEquals(name) && "1234".contentEquals(pass)) { 

, die eine NPE werfen wird tun, was ohne den Code beabsichtigt.

Wenn Sie Kennwörter über das Internet senden, ist es besser, POST als GET zu verwenden. Für die Java EE-Sicherheit gibt es auch die neue Sicherheits-API (https://javaee.github.io/security-spec/)

Verwandte Themen