Mais um erro na minha JSP

9 respostas
M

É os eguinte galera…

faiz uma jsp pra conectar no bd e mostrar os dados:

<%@page import="java.sql.*"%>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try{
	Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
	System.out.println("naum carregou o driver");
}
try{
	conn = DriverManager.getConnection("jdbc:odbc:teste");
	stmt = conn.createStatement();
	rs = stmt.executeQuery("select * from clientes");
}
catch(SQLException e){
	System.out.println("erro de sql");
}

%>
<html>
<head>
</head>
<body>

<table>
<%while (rs.next()){%>
<tr>
	<th>
	<%=rs.getString("nome")%>
	</th>
	
	<th>
	<%=rs.getString("cidade")%>
	</th>
</tr>
<%}%>
</table>

</body>
</html>

veja o servlet gerado por ela:

package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;

public final class recebe_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static java.util.Vector _jspx_dependants;

  public java.util.List getDependants() {
    return _jspx_dependants;
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    JspFactory _jspxFactory = null;
    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;


    try {
      _jspxFactory = JspFactory.getDefaultFactory();
      response.setContentType("text/html");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write('\r');
      out.write('\n');

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try{
	Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
	System.out.println("naum carregou o driver");
}
try{
	conn = DriverManager.getConnection("jdbc:odbc:teste");
	stmt = conn.createStatement();
	rs = stmt.executeQuery("select * from clientes");
}
catch(SQLException e){
	System.out.println("erro de sql");
}


      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("<P>\r\n");
      out.print(request.getParameter("txtNome"));
      out.write('\r');
      out.write('\n');
      out.print(request.getParameter("txtCidade"));
      out.write('\r');
      out.write('\n');
      out.print(request.getParameter("txtTelefone"));
      out.write("</P>\r\n");
      out.write("\r\n");
      out.write("<table>\r\n");
while (rs.next()){
      out.write("\r\n");
      out.write("<tr>\r\n");
      out.write("\t\r\n");
      out.write("</tr>\r\n");
}
      out.write("\r\n");
      out.write("</table>\r\n");
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
    } catch (Throwable t) {
      if (!(t instanceof SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          out.clearBuffer();
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
      }
    } finally {
      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

ta danu este erro:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NullPointerException
	org.apache.jsp.recebe_jsp._jspService(org.apache.jsp.recebe_jsp:82)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
Apache Tomcat/5.5.9

[/code]

9 Respostas

M

me diz qual é a linha 82 do servlet gerado q te digo o erro :joia:

S

não sei qual é a linha 82, mas provavelmente o erro é na hora que você pega a conexão, ela não está sendo encontrada.

B

O problema pode ser no while rs.next(), pois se der algum erro na hora de executar o SQL, o rs ficará como null, e você faz referencia a ele fora do try, logo ele irá acessar um objeto que não foi criado.

M

acho que estava ocorrendo isto mesmo.

como devo fazer intaum?

gostaria de mostrar os dados dessa foma, em uma tabela…

como vcs me aconselham?

M

Mexi um pouco no codigo…Naum quer mostrar os dados do bd.
Naum da nenhum erro, apenas mostra uma pagina em branco.
O q pode ser?

aqui ta a jsp.

<%@page import="java.sql.*"%>

<html>
<head>
</head>
<body>


<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try{
	Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
	System.out.println("naum carregou o driver");
}
try{
	conn = DriverManager.getConnection("jdbc:odbc:teste");
	stmt = conn.createStatement();
	rs = stmt.executeQuery("select * from clientes");

	while (rs.next()){
	System.out.println(rs.getString(1));
	System.out.println(rs.getString(2));
	}

}
catch(SQLException e){
	System.out.println("erro de sql");
}

%>


</body>
</html>
M

conferiu o console do container pra ver se não estoura nada?

M

como assim?

mudei
System.out.println para out.println, mas memso assim ainda naum funcionou

M

Salve,

tente retirar o trecho:

Class c

acho que resolve

M

Consegiu…

foi só tirar o tratamento de erros que deu certo…

valeu pelas dicas…

Criado 24 de maio de 2005
Ultima resposta 25 de mai. de 2005
Respostas 9
Participantes 5