Ola Pessoal!
Ja percebi que não sou apenas eu que tenho Problemas com Redirecionamento de Páginas né!
O maior problema é que eu não achei nenhum exemplo como o meu, que é o Redirecionamento de uma página HTML para um Servlet e o Redirecionamento do Servlet para uma Página JSP, que é onde o resultado será impresso.
E eu não tenho certeza se no meu exemplo o único problema é o redirecionamento, pois quando clico em Enviar aparece o erro:
HTTP Status 404 - /jsp/myjspapp1.jsp
--------------------------------------------------------------------------------
type Status report
message /jsp/myjspapp1.jsp
description The requested resource (/jsp/myjspapp1.jsp) is not available.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
Eu fiz um exemplo bem simples, e quem puder me ajudar serei grato!
Com esse exemplo, todas os programadores que possuem dúvidas na parte de Redirecionamento de páginas poderão esclareca-las!
Primeiro vou passar a minha Estrutura de Diretórios para ficar mais fácil de entender:
Apache Software Foundation
|_
Tomcat 5.0
|_
webapps
|_
myApp
|_
myjspapp1.htm
WEB-INF
|_
web.xml
classes
|_
TestingServlet.class
TestingServlet.java
|_
myJSPApp (Dentro do Diretório webapps)
|_
jsp
|_
myjspapp1.jsp
Código HTML -> É apenas uma Tabela que possui os campos: Nome da Classe, Atributo 1 e Atributo 2, assim que é clicado em “Enviar”, esses dados fornecidos devem ser pegos por um Servlet. Pode ser que eu esteja escrevendo errado o “form action” do código também, não sei se é: ‘servlet/TestingServlet’ ou se é ‘TestingServlet.class’.
<html>
<body>
<form action='servlet/TestingServlet' method='post'>
<table align='center'>
<tr>
<td colspan='2' bgcolor='#DDDDDD' height='5'></td>
</tr>
<tr>
<td class='texto'>Nome da classe: </td>
<td><input type='text' name='nome' size='20'></td>
</tr>
<tr>
<td colspan='2' class='texto' bgcolor='#DDDDDD'>Atributos:</td>
</tr>
<tr>
<td class='texto'>A1:</td>
<td><input type='text' name='a1' size='20'></td>
</tr>
<tr>
<td class='texto'>A2:</td>
<td><input type='text' name='a2' size='20'></td>
</tr>
<tr>
<td align='center' colspan='2' bgcolor='#DDDDDD'><input type='submit' value='Enviar'></td>
</tr>
</table>
</form>
</body>
</html>
Código do Servlet -> Esse código serve para pegar os valores digitados e Redirecionar para uma página JSP, para que nela os valores possam ser impressos. A minha maior dúvida nessa parte é o “request.getRequestDispatcher”, pois não sei se estou passando a referência exata do JSP, ja tentei de várias maneiras e até agora não obtive sucesso, por isso que eu fiz a Estrutura de Diretórios logo acima, assim fica mais fácil para que vocês possam me orientar.
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestingServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Não foi Postado");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
Enumeration e = request.getParameterNames();
PrintWriter out = response.getWriter ();
while (e.hasMoreElements())
{
String nome = (String)e.nextElement();
String valor = request.getParameter(nome);
out.println(nome + " = " + valor);
}
String dado1 = " ";
String dado2 = " ";
String dado3 = " ";
request.setAttribute( "nome", dado1 );
request.setAttribute( "a1", dado2 );
request.setAttribute( "a2", dado3 );
try{
RequestDispatcher rd = request.getRequestDispatcher("../../../myJSPApp/jsp/myjspapp1.jsp");
rd.forward(request, response);
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
}
Código do JSP -> Nesse código serão impressos os 3 valores fornecidos pelo usuário.
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%
String nome = (String) request.getAttribute( "nome" );
String a1= (String) request.getAttribute( "a1" ) ;
String a2= (String) request.getAttribute( "a2" );
out.println(" " + nome);
out.println(" " + a1);
out.println(" " + a2);
%>
Bom, espero que possam me ajudar, e a muitos outros programadores que possuem a mesma dúvida na parte de redirecionamento.
Obrigado!
Logan
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Matheus [/color][/size] :joia: