Olá pessoal. Comecei a pouco tempo aprender Java Web, tenho um formulário de cadastro onde o usuário irá informar duas datas, estou com um pouco de dificuldades em trabalhar com variáveis do tipo Date em JSP e Servlet.
Minha classe venda está assim:
package br.bmweb.pojo;
import java.util.Date;
public class Venda {
private int cod_cliente, cod_orcamento, cod_funcionario;
private Date data_venda, data_fechamento;
private String status_venda, tipo_venda, tipo_pagamento;
private double valor_total, valor_unitario, valor_desconto;
public int getCod_cliente() {
return cod_cliente;
}
public void setCod_cliente(int codCliente) {
cod_cliente = codCliente;
}
public int getCod_orcamento() {
return cod_orcamento;
}
public void setCod_orcamento(int codOrcamento) {
cod_orcamento = codOrcamento;
}
public int getCod_funcionario() {
return cod_funcionario;
}
public void setCod_funcionario(int codFuncionario) {
cod_funcionario = codFuncionario;
}
public Date getData_venda() {
return data_venda;
}
public void setData_venda(Date dataVenda) {
data_venda = dataVenda;
}
public Date getData_fechamento() {
return data_fechamento;
}
public void setData_fechamento(Date dataFechamento) {
data_fechamento = dataFechamento;
}
public String getStatus_venda() {
return status_venda;
}
public void setStatus_venda(String statusVenda) {
status_venda = statusVenda;
}
public String getTipo_venda() {
return tipo_venda;
}
public void setTipo_venda(String tipoVenda) {
tipo_venda = tipoVenda;
}
public String getTipo_pagamento() {
return tipo_pagamento;
}
public void setTipo_pagamento(String tipoPagamento) {
tipo_pagamento = tipoPagamento;
}
public double getValor_total() {
return valor_total;
}
public void setValor_total(double valorTotal) {
valor_total = valorTotal;
}
public double getValor_unitario() {
return valor_unitario;
}
public void setValor_unitario(double valorUnitario) {
valor_unitario = valorUnitario;
}
public double getValor_desconto() {
return valor_desconto;
}
public void setValor_desconto(double valorDesconto) {
valor_desconto = valorDesconto;
}
}
Até o momento meu servlet está assim:
package br.bmweb.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.bmweb.pojo.*;
import br.bmweb.util.*;
import br.bmweb.dao.*;
/**
* Servlet implementation class Venda
*/
public class ServletVenda extends HttpServlet {
private static final long serialVersionUID = 1L;
private final Connection conn;
/**
* @see HttpServlet#HttpServlet()
*/
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
try {
Venda venda = new Venda();
Data data = new Data();
HttpSession session = request.getSession(true);
venda.setData_fechamento(new Data().formata(request.getParameter("data_fechamento")));
venda.setData_venda(new Data().formata(request.getParameter("data_venda")));
venda.setStatus_venda(request.getParameter("status_venda"));
venda.setTipo_pagamento(request.getParameter("tipo_pagamento"));
venda.setTipo_venda(request.getParameter("tipo_venda"));
venda.setValor_desconto(Double.parseDouble(request.getParameter("valor_desconto")));
venda.setValor_total(Double.parseDouble(request.getParameter("valor_total")));
venda.setValor_unitario(Double.parseDouble(request.getParameter("valor_unitario")));
}
public ServletVenda() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Reparem que nas linhas 34 e 35 do meu servlet faço chamada a um método de uma classe que formata uma data passada no formato DD/MM/AAAA e transforma em AAAA-MM-DD (já para gravar no MySQL).
Minha classe de formatação está assim:package br.bmweb.util;
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Data {
public Date formata(String data)throws Exception{
String dataString = data;
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date dataFormatada = new java.sql.Date(df.parse(dataString).getTime());
return dataFormatada;
}
}
Estou com dificuldade em criar meu DAO que até o momento está assim:
package br.bmweb.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.bmweb.util.*;
import br.bmweb.pojo.*;
public class VendaDao {
Connection con= new Conexao().conecta();
public boolean grava(){
String sql = "INSERT INTO TB_VENDA (ve_cod_funcionario, ve_cod_cliente, ve_cod_orcamento, ve_data_venda, " +
"ve_data_fechamento, ve_status_venda, ve_valor_unit, ve_valor_total, ve_desconto, " +
"ve_tipo_venda, ve_tipo_pagamento)" +
"VALUES (?,?,?,?,?,?,?,?,?,?,?)";
try {
PreparedStatement stmt = con.prepareStatement(sql);
Venda venda = new Venda();
stmt.setInt(1,venda.getCod_funcionario());
stmt.setInt(2, venda.getCod_cliente());
stmt.setInt(3, venda.getCod_orcamento());
stmt.setDate(4, new Data().formata(venda.getData_venda()));
stmt.setDate(5, new Data().formata(venda.getData_fechamento()));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Acontece que quando escrevo as linhas 24 e25 do meu DAO no Eclipse da forma que está acima o Eclipse mostra o erro: "The method formata(String) in the type Data is not applicable for the arguments (Date)". Pelo que entendi até agora é que se eu tenho um campo para data no formulário JSP e capturar o valor dele, este valor virá no formato String, então eu tenho que formatar pro tipo Date no formato AAAA-DD-MM pra salvar no MySQL estou certo? Não estou encontrando uma solução para contornar isto. Alguém tem alguma idéia?