doPost Servlet

3 respostas
A

Olá pessoa estou estudando jsp, servlet!
Eu gostaria de saber como eu faço para quando eu clicar no botao submit os parâmetros nome, email, endereco sejam enviados para mesma página e jogados no value dos inputs. Até agora eu tenho uma classe ContatoServlet onde nela eu escrevo os resultados via post em um outro link, mais eu queria escrever os resultados na mesma página e via POST.

Abaixo o código como está hoje

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<display-name>GravarContatos</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>AdicionaContato</servlet-name>
		<servlet-class>gravar.AdicionaContatoServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>AdicionaContato</servlet-name>
		<url-pattern>/adicionaContato</url-pattern>
	</servlet-mapping>

</web-app>

adiciona-contato.html

<html>
<body>
<form action="adicionaContato" method="post">
    Nome: <input type="text" name="nome" /><br />
    E-mail: <input type="text" name="email" /><br />
    Endereço: <input type="text" name="endereco" /><br />
    <input type="submit" value="Gravar" />
</form>
</body>
</html>
package gravar;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class AdicionaContatoServlet extends HttpServlet {

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

		// buscando os parâmetros no request
		String nome = request.getParameter("nome");
		String endereco = request.getParameter("endereco");
		String email = request.getParameter("email");

		// monta um objeto contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEndereco(endereco);
		contato.setEmail(email);


		// imprime o nome do contato que foi adicionado
		out.println("<html>");
		out.println("<body>");
		out.println("Nome= " + contato.getNome() + "Endereco= "+contato.getEndereco()+" Email= "+contato.getEmail());
		out.println("</body>");
		out.println("</html>");

	}
}
package gravar;

public class Contato {
	private Long id;
	private String nome;
	private String email;
	private String endereco;

	// métodos get e set para id, nome, email, endereço e dataNascimento
	public String getNome() {
		return this.nome;
	}

	public void setNome(String novo) {
		this.nome = novo;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String novo) {
		this.email = novo;
	}

	public String getEndereco() {
		return this.endereco;
	}

	public void setEndereco(String novo) {
		this.endereco = novo;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long novo) {
		this.id = novo;
	}
}

Alguém poderia me ajudar?

Agradeço.

3 Respostas

B

Meio estranho isso que você está querendo fazer… Mas a princípio você teria que mudar sua página html estática para uma jsp para exibir os valores e mudar seu servlet para redirecionar(com um request dispatcher) para essa mesma jsp …

A

Então breno500as, esse código é somente para estudos!

Você poderia me dar um help de como ficaria?

Imagino que dentro da servlet vai ter um comando chamando a página adiciona-contato.jsp(renomeado), mais como ficaria na página .jsp?

Em php eu pego o valor pelo comando $_POST.

Valeu.

B

Em uma jsp você pode pegar os valores utilizando EL …

Primeiro no seu servlet, sete o objeto Contato no escopo da requisição:

request.setAttribute("contato",contato);

Para chamar sua página de resultados ou sua página inicial vc poderia utilizar um RequestDispatcher :

RequestDispatcher view = request.getRequestDispatcher("resultado.jsp");
view.foward(request,response);

E na jsp vc pode utilizar EL para pegar os valores:

${contato.nome}
${contato.endereco}
${contato.email}
Criado 23 de junho de 2010
Ultima resposta 23 de jun. de 2010
Respostas 3
Participantes 2