-1
votes

Java Servlet exécute avec code d'état HTTP / 500

Lorsque j'exécute ce serveur Web Tomcat et essayez de poster le formulaire avec les informations d'identification correctes ou incorrectes, il en résulte une erreur HTTP / 500.

Le code de servlet: P>

 java.lang.NullPointerException check.doPost(check.java:21)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


4 commentaires

Pouvez-vous dire quel est le code sur la ligne 21 du check.java ? ( java.lang.nullpointException check.dopost (check.java:21) .


Je pense que vous obtenez un NULL valeur pour formusername à partir de ce code: FormusSeName = demande.geparameter ("nom d'utilisateur"); . Et il résulte de la nullpoinpoincerexception à: si (formusername.equals (nom d'utilisateur) . Il est difficile de dire du code que vous avez montré ce qui est faux; le code regarde Très bien au premier regard.


Avez-vous entré Nom d'utilisateur et mot de passe dans le formulaire HTML? Si vous n'entrez pas de valeurs et soumettez le formulaire, vous obtiendrez cette erreur.


Une façon de vérifier si votre formulaire Soumettre fonctionne et que les paramètres sont envoyés au servlet sont ces trois étapes: (1) Supprimez la méthode de formulaire = "POST" et "OBTENIR" ". (2) Lorsque vous effectuez le formulaire Soumettre, vous pouvez voir les paramètres de la demande et les valeurs de la barre d'adresse du navigateur, comme celui-ci http://example.com/path/to/page?username=john&password=doe ; Remarque La chaîne de requête contient les noms de paramètres de la demande et leurs valeurs. Que vois-tu là? (3) Ajouter une méthode doket sur le servlet pour vérifier l'affichage du formulaire à partir du code HTML modifié.


3 Réponses :


0
votes

Peut-être que votre variable (formusername ou formidassword) est une valeur nulle, votre programme donne donc un pointeur NULL.

Vous devez vérifier si vous pouvez obtenir le nom et le mot de passe de la demande.


0 commentaires

-1
votes

Une chose que j'ai réalisée votre code de servlet ne remplace pas la méthode Dopost par défaut. Vous devriez avoir quelque chose comme celui-ci normalement

p>

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                   throws ServletException, IOException 


0 commentaires

0
votes

Merci prasad_ pour son dernier commentaire de changer le message pour vérifier les variables données. Ils ne semblaient pas correspondre au formulaire HTML. J'ai changé le xxx pré>

à p> xxx pré>

et p> xxx pré>

à p >

<input type="password" name="Password" placeholder="Wachtwoord" maxlength="20" required>


1 commentaires

Mais votre code de servlet affiche les noms de paramètres comme «nom d'utilisateur» et «mot de passe»?