Galera, preciso de ajuda para entender como que funciona os servlets. Tenho dois servlets, um cadastra e outro lista… No cadastra tenho dois campos: nome e telefone, e com estes dados eu instancio um objeto Contato. Primeira duvida, para passar o objeto para o servlet lista eu uso o request.setAttribute(“contato”,contato), é isto com que faz um objeto ser passado para outro servlet? No servlet lista para pegar este objeto eu uso o request.getAttribute(“contato”)…???
Entenderam?
e pra que voce quer passar um objeto de um servlet a outro quando voce pode usar apenas uma servlet?
Me expressei mau… eu tenho uma classe ServletController e uma interface Logica. Criei duas classes que implementam a Logica que é o cadastro e a lista. Como eu passo um objeto do cadastro para a lista usando o request ou até mesmo uma session? Para o cadastro eu tenho um jsp e para lista outro…
galera, me da uma luz…
Se eu tenho uma classe que instanciou um objeto, como eu envio este objeto para outra classe usando o session?
Cara, oq vc quer dizer enviar um objeto de uma classe para outra?
Para enviar um objeto de uma classe para outra é facil.
Object a = new Object();
RecebeObjeto b = new RecebeObjeto();
b.receber(a) // Supondo que a classe RecebeObjeto tenha o método receber(Object a);;
pronto. O.O
Oq tu ta precisando?
Pense direito pq c não ta conseguindo expressar direito! ^^
Entao, estou tentando enviar um objeto para outra classe usando o session.setAttribute(“obj”, objeto). Entao na outra classe, eu faço um request.getAttribute(“obj”) mas ele não esta trazendo, ele envia como null.
Lonnewolf bom dia, como esta sem o código de fonte vou presumir que o texto que você escreveu anteriormente esta como o seu código fonte, então desta forma você precisa utilizar:
- Na servlet que vai enviar o objeto
Cliente c1 = new Cliente("Maria");
request.setAttribute("cli", c1);
// ^ aqui estava o seu erro pois não é session como você descreveu ali
- Na servlet que vai receber o objeto
Cliente c2 = request.getAttribute("obj");
Se estava com “session” mesmo desta forma acredito que agora vai funcionar.
Espero ter ajudado
Montroni, meu codigo esta assim mesmo, mas esta tudo como session… Uma coisa que acho estranho é que, nos metodos onde é solicitado a string, eu coloquei o mesmo nome, ou seja:
session.setAttribute("cliente", c1)
E no outro pegando:
session.getAttribute("cliente")
Isto esta certo, ok? Entao, mesmo assim ele traz vazio… ai eu consegui resolver, como? Colocando a primeira letra da string em maiusculo… Isto pode ser um problema do java?
Agora esta funcionando, mas estou so com esta duvida, o da letra maiuscula… vlw…
Lonnewolf acredito bem improvável que seja um erro na jvm ou algo do gênero, talvez você esteja inicializando a classe “cliente” vazia dentro desta nova servlet ??? Voce tem algum tipo de inicialização desta classe “cliente” que aqui utilizamos para exemplo do tipo Cliente cliente = new Cliente() ??? Pois deve existir algum trecho do código ai que esta ou zerando ou inicializando este parametro que você esta passando !
Entao, vou postar trechos do codigo:
Cliente c1 = (Cliente) session.getAttribute("cliente");
if(c1 == null){
c1 = new Cliente();
c1.setNome("lonnewolf");
}
session.setAttribute("cliente", c1);
e o outro que recebe:
Cliente c = (Cliente) session.getAttribute("cliente"); // dai faço o que quiser e depois devolvo
session.setAttribute("cliente");
seria isto, mas so esta funcionando se a string estiver em maiusculo, tipo session.setAttribute(“Cliente”, c1)… tendeu?
mas agora ta rolando, entao fiz tudo certinho neh?
Certinho esta sim lonnewolf mas para tirarmos a duvida do Maiusculo como voce disse faz o seguinte ao inves de usar o nome de parametro “cliente” usa ou outro qualquer tipo “xyz” e verifica se funciona, se funcionar quer dizer que em algum momento esta sendo atribuido null a classe cliente algo do genero ?
Servlet que envia
session.setAttribute("xyz", c1)
Servlet que recebe
Cliente clienteTeste = (Cliente) session.getAttribute("xyz");
System.out.println("Nome do cliente"+clienteTeste.getnome());
Cara, troquei o nome e funcionou certinho… dai testei como cliente em minusculo mesmo e funcionou tbm… vai saber… unica coisa de diferente que fiz foi parar o tomcat e reiniciar… talvez seja algo do jvm mesmo…
Vlw…
PS: abri um novo topico, com problema novo, veja se vc pode me ajudar tbm…
[quote=lonnewolf]Cara, troquei o nome e funcionou certinho… dai testei como cliente em minusculo mesmo e funcionou tbm… vai saber… unica coisa de diferente que fiz foi parar o tomcat e reiniciar… talvez seja algo do jvm mesmo…
Vlw…
PS: abri um novo topico, com problema novo, veja se vc pode me ajudar tbm…[/quote]
Pois é cara, é aí que mora o perigo. Toda alteração em web service é aconselhavel vc reinicia-lo. Existem alguns webservicers que liberam o chamado “hot deploy” com isso, após vc fazer a alteração ele coloca essa alteração “on-line” para vc. Mas não é garantido.
Da próxima vez, larga o dedo no stop e start! :lol: