Enviar um parametro de JSP para JSP sem passar por um Servlet ?

12/01/2012

0

Olá, To estudando a integração de Jsp e Servlets numa aplicação e estou com uma duvida !! Alguém sabe como enviar parametros de um jsp para o outro, sem usar um Servlet. Não consigo na minha aplicação enviar para "pag3.jsp" os parametros que o Servlet manda para "pag2.jsp" . Pois pelo que estudei, não tem como enviar parâmetros para varios JSPs através do mesmo Servlet , pois o objeto request é unico. e até agora não consegui achar um código para implementar num JSP que recebe um parâmetro e envia ele para outro JSP . Desde já agradeço !! Aqui está o meu código. (está em anexo tambem) Cliente.java
package entidade;

public class Cliente {

	private String nome;

	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
}
pag1.jsp.:
...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pagina1</title>
</head>
<body>
	<form action="ServletTeste" method="get">
		Digite seu nome : <input type="text" name="nome">
		<input type="submit" value="Enviar">
	</form>
</body>
</html>
Servlet.java
...

import entidade.Cliente;

@WebServlet("/ServletTeste")
public class ServletTeste extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		String nome = request.getParameter("nome");

		Cliente c1 = new Cliente();
		c1.setNome(nome);

		request.setAttribute("cliente1", c1);
		request.getRequestDispatcher("/pag2.jsp").forward(request, response);
	}
}
pag2.jsp
....
<jsp:useBean id="cliente1" class="entidade.Cliente" scope="request" />

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pagina2</title>
</head>
<body>

	Olá ${cliente1.nome}<p>
	Caso você queira ir para pagina 3 , clique aqui:<br>
	<form action="pag3.jsp">

<!-- ???? o que eu posso colocar aqui para enviar o ${cliente1.nome} para a pagina 3  -->

		<input type="submit" value="Enviar">
	</form>
</body>
</html>
pag3.jsp
...
<jsp:useBean id="cliente1" class="entidade.Cliente" scope="request" />

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pagina 3</title>
</head>
<body>

<!-- Tenho tentado dos dois jeitos -->

Olá ${cliente1.nome}<p>

<!-- ou -->

Olá <jsp:setProperty property="nome" name="cliente1"/>

</body>
</html>
O Nome digitado na pag1 aparece na pag2 , mas não na pag3. (O arquivo zip está em anexo) Obrigado gente !![/code]
Gustavo

Gustavo

Responder

Post mais votado

13/01/2012

Olá Gustavo, Você está confundindo muita coisa. Dá sim para mandar valores de uma página jsp para outra, pois, no fim de tudo, uma jsp é um servlet! Para que os parâmetros sejam enviados em um [b]request[/b] quando o submit do form for executado, é necessário que os mesmos estejam dentro do formulário como input's. Tomando teu exemplo como referência, poderíamos fazer assim:
// pag2.jsp
<form action="pag3.jsp">
   <input type="hidden" name="nome" value="${cliente1.nome}" />
   <input type="submit" value="Enviar">
</form>
Porém, tem um detalhe... Quando você executa o submit do formulário é enviada uma requisição (request) para o destino definido no atributo [b]action[/b] (seja um servlet, ou uma jsp). Assim como no servlet você recupera todos os atributos do form usando:
request.getParameter("nomeDoCampo");
Da mesma forma você terá de fazer na jsp:
// pag3.jsp
<body>
// param é utilizado pela Expression Language para buscar o valor  do parâmetro na requisição pelo nome
<p> Olá ${param.nome}</p>
</body
Qualquer coisa posta aí! :!:

Diogo Souza

Diogo Souza
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar