Hallo,
ich habe ein Problem mit der Darstellung einer Tabelle.
Was ich zur Zeit habe:
Servlet – DB-Abfrage
JSP - Ausgabe der Daten
Hier werden alle Namen ausgegeben, die mit dem Buchstaben A anfangen. Das funktioniert auch soweit ganz gut. Die Ausgabe sieht dann so aus:
A
Name1 | Name2 | Name3 | Name4 | Name5 | Name6 | …
Die Namen werden alle in einer Zeile ausgegeben. Bei sehr vielen Namen ist das natürlich nicht schön. Ich würde gerne nach jedem dritten Namen in eine neue Zeile springen:
A
Name1 | Name2 | Name3
Name4 | Name5 | Name6
Hat jemand eine Idee, wie man sowas realisieren könnte? Ich wäre für jeden Lösungsansatz dankbar.
P.S.: Das ist mein erstes Projekt mit Servlets/JSP. Für allgemeine Verbesserungsvorschläge bin ich sehr dankbar.
ich habe ein Problem mit der Darstellung einer Tabelle.
Was ich zur Zeit habe:
Servlet – DB-Abfrage
Code:
public class Namensuebersicht extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
Statement st = null;
ResultSet result = null;
ArrayList<HashMap<String, String>> daten = new ArrayList<HashMap<String, String>>();
response.setContentType("text/html");
//Verbindung zur Datenbank
Connection connection = new Verbindung().getConnection();
try {
st = connection.createStatement();
result = st.executeQuery("select Name from Personen order by Name");
ResultSetMetaData meta = result.getMetaData();
int col = meta.getColumnCount();
while(result.next()){
HashMap<String, String> map = new HashMap<String, String>();
for (int i = 0; i < col; i++) {
int c = i + 1;
map.put(meta.getColumnName(c), result.getString(c));
}
daten.add(map);
}
result.close();
st.close();
connection.close();
request.setAttribute("Namen", daten);
RequestDispatcher view = request.getRequestDispatcher("Ausgabe.jsp");
view.forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
JSP - Ausgabe der Daten
Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<body>
<h1>Namen</h1>
<table border="1">
<tr>
<th>A</th>
</tr>
<tr>
<c:forEach var="row" items="${Namen}" >
<c:choose>
<c:when test="${fn:substring(row.NAME, 0, 1) == 'A'}">
<td>${row.NAME}</td>
</c:when>
</c:choose>
</c:forEach>
</tr>
</table>
</body>
</html>
Hier werden alle Namen ausgegeben, die mit dem Buchstaben A anfangen. Das funktioniert auch soweit ganz gut. Die Ausgabe sieht dann so aus:
A
Name1 | Name2 | Name3 | Name4 | Name5 | Name6 | …
Die Namen werden alle in einer Zeile ausgegeben. Bei sehr vielen Namen ist das natürlich nicht schön. Ich würde gerne nach jedem dritten Namen in eine neue Zeile springen:
A
Name1 | Name2 | Name3
Name4 | Name5 | Name6
Hat jemand eine Idee, wie man sowas realisieren könnte? Ich wäre für jeden Lösungsansatz dankbar.
P.S.: Das ist mein erstes Projekt mit Servlets/JSP. Für allgemeine Verbesserungsvorschläge bin ich sehr dankbar.