Я пытаюсь получить доступ к базе данных с помощью этих функций.Я уже проверил запрос, и он работает, но у меня есть две проблемы: 1) У меня есть данные в Timestamp с типом зоны в моей базе данных PostgreSQL, и когда я пытаюсь распечатать их в Java, он печатает, например,
01.01.1970 13.35
вместо значения, записанного в БД.
2) Когда я распечатываю URL-адреса с использованием сервлета, он печатает первое значение в базе данных, повторяемое для номера строки, которую он должен распечатать, в то время какв классе DAO он печатает правильные значения url.
Например, в DAO он печатает:
http://seesaa.net/cubilia.jpg01.01.1970 13.35
http://seesaa.net/cubilia.jpg01.01.1970 14.07
https://msn.com/sit/amet/consectetuer/adipiscing/elit.aspx01.01.1970 14.10
http://examiner.com/ultrices/posuere/cubilia/curae/donec/pharetra.png01.01.1970 14.27
https://google.co.uk/est/donec/odio/justo/sollicitudin/ut/suscipit.js01.01.1970 14.30
http://seesaa.net/cubilia.jpg01.01.1970 14.32
https://dyndns.org/nulla/justo.js01.01.1970 14.46
http://seesaa.net/cubilia.jpg01.01.1970 15.04
и в сервлете:
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
http://seesaa.net/cubilia.jpg
Thisэто класс DAO:
public static ArrayList<SessioneLettura> cronologiaPagine(int id) {
DBManager dbmanager = new DBManager();
Connection conn = dbmanager.getConnection();
PreparedStatement pstmt;
Pagina pagina= new Pagina();
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH.mm");
ArrayList<SessioneLettura> sessionelettura = new ArrayList<SessioneLettura>();
try {
pstmt = conn.prepareStatement(
"SELECT sessionelettura.url as url, sessionelettura.data as data FROM sessionelettura INNER JOIN sessione ON codice= sessionelettura.sessione WHERE sessione.utente=?");
pstmt.setInt(1, id);
ResultSet p = pstmt.executeQuery();
while (p.next()) {
pagina.setUrl(p.getString("url"));
SessioneLettura s = new SessioneLettura((sdf.format(p.getTimestamp("data"))),pagina);
System.out.println(s.getPagina().getUrl() + "" + s.getDataletta());
sessionelettura.add(s);
}
conn.commit();
pstmt.close();
conn.close();
} catch (
SQLException e) {
e.printStackTrace();
}
return sessionelettura;
}
А это сервлет:
private void cronologia(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("idUtente"));
for (SessioneLettura sa : DataAccess.cronologiaPagine(id)) {
String url = sa.getPagina().getUrl();
System.out.println(url);
}
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Cronologia.jsp?&idUtente="+id);
request.setAttribute("cronologia", DataAccess.cronologiaPagine(id));
dispatcher.forward(request, response);
}