Passar valores de um Servlet para outro

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.

:smiley: :smiley: :smiley:

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