Problemas Jstl No suitable driver found - (Resolvido)

13 respostas
fvargas_tkd

Oi pessoal, pesquisei muito aqui no fórum mas não achei nada que pudesse me ajudar. Eu to desenvolvendo uma aplicação web, que depois de passar pela tela de login, é redirecionada para uma outra página chamada wellcome.jsp. Esta página pega as informações no banco usando as taglibs padrões da Sun, as Jstl. Até tudo funciona bem. O problema é que tenho outras páginas que tabém pegam informações no banco de dados, e mesmo eu colocando todos os import, todas as coniguações de taglib da página anterior elas não funcionam. Bom eu sou novato e to aprendendo ainda, então não sei se posso usar taglib para as outras páginas ou somente em uma, mas acredito eu ser possível. Aparentemente não tem nada errado, e simplesmente não carrega a página direito, aparece em branco só com o html puro e nem css pega nela. eu vou postar aqui o código da página e espero que os amigos possam me audar. Agradeço de coração por enquanto.

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@page import="java.sql.*"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="javax.servlet.*"%>
<%@page import="javax.servlet.http.*"%>

<!-- Faz conexão com o banco -->
<sql:setDataSource var="banco"
                   driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/Namoro"
                   user="root"
                   password=""
                   scope="session" />
<//sql:transaction dataSource="banco"/>

<!-- Variavel global para identificação de cada usuário -->                   
<c:set var="id" value="${id}"/>

<!-- consulta a tabela de cadastro -->
<sql:query var="rset_cadastro" dataSource="${banco}">
    select * from Namoro.cadastro where id = ?
    <sql:param value = "${id}" />
</sql:query>

<!-- consulta a tabela de caracteristicas -->
<sql:query var="rset_carac" dataSource="${banco}">
    select * from Namoro.caracteristicas where id = ?
    <sql:param value = "${id}" />
</sql:query>

<!-- Consulta a tabela local -->
<sql:query var="rset_local" dataSource="${banco}">
    select * from Namoro.local where id = ?
    <sql:param value = "${id}" />
</sql:query>

<!-- Apresentação da página ao usuário-->

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <META Http-equiv="Content-Style-Type" content="text/css; charset=UTF-8">
        <!--<link Href="correio.css" rel="stylesheet" type="text/css"></link> -->

            <!--<style type="text/css" src="css/correio.css"></style>-->
        <link type="text/css" rel="stylesheet" href="css/wellcome.css" />

        <title>Bem vindo!</title>

    </head>
    <body>

        <%
        String x = "${banco}";
        System.out.println(x);
        String teste;





        %>
        <%=x%>

        &lt;div id="head"&gt; <a >Bem vindo </a> | <a >Correio </a> | <a >Busca </a> | <a >Meu Perfil </a> |<a > Minha Conta </a> | <a >Assine </a> | &lt;/div&gt;
        &lt;div id="leftbox"&gt;

            &lt;!-- Resultado tabela cadastro --&gt;
            &lt;c:forEach var="cadastro" items="${rset_cadastro.rows}"&gt;

                Nome: &lt;c:out value= "${cadastro.nome}"/&gt; <br/>
                Sobrenome: &lt;c:out value= "${cadastro.sobrenome}" /&gt; <br />
                Aniversário: &lt;c:out value= "${cadastro.nascimento}" /&gt; <br />
                E-mail: &lt;c:out value= "${cadastro.email}" /&gt; <br />

            &lt;/c:forEach&gt;

        &lt;/div&gt;
        &lt;div id="centerbox"&gt;


        &lt;/div&gt;
        &lt;div id="rigthbox"&gt; o que está faltando aqui? &lt;/div&gt;


    &lt;/body&gt;
&lt;/html&gt;

13 Respostas

Fabio_Baptista

Boas Fabio,

não entendi direito seu problema, vc disse que pega as mesmas tags de outra página?, onde está ocorrendo o erro exatamente?
não está apresentando seu pesquisa? ou nem o sql rola?

o ID do seu usuario tá chegando normal pra sua consulta rolar?

fvargas_tkd

Opa olá chará…olha só, o problema é que como vc vê no código acima, tenho outra página que se chama wellcome, eu copiei os dados dela para esta, que chamei de correio, não rola nada, página só mostra o html básico, não mostra o resultado das consultas, não mostra erro no tomcat e não recebe o estilo css…esse é o meu problema…uma coisa interessante é o seguinte, bem no inicio da página eu deixei comentado um sql datasource, porque esse sim mostra erro no tomcat, dizendo que não achou o driver apropriado,só que a página anterior funciona bem (wellcome.jsp)…e esta não,como pode isso …

Fabio_Baptista

posta o codigo dessa outra pagina que ta rolando pra darmos uma olhada…

abraço

fvargas_tkd

Lá vái o código:

&lt;%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt; 
&lt;%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%&gt;
&lt;%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%&gt;
&lt;%@page import="java.sql.*"%&gt;
&lt;%@page import="java.sql.DriverManager"%&gt;
&lt;%@page import="java.sql.PreparedStatement"%&gt;
&lt;%@page import="java.sql.Statement"%&gt;
&lt;%@page import="java.sql.ResultSet"%&gt;
&lt;%@page import="javax.servlet.*"%&gt;
&lt;%@page import="javax.servlet.http.*"%&gt;

&lt;!-- Faz conexão com o banco --&gt;
&lt;sql:setDataSource var="banco"
                   driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/Namoro"
                   user="root"
                   password=""
                   scope="session" /&gt;

&lt;!-- Variavel global para identificação de cada usuário --&gt;                   
&lt;c:set var="id" value="${id}"/&gt;                   

&lt;!-- consulta a tabela de cadastro --&gt;
&lt;sql:query var="rset_cadastro" dataSource="${banco}"&gt; 
    select * from Namoro.cadastro where id = ?
    &lt;sql:param value = "${id}" /&gt;
&lt;/sql:query&gt;

&lt;!-- consulta a tabela de caracteristicas --&gt;
&lt;sql:query var="rset_carac" dataSource="${banco}"&gt;
    select * from Namoro.caracteristicas where id = ?
    &lt;sql:param value = "${id}" /&gt;
&lt;/sql:query&gt;

&lt;!-- Consulta a tabela local --&gt;
&lt;sql:query var="rset_local" dataSource="${banco}"&gt;
    select * from Namoro.local where id = ?
    &lt;sql:param value = "${id}" /&gt;
&lt;/sql:query&gt;

&lt;!-- Aprensentação da página ao usuário ------------------------------------------------------------&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
        &lt;link rel="stylesheet" type="text/css" href="css/wellcome.css" /&gt;
        &lt;title&gt;Bem vindo ao Enamorados, o seu site de relacionamentos. &lt;/title&gt;
    &lt;/head&gt;

    &lt;body&gt;

        &lt;div id="head"&gt; <a >Bem vindo </a> | <a >Correio </a> | <a >Busca </a> | <a >Meu Perfil </a> |<a > Minha Conta </a> | <a >Assine </a> | &lt;/div&gt; &lt;!--Div de programação do cabeçalho da página --&gt;
        &lt;div id="leftbox"&gt; &lt;!--Div de programação do box esquerdo da página --&gt;

            &lt;!-- Resultado tabela cadastro --&gt;
            &lt;c:forEach var="cadastro" items="${rset_cadastro.rows}"&gt;

                Nome: &lt;c:out value= "${cadastro.nome}"/&gt; <br/>
                Sobrenome: &lt;c:out value= "${cadastro.sobrenome}" /&gt; <br />
                Aniversário: &lt;c:out value= "${cadastro.nascimento}" /&gt; <br />
                E-mail: &lt;c:out value= "${cadastro.email}" /&gt; <br />

            &lt;/c:forEach&gt;


            &lt;!-- Resultado tabela caracteristicas --&gt;
            &lt;c:forEach var="caracteristicas" items="${rset_carac.rows}"&gt;

                Altura: &lt;c:out value= "${caracteristicas.altura}"/&gt; <br/>
                Peso: &lt;c:out value= "${caracteristicas.peso}"/&gt; <br/>
                Tipo fisico: &lt;c:out value= "${caracteristicas.tipo_fisico}" /&gt; <br/>
                Me considero: &lt;c:out value= "${caracteristicas.me_considero}" /&gt; <br />
                Tom pele: &lt;c:out value= "${caracteristicas.tom_pele}" /&gt; <br />


            &lt;/c:forEach&gt;



        &lt;/div&gt; &lt;!--Fim div do box esquerdo --&gt;
&lt;!--------------------------------------------------------------------------------------------------&gt;



        &lt;div id="centerbox"&gt; &lt;!--Div de programação do box central --&gt;

            &lt;c:forEach var="users" items="${rset_cadastro.rows}"&gt; &lt;!--Mostra resulset tabela cadastro --&gt;
        &lt;c:forEach var="user_local" items="${rset_local.rows}"&gt;&lt;!--Mostra resultset tabela local --&gt;

                    &lt;h1&gt;Bem vindo &lt;c:out value= "${users.nome}" /&gt; &lt;/h1&gt;
                    &lt;h3&gt; Voce é de: &lt;c:out value= "${user_local.pais}" /&gt; &lt;/h3&gt;

                    &lt;script&gt;

                        var escreva = "${users.nome}";

                        document.write("Teste de java Script!");
                        alert(escreva);
                        window.confirm("Desejar testar?");
                        document.write(escreva);



                    &lt;/script&gt;


                    &lt;input type="text" name="Usuario" value="" /&gt;

                &lt;/c:forEach&gt;
            &lt;/c:forEach&gt;


        &lt;/div&gt;&lt;!--Fim da div de programação do box central --&gt;

&lt;!--------------------------------------------------------------------------------------------------&gt;

        &lt;div id="rigthbox"&gt; &lt;!--Div de programação do box direito --&gt;
            &lt;h1&gt;Faça aqui sua propaganda &lt;/h1&gt;
            &lt;h3&gt;Propagandas do google &lt;/h3&gt;


        &lt;/div&gt;



    &lt;/body&gt;
&lt;/html&gt;
fvargas_tkd

Meu amigo, se ajudar eu fiz o seguinte, debuguei a página correio.jsp, e esse foi o resultado no console:

Anexando a localhost:11550
Executando programa do usuário
O ponto de interrupção alcançou a linha 86 no correio.jsp pelo thread http-8080-Processor24.
Thread http-8080-Processor24 parada em correio.jsp:13.
Executando programa do usuário
Thread http-8080-Processor24 parada em correio.jsp:13.
Executando programa do usuário
O ponto de interrupção alcançou a linha 13 no correio.jsp pelo thread http-8080-Processor24.


“request” não é uma variável conhecida no contexto atual.


Estranho isso, pois como vc pode ver a página wellcome.jsp funciona bem, e as outras como essa correio.jsp não.

Fabio_Baptista

Bom dia cara,

Não tenho certeza… mas tenta alterar algua coisa relacionada com o escopo da conexão que vc está criando… nunca implementei assim tudo na jsp… me parece que seu problema está nesta na parte do sql mesmo…

se você já criou o DS em outra página com scope=session, vc apens acessa ele…

abraço

fvargas_tkd

Oi meu amigo, fiz como vc recomendou e ao invés de deixar:

&lt;sql:setDataSource var="banco"
                   driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/Namoro"
                   user="root"
                   password=""
                   scope="session" /&gt;

Eu deixei assim, para pegar o scopo da mesma conexão, como vc recomendou:

&lt;c:set var="id" value="${id}"/&gt;

Bom, não certo e o apache mostrou a página de erro 500 que diz o seguinte:
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Error getting connection: “java.sql.SQLException: No suitable driver found for banco”
Só que esse é o drive certo do mysql para linux, onde estou desenvolvendo, tentei colocar outros mas dá o mesmo erro, e como te comentei antes, a página wellcome.jsp funcionava, e agora tb não funciona mais. Experimentei adicionar o seguinte no meu arquivo web.xml pra ver:

&lt;jsp-config&gt;
        &lt;taglib&gt;
            &lt;taglib-uri&gt;http://java.sun.com/jsp/jstl/core&lt;/taglib-uri&gt;
            &lt;taglib-location&gt;/WEB-INF/c.tld&lt;/taglib-location&gt;
        &lt;/taglib&gt;

E mesmo copiando o arquivo c.tld, junto com jstl.jar e standard.jar para a pasta Web-Inf, não deu certo, não sei mais o que fazer meu amigo, se tiver mais alguma sugestão pode mandar.

fvargas_tkd

Pessoal, pesquisando muito eu descobri o seguinte, se eu colocar:

&lt;%@page isELIgnored="true"%&gt;

Junto com as outras taglibs, o Tomcat vai me mostrar os erros na página, com isso eu descobri que está acontecendo o seguinte erro:

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Error getting connection: "java.sql.SQLException: No suitable driver found for banco"

Acho que se conseguir resolver isso as coisas podem dar certo, alguém tem uma idéia de como posso resolver isso?
Um abraço e todos .

Fábio.

Fabio_Baptista

Fabião, da uma analisada:

http://www.guj.com.br/posts/list/27541.java

http://www.guj.com.br/posts/list/31238.java

abraço

fvargas_tkd

Pois é meu amigo, ainda não descobi o que tá errado,qualquer novidade eu aviso.

fvargas_tkd

Pessoal, ainda não consegui resolver esse problema, no apache continua dando erro:

No suitable driver found

alguém tem uma idéia ou um tutoria de como fazer toda a configuração do apache pra esses dsn ?

Aguardo, obrigado.

fvargas_tkd

Pessoal, acho que descobri o problema, mas não sei como solucionar.
O que parece que está acontecendo é o seguinte, no Tomcat 5.5.26 eu vou na página de administração e digo que tenho um datasource="banco" e quando uso EL pra usar esse esse datasource numa consulta, eu digo que datasource="${banco}" , ou seja é diferente. Então fica mais ou menos assim no meu jsp:

&lt;!-- Faz conexão com o banco --&gt;  
 &lt;sql:setDataSource var="banco"  
                    driver="com.mysql.jdbc.Driver"  
                    url="jdbc:mysql://localhost:3306/Namoro"  
                    user="root"  
                    password=""  
                    scope="session" /&gt;

E para usar o datasource fica assim:

&lt;!-- consulta a tabela de cadastro --&gt;  
 &lt;sql:query var="rset_cadastro" dataSource="${banco}"&gt;   
     select * from Namoro.cadastro where id = ?  
     &lt;sql:param value = "${id}" /&gt;  
 &lt;/sql:query&gt;

Pessoal preciso muito resolver isso, pois vou começar a usar esses recursos no serviço e preciso muito da ajuda de voces.
Muito obrigado mesmo.

Fábio.

fvargas_tkd

Pessoal, graças a Deus consegui resolver o problema. Depois de muito fuçar, acabei por ler toda a documentação oficial do Tomcat, e descobri que meu Tomcat não tinha algumas coisas necessárias para que o pool de conexões bombasse. São elas:

* Jakarta-Commons DBCP 1.0
* Jakarta-Commons Collections 2.0
* Jakarta-Commons Pool 1.0

Beixei estes jars no commom lib do tomcat e deu tudo certo… jstl funcionando :smiley:
Agradeço a todos que me ajudaram aqui, um abraço a todos!

Fábio.

Criado 31 de dezembro de 2008
Ultima resposta 31 de jan. de 2009
Respostas 13
Participantes 2