Comunicação entre Serlets

9 respostas
S

Oi! Estou fazendo um sistema web e tenho um servlet… quero que ele chame uma página JSP que eu fiz. Como eu faço isso? Obrigado!! :smiley:

9 Respostas

S

ninguem tem idéia de como faz? :cry:

L

Assim:

request.getRequestDispatcher("/pagina.jsp").forward(request, response);

Onde a String lá em cima é qualquer caminho mapeado por um Servlet (e JSP também é Servlet).

S

obrigado, vou tentar aki. então, nessa string eu coloco o que eu digito no navegador pra acessa o servlet?eu puis:
request.getRequestDispatcher(“http://localhost:8085/Bone/?usuario="+usu+"&frase=”+frase).forward(request, response);

mas não funciona, ele não acha as variaveis request e response

S

O que eu to errando?

import java.sql.<em>;

import <a href="http://java.io">java.io</a>.</em>;

import java.util.Date;

import javax.servlet.<em>;

import javax.servlet.http.</em>;

import <a href="http://java.net">java.net</a>.*;
public class login extends HttpServlet

{

boolean status;

String  asenha,ip="",ip2="",codcli, frase;

Connection con,con2;

Statement stmt,stmt2;

ResultSet rs,rs2;
public void doGet (HttpServletRequest req, HttpServletResponse res)

{

String usu= req.getParameter(T1);

String senhas = req.getParameter(T2);
if (!usu.equals("") && !senhas.equals(""))
 {
String url = "jdbc:odbc:BD";
try
   {
   Class.forName ( "sun.jdbc.odbc.JdbcOdbcDriver" );
   con = DriverManager.getConnection(url,"","");
   con2 = DriverManager.getConnection(url,"","");
   stmt = con.createStatement();
   stmt2 = con2.createStatement();

   }
catch(ClassNotFoundException ex)
   {
   System.out.println("Driver JDBC-ODBC não encontrado!");
   return;
   }
catch(SQLException ex)
   {
   System.out.println("Problemas na conexao com a fonte de dados");
   return;
   }

try
   {

rs = stmt.executeQuery(“SELECT senha,cod_cli FROM cliente where usuario = '”+ usu +"’ ");

// aqui tá pegando só o 1 ip de todos rs = stmt.executeQuery(“SELECT senha,ip FROM cliente,propriedade where usuario = '”+ usu +"’ ");

rs.next();

asenha = rs.getString(senha);

codcli = rs.getString(cod_cli);
// selecionou a senha e o código do cliente. Agora, com estes em mãos, pega o IP na tabela propriedade
//rs = stmt.executeQuery(“SELECT ip FROM proprieade where cod_cli = '”+ codcli +"’ ");

rs = stmt.executeQuery(0);

// rs.next();

//   ip = rs.getString(“ip”);
// NÃO PODE SOBREPOR, FIZEMOS OUTRO EXECUTE QUERY EM UM RESULT SET 2. GAMBIARRA :
 // OBRIGAMOS A CAIR EM ERRO (sobrepomos de proposito) e no erro ele consegue casta o IP.
//

}

catch(SQLException ex)

{
//try{
	//	PrintStream tela = new PrintStream(res.getOutputStream());
		// tela.println("Erro interno(sql).");
	// }catch(IOException e){}
try{

rs2 = stmt2.executeQuery(SELECT ip FROM propriedade where usuario = '”+ usu +"’ ");

rs2.next();

ip2 = rs2.getString(“ip”);

frase = " o ip da sua residência é " + ip2 + " e ";
if(ip2.equals("0")){rs2 = stmt2.executeQuery("0");}           } // SE O IP EsTIVER 0, FORÇA ERRO SQL.
catch(SQLException semIP){try{

PrintStream tela = new PrintStream(res.getOutputStream());

tela.println("<HTML><BODY>Ip não encontrado. Certifique-se que:
o registrador de IP  está instalado na máquina localizada em sua propriedade;
 - Seu computador está ligado; 
 - Sua conexão com internet está ativa; 
 - o FireWall está corretamente configurado;
 Maiores informações ligue para ([telefone removido]
 </BODY> </HTML>");

frase="";

}catch(IOException e){}}

}

try
   {
   if (senhas.equals(asenha))
     {

	 PrintStream tela = new PrintStream(res.getOutputStream());

	 /*tela.println("&lt;HTML&gt;&lt;BODY&gt;");

	 tela.println("Acesso permitido, Bem vindo " + usu + frase +" o seu código de usuário é : " + codcli);
	 tela.println("&lt;APPLET CODE='" +usu+".class'  codebase='C:/'&gt; &lt;PARAM NAME =usuario VALUE ="+usu+"&gt;&lt;PARAM NAME =ip VALUE ="+ip2+"&gt; &lt;PARAM NAME =senha  VALUE ="+asenha+"&gt;&lt;/APPLET&gt;");
	tela.println("<BR><P>");
	tela.println("&lt;/BODY&gt;&lt;/HTML&gt;");

	OBS, passar parametros usuario,frase

*/
//req.getRequestDispatcher(“http://localhost:8085/Bone/?usuario="+usu+"&frase=”+frase).forward(req, res);

RequestDispatcher rd = req.getRequestDispatcher(<a href="http://localhost:8085/Bone/?usuario=%22+usu+%22&frase=">http://localhost:8085/Bone/?usuario="+usu+"&frase=</a>”+frase);

rd.forward(req, res);

return;

}

else

{

PrintStream tela= new PrintStream(res.getOutputStream());

tela.println("<HTML><BODY>");

tela.println(Acesso negado);

tela.println("

");

tela.println("</BODY></HTML>");

return;

}

}

catch (IOException e)

{

System.out.println(Problemas no retorno dos dados);

}

}

else
{

try
   {
   PrintStream tela = new PrintStream(res.getOutputStream());
   tela.println("&lt;HTML&gt;&lt;BODY&gt;");
   tela.println("Dados incompletos, algum campo não foi preenchido");
   tela.println("<BR><P>");
   tela.println("&lt;/BODY&gt;&lt;/HTML&gt;");
   }
catch (IOException e)
   {
	return;
   }

}

}
}

S

ainda não consegui :cry:

fwbrasil

Você poderia indicar qual o erro que está ocorrendo agora?

S

HAEEE, consegui. Ficava tudo branco, parecia que a servlet não rodava oO. Obrigado, eu arrumei algumas gambiarras , puis no netbeans, tirei alguns métodos inúteis e funcionou. É… é melhor fazer um código limpo desde o começo para evitar problemas. :smiley:

JMan

Pode ser assim

RequestDispatcher rd = request.getRequestDispatcher("/resultado.jsp");
rd.forward(request, response);

aqui tem o doc RequestDispatcher

[]s

JMan

Leonardo3001:
Assim:

request.getRequestDispatcher("/pagina.jsp").forward(request, response);

Onde a String lá em cima é qualquer caminho mapeado por um Servlet (e JSP também é Servlet).

Ué… e não foi o que disse?

Criado 16 de julho de 2008
Ultima resposta 16 de jul. de 2008
Respostas 9
Participantes 4