Estude servlets. Leia um livro, siga tutoriais e depois leia a especificação.Para mim entender bem servlets é MUITO mais importante do que JSP.
Acho que servlet devia fazer parte do Java básico e cair bastante nas provas de certificação. Não ache que estou sendo radical. E garanto a você que em no máximo 3 dias estará dominando servlets e ainda já terá seguido um tutorial de HTTP.
Não posso responder porque não entendi porque você chama o servlet duas vezes. Veja bem, repito seu servlet está sendo chamado 2 vezes e a 2a vez é com RequestDispatcher para o JSP que de novo chama o servlet. Acho difícil que sua lógica seja exatamente esta.
Quanto a livros vou recomendar o que eu estudei em 2001: http://pdf.coreservlets.com/ (Pule os trechos de configurações de servidores de aplicação pois os servidores dele estão obsoletos. Use o tomcat)
Basta ler os capítulos de servlets. Há algumas coisas novas na especificação criadas após este livro sair como filtros por exemplo. Mas o básico está lá. E consulte sempre o Javadoc de servlets. Se você usa Windows e instalou o tomcat a partir do executável (.exe), o javadoc fica no diretório:
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\tomcat-docs\servletapi
To com Eclipse 3.2, plugin da sysdeo e tomcat 5.5
Esse Servlet abaixo roda duas vezes em seguida apenas quando possui a última linha: RunTwice_Servlet.java
Se no .java eu escrever também o doPost igual ao doGet, e fizer o form com method=“POST”, a saída vai ser:
Já me sugeriram para usar o sendRedirect do response, mas aí eu tenho que setar um atributo no contexto ou na sessão e, em ambos os casos, eu teria que tirar de lá depois. Outra coisa boa do forward é que ele deixa o endereço do servlet na barra de endereço e o sendRedirect deixa o endereço atual.
Qualquer ajuda é muito bem vinda.
Porque você manda fazer o getServletContext().getRequestDispatcher("/jsprunTwice.jsp").forward(req, res);?
Estute a Interface RequestDispatcher.
Tente obter informações de quem chama e imprima em um log. Acho que vai perceber o que está acontecendo.
[]s
Luca[/quote]
Eu olhei aqui e parece que o dispatcher faz o que eu preciso: http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/RequestDispatcher.html
Eu devo estar entendendo errado (porque também se não estaria funcionando), mas foi assim que eu vi a primeira vez.
Como eu vejo quem está chamando este Servlet, afinal o problema ocorre mesmo que eu chame diretamente do navegador (FireFox 1.5)?
Você conhece outro método que funcione de forma semelhante, ou seja, passe o request e o response?
Desculpe se estou sendo principiante, mas isso já me consumiu dias e eu estou quase desistindo de programar em Java :lol: brincadeira
Obrigado por qualquer ajudar
Olá, eu já pesquisei isso em muitos lugares e fóruns, mas ninguém soube me responder.
Com certeza estudar faz parte, mas acredito que pesquisar, trocar informações é estudar.
Eu não preciso tirar certificação, quero fazer um sisteminha básico. E eu lhe garanto, levei muito mais que 3 dias pra conseguir fazer meu primeiro servlet.
Como desejas, ficam então dois pedidos: me dê a resposta se a tiver e me indique um bom tutorial ou livro disponível na Internet.
Grato e desesperado,
Gustavo.
mmmm Acho que houve um mal entendido aqui:
O servlet coloca uma infomação na request e passa pro jsp.
O jsp tem um form só com um input.
Então se eu chamo direto o servlet ele deveria colocar a informação na request e chamar o jsp que já apresentaria a informação.
Agora se eu chamo o jsp primeiro, ele deveria apresentar null na informação e, depois de eu clicar em submit, ele seria recarregado, mas agora com a informação correta.
Eu criei esse exemplo para mostrar o que acontece. E o que está acontecendo é que na saída eu tenho sempre dois “doGet”: rodando direto o servlet ou a cada vez que eu clico em submit.
Tem alguma coisa aí que eu não estou vendo?
Obrigado e desculpe se pareci exaltado na mensagem anterior.