Estou tendo problemas para atribuir valores de um recordset (
<%
…
a = rs.getString(1);
…
%>
com esta exceção na tela do browser:
"javax.servlet.ServletException: too many servlet includes"
Help Please.
Problemas com resultset
8 Respostas
Plima,
Parece que o erro não está exatamente aí, coloque o código inteiro aqui para podermos avaliar.
Volnei Granado Munhoz 
Antes de atribuir um valor, vc deve mover o cursor p/ o primeiro registro …
Além disso, vc fez include das classes java.sql.* ???
<%
…
if ( rs.next() ) {
a = rs.getString(1);
}
…
%>
Ola,
enquanto esperamos cv colocar o resto do codigo para podermos te ajudar, deixo a dica:
Nao eh aconselhavel trabalhar com a camada de dados diretamente em uma visualizacao, ou seja, trabalhar com ResultSet no JSP.
Sempre aconelho as pessoas a utilizarem o padrao MVC mas, se vc relamente que usar duas camadas, procure usar JSTL (Java standart tag libs). Ela possui uma API que facilita bastante trabalhar com arquitetura 2 camadas.
Inclusive saiu uma materia sobre isto na ultima Java Magazine (num. 4). "Criando um mural com JSP e JSTL", por Fernando Anselmo. Pg. 31
Estou trabalhando com JSP a menos de 2 semanas, peço desculpas pelas falhas graves.
Segue abaixo o código.
<%<a class="mention" href="/u/page">@page</a> contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.<em>,<a href="http://java.io">java.io</a>.</em>" errorPage="" %>
<html>
<head>
<title>Teste1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<%
String url = "jdbc:odbc:teste";
String stDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
Connection conn = null;
Statement query = null;
ResultSet rs = null;
String a;
try{ // tentativa de conexão
Class.forName(stDriver).newInstance();
conn = DriverManager.getConnection(url);
query = conn.createStatement();
}
catch(Exception e){ out.print("Erro: " + e); }
try{ // execução da query
rs = query.executeQuery("select * from Jsptut");
}
catch (SQLException e){ out.print("Erro: " + e); }
<body>
<%
while(rs.next()) { //loop enquanto existir registros no rs
a = rs.getString(1);
%>
<%=a %>
<% } %>
</body>
</html>
<% rs.close();
query.close();
conn.close();
%>
[ Esta mensagem foi editada por: plima em 18-02-2003 15:54 ]
Olá Plima, não sei se foi erro de digitação no fórum, mais está faltando um
" %> " para fechar o primeiro "<% ", outra coisa é que não é legal criar a conexão dentro de uma página Jsp, sei e do que é mais prático em fase de testes, porém não acustume-se.
Atenciosamente,
Volnei Granado Munhoz 
Bom, o erro é de digitação… hehe
A idéia deste jsp é simplesmente pegar a informação do primeiro campo de cada registro e imprimir na tela, portanto, segui a seguinte sequência lógica:
Conectar -> Pegar informações -> Mostrar na Tela -> Desconectar
na parte de mostrar na tela, existe outra maneira que eu possa fazer isso???
por exemplo armazenando em um vetor, ou algo assim?
Valeu. :-o
Uma dica!
Coloque um try logo no começo do código e um catch no final para tratar as excessões de ServletException
<% try{ %>
–sua página–
<% }catch(ServletException se){
se.getRootCause();
se.printStackTrace();
}%>
Agora lembre-se isso é só para testar, ele deverá imprimir uma mensagem diferente da atual, se acaso você não intender a mensagem coloque aqui para que possamos analisá-la.
Volnei <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=6" title=":wink:" class="emoji" alt=":wink:">
Consegui fazer as atribuições corretamente.
Passei a usar o TomCat, pois estava utilizando o Resin.
Grato
Paulo Lima