Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [JSP MYSQL TOMCAT] Primi passi con i nuovi amici

    innanzitutto grazie a tutti dell'attenzione....
    il momento stà diventando catartico!!!!

    iniziamo subito come non si dovrebbe iniziare... ALLORA...
    stò instalando sul mio PC tutto il necessario per creare pagine JSP e connettermi ad un DB di tipo MySQL quindi...

    1) SDK e JRE (bla bla bla) installati da sempre!
    2) TOMCAT 5.59 Installato correttamente (vedo tutti gli esempi e via dicendo)
    3) MySQL installato correttamente (mi connetto e creo database a rotella quindi tutto OK)
    4) Connector-J scaricato!

    ORA...quello che voglio fare è una semplice pagina JSP che si connetta ad un DB MySQL e mi faccia vedere i dati...
    per fare questo ho copiato pari pari quello che si diceva sul sito della TOMCAT all'indirizzo
    http://jakarta.apache.org/tomcat/tom...les-howto.html

    1) ho messo il file mysql-connector-java-3.1.10-bin.jar all'interno della cartella common/lib della root del TOMCAT

    2) ho modificato il file server.xml aggiungendo
    codice:
    
                <Context path="/DBTest" docBase="DBTest"
                        debug="5" reloadable="true" crossContext="true">
                
                  <Logger className="org.apache.catalina.logger.FileLogger"
                             prefix="localhost_DBTest_log." suffix=".txt"
                             timestamp="true"/>
                
                  <Resource name="jdbc/TestDB"
                               auth="Container"
                               type="javax.sql.DataSource"/>
                
                  <ResourceParams name="jdbc/TestDB">
                    <parameter>
                      <name>factory</name>
                      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                    </parameter>
                
                    <!-- Maximum number of dB connections in pool. Make sure you
                         configure your mysqld max_connections large enough to handle
                         all of your db connections. Set to 0 for no limit.
                         -->
                    <parameter>
                      <name>maxActive</name>
                      <value>100</value>
                    </parameter>
                
                    <!-- Maximum number of idle dB connections to retain in pool.
                         Set to -1 for no limit.  See also the DBCP documentation on this
                         and the minEvictableIdleTimeMillis configuration parameter.
                         -->
                    <parameter>
                      <name>maxIdle</name>
                      <value>30</value>
                    </parameter>
                
                    <!-- Maximum time to wait for a dB connection to become available
                         in ms, in this example 10 seconds. An Exception is thrown if
                         this timeout is exceeded.  Set to -1 to wait indefinitely.
                         -->
                    <parameter>
                      <name>maxWait</name>
                      <value>10000</value>
                    </parameter>
                
                    
                    <parameter>
                     <name>username</name>
                     <value>javauser</value>
                    </parameter>
                    <parameter>
                     <name>password</name>
                     <value>javadude</value>
                    </parameter>
                
                    <!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
                         if you want to use this driver - we recommend using Connector/J though
                    <parameter>
                       <name>driverClassName</name>
                       <value>org.gjt.mm.mysql.Driver</value>
                    </parameter>
                     -->
                    
                    
                    <parameter>
                       <name>driverClassName</name>
                       <value>com.mysql.jdbc.Driver</value>
                    </parameter>
                    
                    <!-- The JDBC connection url for connecting to your MySQL dB.
                         The autoReconnect=true argument to the url makes sure that the
                         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
                         connection.  mysqld by default closes idle connections after 8 hours.
                         -->
                    <parameter>
                      <name>url</name>
                      <value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>
                    </parameter>
                  </ResourceParams>
                </Context>
    
    subito prima della chiusura del tab </Host> nel file server.xml della cartella conf della root del TOMCAT

    3) mi sono creato una cartella dal nome DBTest sotto webapps della root del TOMCAT

    4) all'interno della cartella DBTest ci ho creato un'altra cartella chiamata WEB-INF

    5) all'interno della cartella WEB-INF ci ho messo un file web.xml con questo contenuto

    codice:
    
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
      <description>MySQL Test App</description>
      <resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/TestDB</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
    </web-app>
    
    all'interno della cartella DBTest invece ci ho messo un file chiamato test.jsp contenente questo

    codice:
    
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    <sql:query var="rs" dataSource="jdbc/TestDB">
    select id, foo, bar from testdata
    </sql:query>
    
    <html>
      <head>
        <title>DB Test</title>
      </head>
      <body>
    
      <h2>Results</h2>
      
    <c:forEach var="row" items="${rs.rows}">
        Foo ${row.foo}
    
        Bar ${row.bar}
    
    </c:forEach>
    
      </body>
    </html>
    
    ed infine ho testato il tutto all'indirizzo: http://localhost:8080/DBTest/test.jsp

    ma mi da questo maledettissimo errore:
    codice:
    org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/sql cannot be resolved in either web.xml or the jar files deployed with this application
    più naturalmente tutto lo stack errorato...

    ora a me sembra di aver fatto tutto quello che mi è stato detto ma posso essermi sbagliato...

    l'unica cosa che non sono sicuro è se ho fatto bene a modificare il file server.xml e se si se l'ho modificato nei punti giusti, oppure se il connettore andava rinominato...

    non lo so ma sono 2 giorni che mi ingegno e credo di esserci quasi riuscito...se mi date una mano sono sicuro che ci riesco a far funzionare quella dannata pagina...

    per uno che conosce il TOMCAT ci vuole 5 minuti a fare quello che c'è scritto...

    vi ringrazio moltissimo dell'aiuto, ciao
    Let's your dream came true!

  2. #2

    mannaggia li pescetti...ce so riuscito!!!

    mannaggia li pescetti, ho trovato un esempio sulla rete, l'ho adattato alle mie esigenze ed ho prodotto questa pagina perfettamente funzionante..

    Codice PHP:
    <html>
    <
    head>
    <%@ 
    page 
        import 
    "java.io.*"
        
    import "java.lang.*"
        
    import "java.sql.*"
    %>
    <
    title>
    JSP Example 2
    </title>
    </
    head>
    <
    body>
    <
    h1>JSP Example 3</h1>
    <% 
        
    String    place;
        
    Connection dbconn;
        
    ResultSet results;
        
    PreparedStatement sql;
        try
        {
            
    //Class.forName("org.gjt.mm.mysql.Driver");
            
    Class.forName("com.mysql.jdbc.Driver");
            try
            {
                
    int    id,bar;
                
    String foo;
                
    boolean    doneheading false;
                
    dbconn DriverManager.getConnection("jdbc:mysql://localhost:3306/javatest","javauser","javadude");
                
    sql dbconn.prepareStatement("select id, foo, bar from testdata;");
                
    results sql.executeQuery();
                while(
    results.next())
                {
                    if(!
    doneheading)
                    {
                        
    out.println("<table border=2>");
                        
    doneheading true;
                    }
                                    
    id results.getInt("id");
                                    
    foo results.getString("foo");
                                    
    bar results.getInt("bar");
                    
                    
    out.println("<tr>");
                    
    out.println("<td>" id "</td>");
                    
    out.println("<td>" foo "</td>");
                    
    out.println("<td>" bar "</td>");
                    
    out.println("</tr>");
                }
                
                if(
    doneheading)
                {
                    
    out.println("</table>");
                }
                else
                {
                    
    out.println("Nessun Record");
                }
            }
            catch (
    SQLException s)
            {
                
    out.println("SQL Error
    "
    );
            }
        }
        catch (
    ClassNotFoundException err)
        {
            
    out.println("Class loading error");
            }
    %>
    </
    body
    </
    html
    ora il problema è: ho notato che per questo esempio non serve modificare nessun file...come mai??

    la pagina in questo modo è scritta in modo correto oppure ci sono degli errori di logica???

    e soprattutto, dove trovo l'elenco completo di tutto il necessario da utilizzare per l'sql e il JSP???

    (voi sicuramente mi risponderete JavaDoc... :maLOL: )
    Let's your dream came true!

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Ciao, visto che questo quesito riguarda sempre la "sfera" dell'iniziare con JSP, non sarebbe meglio concentrare tutto nella discussione che hai inaugurato qualche giorno fa?

    In questo modo, chi si trova a leggere una discussione può usufruire di un percorso completo, ben spiegato e già collaudato per partire con questa interessante tecnologia.

    Cosa ne pensi?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    dico solo questo
    la pagina che funziona non usa i jndi di tomcat e si crea la connessione da sola (non è sbagliata) non usa una comodità degli application server

  5. #5
    si ma ciò pro provocare problemi di rallentamento???
    ed inoltre il modo utilizzato da me sfrutta il pool di connessioni???

    avrei anche un'altra domanda...
    1)volendo costruire il mio progetto secondo la metodologia MVC, quindi separando la parte dell'accesso al DB con l'interfaccia

    posso eseguire l'accesso ai dati in un pacchetto separato che poi richiamo in che modo nelle pagine JSP???

    import = "<nome_pacchetto>.*"???

    2)e in che modo posso integrare l'utilizzo del JNDI nel pacchetto dell'accesso ai dati??

    grazie delle risposte, ciao
    Let's your dream came true!

  6. #6
    mannaggia li pescetti, ho trovato un esempio sulla rete, l'ho adattato alle mie esigenze ed ho prodotto questa pagina perfettamente funzionante..
    una domanda da perfetto ignorante... ma questa pagina perfettamente funzionante che hai trovato e postato presuppone comunque tutti i passaggi che hai descritto all'inizio di questa discussione????

  7. #7
    si...

    tu ti crei il db nel modo che loro ti dicono...

    e poi ti crei una webapp copiando il mio codice, e tutto funziona...

    in questo modo però (così mi hanno detto) ti crei una connessione diretta...

    per sfruttare il JNDI (che personalmente non so neache cosa sia) nessuno ancora mi ha risposto su come fare quindi per adesso niente!
    Let's your dream came true!

  8. #8
    quindi in pratica la jsp nel frammento di codice

    codice:
    _try 
    __{ 
    _    //Class.forName("org.gjt.mm.mysql.Driver"); 
    _    Class.forName("com.mysql.jdbc.Driver"); 
    _    try 
    ________{
    può trovare la classe mysql solo se si aggiungono quelle righe al file server.xml e si crea un file web.xml come hai descritto???

  9. #9
    no...

    il file server.xml puoi lasciare quello originale, io l'ho modificato per utilizzare come metodologia di collegamento al db questo maledetto JNDI che per adesso non so come farlo funzionare...

    quindi il file server.xml lascia quello originale

    il file web.xml invece serve a descrivere la tua applicazione e quindi ce lo devi mettere sotto la cartella WEB-INF della tua webapp

    per quanto riguarda questo:
    codice:
    //Class.forName("org.gjt.mm.mysql.Driver"); 
    Class.forName("com.mysql.jdbc.Driver");
    se lo utuilizzi cosi devi includere il file jar del Connector-J sotto la cartella $ROOT_TOMCAT\common\lib se invece commenti la seconda riga e scommenti la prima utilizzi il connettore offeto da java (sconsigliato da tutti)
    Let's your dream came true!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.