cara testa aew, funcionou aqui, fiz com oracle
no servlet coloquei isso
[code]try {
Class.forName(DRIVER);
Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String select = "";
//escolhe sua tabela do banco
String nomeTabela = "suaTabelaDoBanco";
Statement st = con.createStatement();
HashMap<String, String> hash = new HashMap<String, String>();
ResultSet rs = st.executeQuery("SELECT * FROM "+nomeTabela +" where rownum < 1");
try {
ResultSetMetaData rsMetaData = (ResultSetMetaData) rs.getMetaData();
for(int i=1;i<=rsMetaData.getColumnCount();i++) {
//aqui vc tem todas colunas rsMetaData.getColumnName(i) e vc vai mostra-la no seu checkbox
hash.put(i+"", rsMetaData.getColumnName(i));
}
} catch (Exception e) {
e.printStackTrace();
}
rs.close();
// faz de conta q o cara escolheu o item 1,3,4 q vc selecionou no checkbox
List<String> listaChecados = new ArrayList<String>();
listaChecados.add("1");
listaChecados.add("3");
listaChecados.add("4");
List<String> names = new ArrayList<String>();
for(String s :listaChecados){
if(select.length()==0){
select += hash.get(s);
}else{
select += ","+ hash.get(s);
}
names.add(hash.get(s));
}
List<Object[]> listaJsp = new ArrayList<Object[]>();
System.out.println("select "+select+" from "+nomeTabela);
rs = st.executeQuery("select "+select+" from "+nomeTabela);
while (rs.next()) {
Object[] obj = new Object[listaChecados.size()];
for(int i=0;i<listaChecados.size();i++){
obj[i] = rs.getObject(new Integer(i+1))+"";
}
listaJsp.add(obj);
}
rs.close();
st.close();
con.close();
request.setAttribute("listaJsp",listaJsp);
request.setAttribute("names",names);
RequestDispatcher rd = request.getRequestDispatcher("teste.jsp");
rd.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}[/code]
no jstl coloquei assim
<table border="1">
<c:forEach items="${names}" var="names">
<th>
${names}
</th>
</c:forEach>
<c:forEach items="${listaJsp}" var="item">
<tr>
<c:forEach items="${item}" var="value">
<td>
${value}
</td>
</c:forEach>
</tr>
</c:forEach>
</table>