Gravar dados em csv usando get e post

0 respostas
htmljavaservlet
C

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();

}

}

}

Criado 14 de outubro de 2016
Respostas 0
Participantes 1