Domanda

E 'possibile avere lo stesso servlet eseguire la convalida? Sembra che uno potrebbe essere necessario utilizzare una sorta di ricorsione qui, ma quando digito qualcosa nella casella e-mail e clicca su Invia il parametro di posta elettronica è ancora vuota. Dopo aver fatto clic su Invia, l'URL cambia a: http://localhost/servlet/EmailServlet?Email=test

La pagina mostra Email: null e la casella di testo, ma mi aspettavo di andare attraverso la funzione di validazione (vale a dire non essere nullo). E 'possibile realizzare questo tipo di comportamento ricorsivo?

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

Aggiornamento: come la risposta accettata sottolineato, c'è stato un errore nel codice. Cambiare il getAttribute per getParameter risolve il :) "problema".

String email = (String) richiesta getAttribute getParameter ( "E-mail");.

È stato utile?

Soluzione

Per avere un parametro modulo in un servlet si utilizza:

  request.getParameter("Email");

E sì è possibile utilizzare lo stesso servlet ma sarebbe modo più semplice di utilizzare due diversi servlet per fare questo.

Altri suggerimenti

si potrebbe avere il metodo del modulo impostato su POST e quindi implementare un metodo doPost () nella tua servlet. il doGet () verrà chiamato per visualizzare la forma e il doPost () andranno chiamato per elaborare la presentazione modulo.

In alternativa si potrebbe avere il metodo di prova doGet () per la presenza di eventuali parametri. se non ce ne sono poi basta visualizzare il modulo. se ci sono quindi elaborare la presentazione ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top