ola amigos estou aqui mais uma vez, pedindo ajuda de todo!
olha só
tenho 1 class e duas servlet
class pessoa que contem a variavel nome e idade. * essas duas variavel é private
pq para ela funcionar eu tenho que fazer o get e set na mesma servet. sempre quando tento fazer o set em uma e depois vou para outra servelt fazer o get a variavel está nula?
alguem sabe se tem como eu fazer isso?
Não entendí muito bem o seu questionamento, mas vamos lá:
Vc pode criar o objeto, povoá-lo em um servelet, colocá-lo na sessão e depois recuperá-lo no outro servlet sem problemas.
Era essa a dúvida?
ex.: o código abaixo
desse modo que está ai a variavel nome chega como nula
só funciona o getNome() se fica na mesma class que o setNome()
alguem sabe me dizer se tem como fazer isso funcionar?
public class Pessoa {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Envia extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
Pessoa pessoa = new Pessoa();
private static final String cadastrar = "cadastrar";
public Envia() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
LocalizaObjeto(request, response);
}
protected void LocalizaObjeto(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String tarefa = request.getParameter("tarefa");
//cadastrar usuário
if(tarefa.equals(cadastrar)){
pessoa.setNome(request.getParameter("nome"));
response.sendRedirect("Recebe");
}
}
}
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Recebe extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
Pessoa pessoa = new Pessoa();
private static final String cadastrar = "cadastrar";
public Envia() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(pessoa.getNome());
}
}
no seu primeiro servlet tente isso:
protected void LocalizaObjeto(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String tarefa = request.getParameter("tarefa");
// cadastrar usuário
if(tarefa.equals(cadastrar)){
pessoa.setNome(request.getParameter("nome"));
session.setAttribute("pessoa", pessoa);
// poe o objeto pessoa na seção pois após o servlet enviar a resposta seu ciclo de vida acaba
// e pessoa será destriuda
response.sendRedirect("Recebe");
}
no segundo servlet faça assim:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
if (session.getAttribute("pessoa")!=null){
pessoa = (Pessoa) session.getAttribute("pessoa"); // aqui eu pego o objeto da seção
session.removeAttribute("pessoa"); // remove o objeto da seção
}
out.println(pessoa.getNome());
}
}
é preciso importa algo para usar session?
é que ta dando erro!
desculpa mais sou novatao mesmo!
para pegar a seção use nos dois servlets:
HttpSession session = request.getSession();
é numa jsp como faço para recupera?
no jsp usa direto objeto implicito session, fica sim:
if (session.getAttribute("pessoa")!=null){
pessoa = (Pessoa) session.getAttribute("pessoa"); // aqui eu pego o objeto da seção
session.removeAttribute("pessoa"); // remove o objeto da seção
}
Neste caso, não precisa importar nada.
