Pregunta

¿Es posible tener el mismo servlet realizarse la validación? Parece que uno podría tener que utilizar algún tipo de recursividad aquí, pero cuando escribo en algo en el buzón de correo electrónico y haga clic en enviar el parámetro de correo electrónico está todavía en blanco. Después de que haga clic en enviar, la URL cambia a: http://localhost/servlet/EmailServlet?Email=test

La página muestra Email: null y el cuadro de texto, pero esperaba que se vaya a través de la función de validación (es decir, no tener un valor nulo). ¿Es posible lograr este tipo de comportamiento recursivo?

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();        
    }
}

Actualización: como la respuesta aceptada señaló, hubo un error en el código. Cambio de la getAttribute a getParameter fija el :) "problema".

correo electrónico String = (String) solicitud getAttribute getParameter ( "Enviar");.

¿Fue útil?

Solución

Para obtener un parámetro de formulario en un servlet que utilice:

  request.getParameter("Email");

Y sí se puede utilizar el mismo servlet pero sería manera más fácil de utilizar dos servlets diferentes para hacer esto.

Otros consejos

que podría tener el método de la forma establecida en la POST y luego poner en práctica un método doPost () en el servlet. doGet () será llamado para mostrar la forma y el doPost () será llamado para procesar el envío del formulario.

alternativamente, usted podría tener la prueba método doGet () la presencia de ningún parámetro. si no hay ninguno a continuación, sólo mostrar el formulario. si hay luego procesar la presentación ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top