Tenho dois Servlet um recebe requisão de uma pagina jsp, o outro Servlet var receber as informações do primeiro Servlet para gerar um arquivo xml
(jdom) quando o usuario clicar em Gerar XML, o problema é como faço para pegar as informações do Servlet1.
@Overridepublicvoidexecuta(HttpServletRequestreq,HttpServletResponseres)throwsException{Elementprincipal=newElement("principal");Documentdoc=newDocument(principal);ElementCampos=newElement("Campos");Elementnome=newElement("nome");impermeavel.setText("nome");// aqui eu queria passar o valor do atributo nome da classe Servlet1Campos.addContent(nome);principal.addContent(Campos);XMLOutputterxout=newXMLOutputter();try{FileWriterfile=newFileWriter(newFile("d:/file.xml"));xout.output(doc,file);}catch(Exceptione){e.getStackTrace();}RequestDispatcherrd=req.getRequestDispatcher("index.jsp");rd.forward(req,res);}
}
Tentei criar um objeto de Servlet1 mais o atributo, nome so é visivel dentro do metodo “executa” String nome = req.getParameter(“nome”);
vc pode setar na sua request o atributo que quer passar
req.setAttribute("nome", objeto);
e pegar no segundo servlet
req.getAttribute("nome");
no segundo servlet dessa maneira que vc postou nao veio?
String nome = req.getParameter("nome");
abrasss
M
mausexdd
publicclassServlet1implementsLogica{publicvoidexecuta(HttpServletRequestreq,HttpServletResponseres)throwsException{Stringnome=req.getParameter("nome");RequestDispatcherrd=req.getRequestDispatcher("/index.jsp?nome="+nome);rd.forward(req,res);}}publicclassServlet2implementsLogica{@Overridepublicvoidexecuta(HttpServletRequestreq,HttpServletResponseres)throwsException{Elementprincipal=newElement("principal");Documentdoc=newDocument(principal);ElementCampos=newElement("Campos");Elementnome=newElement("nome");impermeavel.setText("nome");// aqui eu queria passar o valor do atributo nome da classe Servlet1 Campos.addContent(nome);principal.addContent(Campos);XMLOutputterxout=newXMLOutputter();try{FileWriterfile=newFileWriter(newFile("d:/file.xml"));xout.output(doc,file);}catch(Exceptione){e.getStackTrace();}RequestDispatcherrd=req.getRequestDispatcher("index.jsp");rd.forward(req,res);}}
R
rubenskain
Valeu.
Mais não funcionou
No primeiro servlet não funcionou, coloquei dessa forma.
String nome = req.getParameter(“nome”); req.setAttribute(“nome”, nome);
no segundo servlet.
Element nome= new Element(“nome”); nome.setText((String)req.getAttribute(“psp”)); // aqui eu queria passar o valor do atributo nome da classe Servlet1
não sei se tem alguma coisa a ver mais sera que quando eu click no link Gerar XML
ele zera os valores ?
R
renanreismartins
POR FAVOR: use as tags code pra formatar o código.
vc ta passando pelo link um parametro com nome de “valor” e ta pegando com “nome”
ai no servlet 2 vc pega o atributo “psp” ao inves de nome…
abrassss
R
rubenskain
Pow foi mal coloquei na verdade o codigo errado aqui.
na verdade eu passei nome.
nome.setText((String) req.getAttribute("nome"));
tentei tambem
nome.setText((String) req.getParameter("nome"));
mais não funcionou, debuguei o codigo e o valor não vem.
R
renanreismartins
rubens, seguinte velho, no seu link vc nao ta passando o atributo nome, veja, vc passa apenas valor, logo o parametro nome vem vazio
entendeu?
abrasss
R
rubenskain
Cara valeu mesmo pela força, mais tem geito não fiz dessa forma mais não funcionou.
Outra coisa esses valores que o servelt1 recebe são de um formulario, esquece de mencionar, quando click no link para
enviar os valores para servelt2 ele zera os valores.
So tem um problema são mais de 20 campos no meu formulario, realmente é muita informação e passar isso
tudo na queryString vai ser problema, sabe como faço para passar os valores sem ser pela queryString ?
R
renanreismartins
vc tem q enviar via http, por url (queryString) como esta fazendo ou por post.