Kinn ha scritto:
Potresti farmi un esempio banalissimo di servlet con forward a JSP?
Certo. Molto abbozzato ma giusto per farti capire.
Immagina di avere una classe Libro con le proprietà "titolo" e "editore" (con i corrispettivi metodi setter e/o getter getTitolo() ecc....).
Nella Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ......
List<Libro> libri = //.... da DB/logica ....
request.setAttribute("listaLibri", libri);
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/view/lista-libri.jsp");
dispatcher.forward(request, response);
}
Nella pagina in /WEB-INF/view/lista-libri.jsp:
<%@ page pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
........
</head>
<body>
<table>
<c:forEach items="${listaLibri}" var="libro">
<tr>
<td><c:out value="${libro.titolo}"/></td>
<td><c:out value="${libro.editore}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
Il client
non riceve quei <c:forEach> e <c:out> ma l'output generato dalla esecuzione sul server di questi custom-tag di JSTL (JSTL è una libreria che va chiaramente inserita nella applicazione).
Se la lista dei libri contenesse es. 2 libri, il client riceverebbe es.:
<html>
<head>
........
</head>
<body>
<table>
<tr>
<td>TITOLO 1</td>
<td>EDITORE 1</td>
</tr>
<tr>
<td>TITOLO 2</td>
<td>EDITORE 2</td>
</tr>
</table>
</body>
</html>
(qui ho semplificato ... ci sono delle righe vuote in più dovute ai custom tag, che una volta tolti ... la riga resta vuota)