GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[Resolvido] Re:JSTL - Acesso ao banco MySQL não funciona (nem com reza brava! rsrsrs...)


#1

Boa tarde a todos!

Sou iniciante em JSP e estou utilizando um livro chamado "Tudo sobre JSP com Netbeans em aplicações distribuídas" para aprender.
Estou seguindo fielmente todos os exemplos do livro. Fazendo um por um. Contudo, ao chegar no capítulo 3 (Utilizando JSTL), me deparei com um exemplo (o primeiro) que não consigo fazer funcionar de jeito nenhum. Desde ontem pela manhã estou consultando artigos e fóruns na web mas ainda não tive nenhum resultado positivo.

O código do exemplo é o seguinte:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"  %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Jakarta-Taglibs</h1>
        <sql:setDataSource var="con"
                           driver="com.mysql.jdbc.Driver"
                           url="jdbc:mysql://localhost:3306/bdjsp?useUnicode=true"
                           user="root"
                           password="123456" 
        />
        <sql:query var="rs" dataSource="${con}">
            SELECT user FROM user
        </sql:query>
        <b>Seus usuários são:</b><br>
        <c:forEach var="row" items="${rs.rowsByIndex}">
            <c:out value="${row[0]}"/>
        </c:forEach>      
    </body>
</html>
  • O banco de dados "bdjsp" já foi criado e já conectei através do próprio NetBeans.
  • Também baixei o driver do MySQL (mysql-connector-java-5.1.18-bin.jar) e o adicionei ao projeto.

Não sei se faz diferença, mas o NetBeans criou automaticamente dois arquivos xml para o projeto e ambos ficam dentro de uma sub-pasta chamada "WEB-INF", são eles:

  • "web.xml"

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
  • "glassfish-web.xml"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
</glassfish-web-app>

Bem, acho que estas são todas as informações sobre o projeto, que na verdade nada mais é do que um exemplo.

O erro que dá quando o projeto é executado é o seguinte:

exception
javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/bdjsp?useUnicode=true"
root cause
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/bdjsp?useUnicode=true"
  • Li uma dúvida aqui no fórum que dizia para tirar o "3306" da url de conexão. Fiz isto, mas também não funcionou.

Se alguém puder ajudar, serei muito grato, pois, já faz um tempão que estou agarrado nesta parte.

Desde já, muito obrigado!


#2

Olá amigo, vc adicionou o jar do MySQLConectorJ no seu classpath? Adicione esse jar.
E depois verifique se seu MySQL esta permitindo conexoes TCP/IP externas para o seu usuario configurado na conexao ex.: root ou admin etc...

Para garantir rode a seguinte sql no seu MySQL e comita depois:
[code]

GRANT ALL PRIVILEGES ON . TO usuario@'%' // usuario é o nome do seu usuario usado na conexao ex.: root ou admin, etc...

[code]

Espero ter ajudao fallow


#3

Bom amigos, consegui resolver o problema. Depois de muitos fóruns percorridos encontrei um que me direcionou a fazer o seguinte.

Colocar uma cópia do arquivo "mysql-connector-java-5.1.18-bin.jar" no seguinte diretório:

".../jdk1.7.0/jre/lib/ext"

Após fazer a cópia, fechei e abri o NetBeans e tudo funcionou perfeitamente.

Ao amigo Paulo1911 que respondeu a minha dúvida e a todos que a leram no intuito de me ajudar, deixo aqui meus sinceros agradecimentos.


#4