The <c:forEach> tag from the JSTL is perfect for this—it gives you a simple way to iterate over arrays and collections.
Crash refresher on HTML tables
Tables are pretty straightforward. They’ve got cells, arranged into rows and columns, and the data goes inside the cells. The trick is telling the table how many rows and columns you want.
Rows are defined with the <tr> (Table Row) tag, and columns are defined with the <td> (Table Data) tag. The number of rows comes from the number of <tr> tags, and the number of columns comes from the number of <td> tags you put inside the <tr></tr> tags.
Data to print/display goes only inside the <td> </td> tags!