Question

Est-il possible d'avoir la même servlet effectuer une validation? Il semble que l'on aurait pu utiliser une sorte de récursion, mais quand je tape quelque chose dans la boîte e-mail et cliquez sur soumettre le paramètre e-mail est toujours vide. Après avoir cliqué sur soumettre, l'URL change à: http://localhost/servlet/EmailServlet?Email=test

La page Email: null et la zone de texte, mais je me attendais à passer par la fonction de validation (à savoir ne pas être nulle). Est-il possible d'atteindre ce type de comportement récursif?

public class EmailServlet extends HttpServlet {

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

        String theForm =
            "<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n" 
            + "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
        String email = (String) request.getAttribute("Email");

        // Bogus email validation...
        if( email == null )
        {
            out.println("Email: " + email + "\n" + theForm);
        }
        else if(emailAddressNotBogous(email))
        {
            out.println("Thank you!");
        }
        else
        {
            out.println("“Invalid input. Please try again:\n" + theForm);
        }
        out.flush();        
    }
}

Mise à jour: comme la réponse acceptée a souligné, il y avait une erreur dans le code. Modification du getAttribute à getParameter fixe le :) « problème ».

Chaîne email = (String) demande getAttribute getParameter ( "E-mail").

Était-ce utile?

La solution

Pour obtenir un paramètre de formulaire dans une servlet que vous utilisez:

  request.getParameter("Email");

Et oui, vous pouvez utiliser la même servlet, mais il serait plus facile d'utiliser deux servlets différentes pour le faire.

Autres conseils

vous pourriez avoir la méthode du formulaire POST mis à et mettre en œuvre une méthode doPost () dans votre servlet. le doGet () sera appelé pour afficher la forme et la doPost () sera appelé à traiter la soumission du formulaire.

Sinon, vous pourriez avoir le test de la méthode doGet () pour la présence de tous les paramètres. s'il n'y en a pas alors afficher uniquement la forme. s'il y a transformons la soumission ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top