Daí
Não sei se é bem isso que tu tás querendo, mas vamos lá.
Se tu tens 2 páginas:
- consulta.jsp
- resultado.jsp
Na página de consulta, é onde tu mostras os links e na página de resultado, é pra onde os links vão apontar.
O que tu podes fazer é o seguinte, então:
Para montar os links (consulta.jsp)
<%
try
{
consulta= "select t.CON_CODIGO from tabela t";
rs = st.executeQuery(consulta);
if (rs.hasResults) <-- não sei se é esse método, é só pra ver se tem algo
{
%>
<TABLE>
<TR>
<TH>Código:</TH>
<TH>Link</TH>
</TR>
<%
int i = 0;
do
{
if ( i == 0 )
x = "<TR>";
x += "<TD>" + rs.getString("CON_CODIGO") + "</TD>";
x += "<TD><A HREF=\"resultado.jsp?codigo=" + rs.getString("CON_CODIGO") + "\">aqui</A></TD>";
i++;
if ( i == 4)
x += "</TR>";
%><%= x %><%
}
while (rs.next());
for (i; i < 4; i++)
{
%> <TD>&nbsp;</TD> <%
if ( i == 4 )
%> </TR> <%
}
}
%>
</TABLE>
<%
else
%><%= "A consulta não retornou códigos." %><%
}
catch (Exception e)
{
%><%= "Ocorreu um erro durante a consulta <BR>" %><%
%><%= e.getMessage() %><%
%><%= e.printStackTrace() %><%
}
Beleza, é cumprido, mas fica bonitinho 
Pra montar os resultados (resultado.jsp)
/**
* Supondo que existam os campos:
* - Nome;
* - Código; e,
* - Local;
*/
<%
try
{
consulta = "select * from livros l where l.codigo = ";
consulta += request.getParameter("codigo");
rs = st.executeQuery(consulta);
if (rs.hasResults())
{
%>
<TABLE>
<TR>
<TH>Nome</TH>
<TH>Código</TH>
<TH>Local</TH>
</TR>
<TR>
<TD><%= rs.getString("NOME") %></TD>
<TD><%= rs.getString("CON_CODIGO") %></TD>
<TD><%= rs.getString("LOCAL") %></TD>
</TR>
</TABLE>
<%
}
else
{
%>Não existem dados para o código informado.<%
}
}
catch (Exception e)
{
%><%= "Ocorreu um erro durante a consulta <BR>" %><%
%><%= e.getMessage() %><%
%><%= e.printStackTrace() %><%
}
%>
Beleza ?
Bah, saiu o programa inteiro, cruz credo 
[]s