Поскольку вы используете Hibernate, но не пользуетесь всеми его возможностями, я предлагаю сначала ознакомиться с базовым руководством по Hibernate. Учебное пособие, описанное в Hibernate Reference , хорошо для начала.
Несмотря на это, вам нужно создать модельный объект, который представляет одну сущность таблицы Opcemployees
(я бы лучше переименовал ее в Opcemployee
, но это уже другая история), а также другую, которая представляет одну сущность Dailytimesheet
таблица.
public class Opcemployee {
private String nom;
private String prenom;
private Dailytimesheet dailytimesheet;
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
// Add/generate remnant of constructors, getters and setters.
}
public class Dailytimesheet {
private Date trackingDate;
private String activity; // Not sure if this is supposed to be String.
private String projectCode;
// ...
// Add/generate constructors, getters and setters.
}
Эти объекты должны иметь private
свойства и public
геттеры и сеттеры. Большинство IDE, таких как Netbeans, Eclipse и IntelliJ, могут автоматически сгенерировать их для вас. Существует даже плагин HibernateTools , который может делать все это почти автоматически с помощью нескольких щелчков мыши в зависимости от существующей модели базы данных.
Если все правильно сделано и настроено, вам следует запросить данные в сервлете следующим образом:
List<Opcemployee> opcemployees = session.createQuery("from Opcemployees").list();
Теперь у вас есть List
объектов модели, которые можно использовать в JSP. Вам нужно позволить сервлету сохранить этот список в области запроса и перенаправить запрос в JSP.
request.setAttribute("opcemployees", opcemployees);
request.getRequestDispatcher("page.jsp").forward(request, response);
Таким образом, он доступен для ${opcemployees}
в page.jsp
.
<p>All employees: ${opcemployees}</p>
Но это неправильно отформатировано. Это результат List#toString()
. Как будто вы делаете System.out.println(opcemployees)
в сервлете. Вам нужно перебрать его, используя тег JSTL c:forEach
(просто установите jstl-1.2.jar в /WEB-INF/lib
для его установки):
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<c:forEach items="${opcemployees}" var="opcemployee">
<p>${opcemployee}</p>
</c:forEach>
Это делает то же самое, что и в обычном коде Java:
for (Opcemployee opcemployee : opcemployees) {
System.out.println(opcemployee);
}
Это становится немного лучше. Каждый предмет печатается отдельно. Но мы хотим, чтобы каждое свойство элемента находилось в отдельной ячейке таблицы. Поэтому нам нужно написать таблицу HTML вокруг нее и напечатать новый <tr>
на каждой итерации и получить доступ ко всем свойствам отдельно внутри <td>
.
<table>
<c:forEach items="${opcemployees}" var="opcemployee">
<tr>
<td>${opcemployee.nom}</td>
<td>${opcemployee.prenom}</td>
<td>${opcemployee.dailytimesheet.trackingDate}</td>
<td>${opcemployee.dailytimesheet.activity}</td>
<td>${opcemployee.dailytimesheet.projectCode}</td>
</tr>
</c:forEach>
</table>
${opcemployee.nom}
в основном делает System.out.println(opcemployee.getNom())
. Как видите, вы можете связать методы получения в EL. ${opcemployee.dailytimesheet.projectcode}
напечатает результат opcemployee.getDailytimesheet().getProjectCode()
.
Надеюсь, это поможет. Также смотрите этот учебник по JSP / сервлету . Этот же сайт также поставляется с отличными учебными пособиями по Hibernate .