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.
public class Servlet1 implements Logica{
public void executa(HttpServletRequest req,HttpServletResponse res) throws Exception {
String nome = req.getParameter("nome");
RequestDispatcher rd = req.getRequestDispatcher("/index.jsp?nome=" +nome);
rd.forward(req, res);
}
}
public class Servlet2 implements Logica{
@Override
public void executa(HttpServletRequest req, HttpServletResponse res)
throws Exception {
Element principal= new Element("principal");
Document doc= new Document(principal);
Element Campos= new Element("Campos");
Element nome= new Element("nome");
impermeavel.setText("nome"); // aqui eu queria passar o valor do atributo nome da classe Servlet1
Campos.addContent(nome);
principal.addContent(Campos);
XMLOutputter xout = new XMLOutputter();
try {
FileWriter file= new FileWriter(new File("d:/file.xml"));
xout.output(doc, file);
} catch (Exception e) {
e.getStackTrace();
}
RequestDispatcher rd = 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
[code]public class Servlet1 implements Logica{
public void executa(HttpServletRequest req,HttpServletResponse res) throws Exception {
String nome = req.getParameter(“nome”);
RequestDispatcher rd = req.getRequestDispatcher("/index.jsp?nome=" +nome);
rd.forward(req, res);
}
}
public class Servlet2 implements Logica{
@Override
public void executa(HttpServletRequest req, HttpServletResponse res)
throws Exception {
Element principal= new Element(“principal”);
Document doc= new Document(principal);
Element Campos= new Element(“Campos”);
Element nome= new Element(“nome”);
impermeavel.setText(“nome”); // aqui eu queria passar o valor do atributo nome da classe Servlet1
Campos.addContent(nome);
principal.addContent(Campos);
XMLOutputter xout = new XMLOutputter();
try {
FileWriter file= new FileWriter(new File(“d:/file.xml”));
xout.output(doc, file);
} catch (Exception e) {
e.getStackTrace();
}
RequestDispatcher rd = req.getRequestDispatcher(“index.jsp” );
rd.forward(req, res);
}
} [/code]
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 ?
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
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.
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
Cara valeu mesmo pela força, mais tem geito não fiz dessa forma mais não funcionou.
<a class="link" href="control?valor=servelt2&nome=<%request.getParameter("nome");%> " >Gerar XML</a>
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.
Passei errado era assim.
<a class="link" href="control?valor=servelt2&nome=${param.nome}" >
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 ?
vc tem q enviar via http, por url (queryString) como esta fazendo ou por post.
abrassss