Comment obtenir un paramètre de forme servlet? request.getAttribute ne fonctionne pas
-
21-09-2019 - |
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").
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 ...