Pessoal, preciso muito da ajuda de vocês.
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
package runTwice;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RunTwice_Servlet extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
System.out.println("doGet");
req.setAttribute("detalheLN", "detalheLN");
getServletContext().getRequestDispatcher("/jsprunTwice.jsp").forward(req, res);
}
}
Então se eu chamo: http://tccgm.no-ip.org:8091/tcc/runTwice a saída é:
Por causa disso eu acho que o erro é independente do JSP, de qualquer forma aqui está ele:
jsprunTwice.jsp
<%@ page
language="Java"
import="runTwice.*"
import="java.io.*"
import="java.util.*"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>RunTwice Final Teste</TITLE>
<H1><b>RunTwice Final Teste<b></H1>
</HEAD>
<BODY>
<FORM NAME="form" method="GET" action="/tcc/runTwice">
<INPUT type="submit">
</FORM>
<%=(String)request.getAttribute("detalheLN")%>
</BODY>
<HTML>
Segue também o web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>runTwice</servlet-name>
<servlet-class>runTwice.RunTwice_Servlet</servlet-class>
</servlet>
<servlet>
<servlet-name>runTwice_jsp</servlet-name>
<jsp-file>/work/runTwice/jsprunTwice.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>runTwice</servlet-name>
<url-pattern>/runTwice</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>runTwice_jsp</servlet-name>
<url-pattern>/jsprunTwice.jsp</url-pattern>
</servlet-mapping>
</web-app>
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.