Série da semana: Primeiros passos no React

Veja mais

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

12/01/2012

10

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]
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í! :!:
Responder