Método processRequest não é chamado[Resolvido]

5 respostas
C

Bom dia a todos,

Estou estudando servlets e fiz este código-exemplo com o intuito de testar a teoria, porém, no meu caso, depois que o método doPost é executado, o método processRequest não é invocado automaticamente como eu esperava.

Será que alguém, por favor, poderia me dizer onde está o erro? :(

Agradeço desde já!

index.html

<html>
    <body>
        <form name="principal" action="meuServlet" method="post">
            <input type="text" name="caixa"></input><br>
            <input type="submit" value="Enviar"></input>
        </form>
    </body>
</html>

meuServlet.java

package meuPacote;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class meuServlet extends HttpServlet
{
    protected void processRequest(HttpServletRequest req, 
    HttpServletResponse resp)throws ServletException, IOException 
    {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        try 
        {
            out.println("<br>");
            out.println("No navegador!");
        } 
        finally
        {            
            out.close();
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, 
    HttpServletResponse resp) throws ServletException, IOException 
    {
        String parametro = req.getParameter("caixa");
        PrintWriter out = resp.getWriter();
        out.println("Ola! "+parametro);
    }
}

5 Respostas

drsmachado

Onde você chama o processaRequest?
Não existe nenhuma chamada à ele.

C

@drsmachado,

Agradeço pela resposta!

Esse método não é chamado automaticamente após o método doPost ser executado!? Ou então, como eu chamaria ele, o processaRequest?

drsmachado

Não.
Quem te disse isso?
Você precisa invocá-lo explicitamente em algum lugar.
Se quer executar o mesmo após o doPost, coloque, ao final deste método, a linha que invoca o processaRequest.

C

@drsmachado,

Entendi agora, amigo!

Agradeço-lhe imenso pela ajuda!

Um forte abraço!

C

E assim, o código final é:

index.html

<html>
    <body>
        <form name="principal" action="meuServlet" method="post">
            <input type="text" name="caixa"></input><br>
            <input type="submit" value="Enviar"></input>
        </form>
    </body>
</html>

meuServlet.java

package meuPacote;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class meuServlet extends HttpServlet
{
    protected void processRequest(HttpServletRequest req, 
    HttpServletResponse resp)throws ServletException, IOException 
    {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        try 
        {
            out.println("<br>");
            out.println("No navegador!");
        } 
        finally
        {            
            out.close();
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, 
    HttpServletResponse resp) throws ServletException, IOException 
    {
        String parametro = req.getParameter("caixa");
        PrintWriter out = resp.getWriter();
        out.println("Ola! "+parametro);
        processRequest (req,resp); //--> Retificação!
    }
}
Criado 24 de maio de 2013
Ultima resposta 24 de mai. de 2013
Respostas 5
Participantes 2