Ciao a tutti.
Ho il seguente problema:
Sto facendo una java web application molto semplice in cui memorizzo nel database i dati relativi a una persona: nome, cognome e data di nascita.
L'applicazione sembra funzionare tranne per il fatto che, inserendo una data (ad esempio 07/03/2019) mi ritrovo sul db tale data diminuita di un giorno, ovvero 2019-03-06. Com'è possibile?
Potreste dirmi come fixare tale problema?
Di seguito il codice:
Il bean:
La servlet:
La classe che mi permette di convertire la data dal formato stringa al formato java.sql.Date
La Jsp con il form per l'inserimento dei dati
Il Dao
Ho il seguente problema:
Sto facendo una java web application molto semplice in cui memorizzo nel database i dati relativi a una persona: nome, cognome e data di nascita.
L'applicazione sembra funzionare tranne per il fatto che, inserendo una data (ad esempio 07/03/2019) mi ritrovo sul db tale data diminuita di un giorno, ovvero 2019-03-06. Com'è possibile?
Potreste dirmi come fixare tale problema?
Di seguito il codice:
Il bean:
Codice:
import java.io.Serializable;
import java.sql.Date;
public class Persona implements Serializable {
private int idPersona;
private String nome;
private String cognome;
private Date dataNascita;
public Persona() {
super();
}
public Persona(String nome, String cognome, Date dataNascita) {
super();
this.nome = nome;
this.cognome = cognome;
this.dataNascita = dataNascita;
}
public Persona(int idPersona, String nome, String cognome, Date dataNascita) {
super();
this.idPersona = idPersona;
this.nome = nome;
this.cognome = cognome;
this.dataNascita = dataNascita;
}
public int getIdPersona() {
return idPersona;
}
public void setIdPersona(int idPersona) {
this.idPersona = idPersona;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public Date getDataNascita() {
return dataNascita;
}
public void setDataNascita(Date dataNascita) {
this.dataNascita = dataNascita;
}
}
La servlet:
Codice:
package servlet;
import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;
import java.text.ParseException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Persona;
import dao.ProvaDao;
import utility.ManipolazioneDate;
/**
* Servlet implementation class Inserimento
*/
@WebServlet("/Inserimento")
public class Inserimento extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public Inserimento() {
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String nome = request.getParameter("nome");
String cognome = request.getParameter("cognome");
String dataNascita = request.getParameter("dataNascita");
Date dataN = null;
try {
dataN = (Date) ManipolazioneDate.convertiData(dataNascita);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Persona p = new Persona(nome, cognome, dataN);
System.out.println(p.getNome());
System.out.println(p.getCognome());
System.out.println(p.getDataNascita());
try{
ProvaDao.registraPersona(p);
}catch(SQLException e){
e.printStackTrace();
}
}
}
La classe che mi permette di convertire la data dal formato stringa al formato java.sql.Date
Codice:
package utility;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ManipolazioneDate {
public static Date convertiData(String data) throws ParseException{
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date parser = format.parse(data);
java.sql.Date dataSql = new java.sql.Date(parser.getTime());
return dataSql;
}
}
La Jsp con il form per l'inserimento dei dati
HTML:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<form action="/Prova/Inserimento" method="get">
<p>Nome</p>
<input type="text" value="" name="nome">
<br>
<p>Cognome</p>
<input type="text" value"" name="cognome">
<br>
<p>Data di nascita</p>
<input type="text" value="" name="dataNascita">
<br>
<input type="submit" value="Invia">
</form>
</div>
</body>
</html>
Il Dao
Codice:
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import bean.Persona;
import utility.Connessione;
public class ProvaDao {
public static void registraPersona(Persona persona) throws SQLException{
Connection conn = Connessione.getConnection();
PreparedStatement ps = null;
String ins = "insert into prova2.persona(nome, cognome, dataNascita) values(?,?,?)";
try{
ps = conn.prepareStatement(ins);
ps.setString(1, persona.getNome());
ps.setString(2, persona.getCognome());
ps.setDate(3, persona.getDataNascita());
ps.executeUpdate();
System.out.println("Persona inserita");
}catch(SQLException e){
System.out.println(e.getMessage());
System.out.println("Errore nell'inserimento");
}finally{
if(ps != null){
ps.close();
}
if(conn != null){
conn.close();
}
}
}
}
Ultima modifica: