Вы должны иметь возможность перебирать заголовки
<tr>
<c:foreach var="heading" items="${results.headings}">
<th>${heading}</th>
</c:foreach>
</tr>
И затем по данным ...
<c:foreach var="row" items="${results.data}">
<tr>
<c:foreach var="i" items="${row}">
<td>${i}</td>
</c:foreach>
</tr>
</c:foreach>
Или что-то в этих строках?