@Curioso22 escreveu:
Boa tarde Galera,
Estou fazendo um formulário usando o Netbeans, e preciso fazer uma servlet Via POST para gravar os dados em um arquivo .CSV separando os caracteres por ";", e chamar uma servlet diretamente via GET deve exibir uma tabela com os dados gravados linha por linha.
Consegui fazer o formulário, mas fiz 2 formulário um chamando o GET e outro o POST como mostra abaixo e a servlet chamando os 2 métodos, mas quando chamo a servlet GET os dados não estão gravando linha por linha quando cadastro novos clientes.
O que posso estar fazendo de errado?
Formulário:
<head> <title>Cadastro Clientes</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="css/estilo.css"> </head> <font size="5" color="#083a90" style="font-weight: 900">Cadastro de Clientes</font> </br> </br> </br> <body> <div id="area"> <form action="ServletCadastro" method="get"> <fieldset> <legend><font style="font-weight: 900">Informações do Cliente - doGet</font></legend> <label for="nome"> Nome: </label> <input type="text" name="txtnome" size="40" placeholder="Inserir Nome" required="required"></br></br> <label for="Telefone"> Telefone: </label> <input type="text" name="txttelefone" placeholder="inserir Telefone" size="30" required="required"><br><br> <label for="endemail"> E-mail: </label> <input type="text" name="txtemail" size="40" placeholder="Digitar um e-mail válido" required="required"> <br><br> <input type="submit" value="Enviar" /> </fieldset> </form> </div> <br> <div id="area2"> <form action="ServletCadastro" method="post"> <fieldset> <legend><font style="font-weight: 900">Informações do Cliente - doPost</font></legend> <label for="nome"> Nome: </label> <input type="text" name="txtnome" size="40" placeholder="Inserir Nome" required="required"></br></br> <label for="Telefone"> Telefone: </label> <input type="text" name="txttelefone" placeholder="inserir Telefone" size="30" required="required"><br><br> <label for="endemail"> E-mail: </label> <input type="e-mail" name="txtemail" size="40" placeholder="Digitar um e-mail válido" required="required"> <br><br> <input type="submit" value="Enviar" /> </fieldset> </form> </div> </body>
Servlets:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import modelo.Cadastro;public class ServletCadastro extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private static final long serialVersionUID = 1L;public ServletCadastro() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletOutputStream out = response.getOutputStream(); response.setContentType("text/html;charset=UTF-8"); String name = request.getParameter("txtnome"); String telefone = request.getParameter("txttelefone"); String email = request.getParameter("txtemail"); // CRIAR O OBJETO Cadastro Cadastro objCadastro = new Cadastro (name, telefone, email); String csv = objCadastro.getNome() + ";" + objCadastro.getTelefone() + ";" + objCadastro.getEmail(); createCsvFile(csv); try { //Criação de um buffer para a ler de uma stream BufferedReader StrR = new BufferedReader(new FileReader("C:\\Users\\carlosalexandre\\Documents\\tabela.csv")); String Str; String[] TableLine = null; //Essa estrutura do looping while é clássica para ler cada linha //do arquivo while((Str = StrR.readLine())!= null){ //Aqui usamos o método split que divide a linha lida em um array de String //passando como parametro o divisor ";". TableLine = Str.split(";"); String html = "<html><head><title>Dados do Cliente</title>" + "</head><body><h1 align='center'>Cliente cadastrado</h1>" + "<table><tr><th>Nome</th><th>Telefone</th><th>Email</th></tr><tr><td>"+ TableLine[0].toString()+ "</td><td>"+ TableLine[1].toString()+ "</td><td>"+ TableLine[2].toString()+ "</td></tr></table></body></html>" ; out.print(html); StrR.close();
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException ex){
ex.printStackTrace();
}} @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletOutputStream out = response.getOutputStream(); response.setContentType("text/html;charset=UTF-8"); String name = request.getParameter("txtnome"); String telefone = request.getParameter("txttelefone"); String email = request.getParameter("txtemail"); // CRIAR O OBJETO Cadastro Cadastro objCadastro = new Cadastro (name, telefone, email); response.setContentType("text/html"); String csv = objCadastro.getNome() + ";" + objCadastro.getTelefone() + ";" + objCadastro.getEmail(); createCsvFile(csv); } public void createCsvFile(String csv){ //A estrutura try-catch é usada pois o objeto BufferedWriter exige que as //excessões sejam tratadas try{ //Criação de um buffer para a escrita em uma stream BufferedWriter StrW = new BufferedWriter(new FileWriter("C:\\Users\\carlosalexandre\\Documents\\tabela.csv")); //Escrita dos dados da tabela StrW.write(csv + "\n"); //Fechamos o buffer StrW.close();
}
catch (FileNotFoundException ex)
{
ex.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace(); }
}public void readCsvFile(){ //A estrutura try-catch é usada pois o objeto BufferedWriter exige que as //excessões sejam tratadas try { //Criação de um buffer para a ler de uma stream BufferedReader StrR = new BufferedReader(new FileReader("C:\\Users\\carlosalexandre\\Documents\\tabela.csv")); String Str; String[] TableLine; //Essa estrutura do looping while é clássica para ler cada linha //do arquivo while((Str = StrR.readLine())!= null){ //Aqui usamos o método split que divide a linha lida em um array de String //passando como parametro o divisor ";". TableLine = Str.split(";"); //O foreach é usadao para imprimir cada célula do array de String. for (String cell : TableLine) { System.out.print(cell+" ");
}
System.out.println("\n");
}
//Fechamos o buffer
StrR.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException ex){
ex.printStackTrace();
}}
}
Mensagens: 1
Participantes: 1