Avatar billede el_fredo Praktikant
16. oktober 2002 - 15:20 Der er 11 kommentarer og
1 løsning

JSP forbindelse til MySQL

Jeg skal have lavet forbindelse til en MySQL database fra JSP. Jeg kan godt vha. en broker jeg har fået oprette forbindelse til MySQL, men så snart jeg henter filen ind i min JSP fil vha <jsp:useBean .../> så kan min Blazix webserver ikke finde den driver som der skal bruges til at oprette forbindelse. Driveren har jeg hentet fra MySQL og den ligger i et bibliotek der hedder ..\com\mysql\jdbc\    og filen hedder "Driver.class". Koden til min broker er som følger:

import java.sql.*;
import java.util.Vector;
import java.io.*;

public class Broker implements Serializable
{
    private Broker dbb;
    private int sqls_run;
    private Connection connection;

    public Broker()
    {
        sqls_run = 0;
        this.connect();
    }

    public void connect()
    {
        System.out.println("********** public void connect() **********");
        try
        {
            Class.forName("com.mysql.jdbc.Driver");

        }
        catch (ClassNotFoundException cnfe)
        {
            System.out.println(cnfe);
        }
        try
        {
            String url = "jdbc:mysql://127.0.0.1:3306/Alpha?user=Jan&password=Password";
            java.util.Properties properties = new java.util.Properties();
            connection = DriverManager.getConnection(url, properties);
        }
        catch (SQLException sqle)
        {
            System.out.println(sqle);
        }
    }

    public int update (String sql)
    {
        System.out.println("sql: "+sql);
        int key = 0;
        try
        {
            Statement stmt = connection.createStatement();
            stmt.executeUpdate(sql);
            ResultSet rs = stmt.getGeneratedKeys();
            rs.next();
            key = rs.getInt(1);
        }
        catch (SQLException e)
        {
            System.out.println("update metoden");
            System.out.println(e);
            System.exit(0);
        }
        this.addSqlRun();
        return key;
    }

    public ResultSet select (String sql)
    {
        System.out.println("********** public ResultSet select(String sql) **********");
        System.out.println("sql: "+sql);
        Vector results = new Vector (50,50);
        ResultSet rs = null;
        try
        {
            System.out.println("********** try/catch inside <select> **********");
            Statement stmt = connection.createStatement();
            rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            int numberOfColumns = rsmd.getColumnCount();
        }
        catch (SQLException e)
        {
            System.out.println("select metoden");
            System.out.println(e);
        }
        this.addSqlRun();
        return rs;
    }

    public int getSqls_run()
    {
        return sqls_run;
    }

    private void addSqlRun()
    {
        ++sqls_run;
    }
}

Og fejlen dukker op ved linien "Class.forName("..." Der ryger jeg ind i catch sætningen. Min .jsp fil ser sådan ud:

<jsp:useBean id="broker" class="Broker"/>
<HTML>
<BODY>
Start<BR>
SQL SELECT: <%= broker.select("SELECT * FROM user ORDER BY username ASC") %>
</HTML>
</BODY>

Meget simpel... Hvis ikke i kan gennemskue ovenstående (ikke pga. manglende kompetence, men pga. at det er noget lort jeg har lavet) så må i MEGET gerne komme med et eksempel på præcist hvordan jeg får forbindelse fra JSP til MySQL. Gerne lidt á la det jeg har lavet indtil videre, da jeg startede med MySQL og JSP for et par uger siden.
Avatar billede disky Nybegynder
16. oktober 2002 - 15:31 #1
Din package struktur skal per default (resin og tomcat) ligge i
/WEB-INF/classes/

Gør de det ?
Avatar billede el_fredo Praktikant
16. oktober 2002 - 15:34 #2
Det ved jeg ikke. Hvilke packages, og WEB-INF... hvor er det? Jeg har hverken resin eller tomcat kørende, men jeg bruger Blazix i stedet. Jeg har prøvet at installere tomcat, men jeg kunne ikke få den til at vise indholdet af jsp filerne. Det er kun HTML indholdet der vises.
Avatar billede el_fredo Praktikant
16. oktober 2002 - 15:36 #3
Ok, nu har jeg fundet et par biblioteker der hedder web-inf, inde under tomcat. Men der er jo mange...
Avatar billede disky Nybegynder
16. oktober 2002 - 17:00 #4
jeg kender ikke den java server, men hvis den viser de rå jsp sider istedet for de som de generere er der noget helt galt i opsætningen af den.

Prøv at hent Resin fra www.caucho.com den er meget let at bruge.
Avatar billede el_fredo Praktikant
17. oktober 2002 - 09:14 #5
Den viser ikke den rå jsp kode, men jsp koden bliver bare ikke udført. Hvis man skriver fx:
Dags dato = <%= new Date() %>
Så er outputtet blot "Dags dato" og ikke andet, men ingen fejlmeddelelser... Jeg prøver lige at se på resin.
Avatar billede flse Nybegynder
17. oktober 2002 - 09:15 #6
du skal ligge .jar filen fra MySQL enten i WEB-INF/lib i din applikationsstruktur, eller i lib folderen direkte under din app-server (Blazix).

Alternativt kan jeg anbefale Orion App Server (www.orionserver.com).
Avatar billede el_fredo Praktikant
17. oktober 2002 - 09:43 #7
Jeg har lige installeret Resin web server, og det fungerer indtil videre fint - dvs. den kan vise mine .jsp filer. Nu skal jeg bare have tilgået MYSQL databasen. Hvad er applikationsstrukturen? Og hvad er det for en .jar fil jeg skal lægge i web-inf? Er det den connector jar fil?
Avatar billede el_fredo Praktikant
17. oktober 2002 - 09:59 #8
Kanon! Nu har jeg fået forbindelse til databasen. Blot ved at installere Resin, og smide MySQL jar filen ind i web-inf\classes. Nu kan jeg begynde at rode med funktionaliteten... det kan være jeg lige skriver igen. Hvordan giver jeg dig de 60 pts. jeg har sat ud til spørgsmålet?
Avatar billede disky Nybegynder
17. oktober 2002 - 10:03 #9
Tak for point, det glæder mig det bare spiller nu.
Resin er bare et kvalitets produkt, både i performance og lethed :)
Avatar billede flse Nybegynder
17. oktober 2002 - 10:06 #10
For at få forbindelse til MySQL skal du på en eller anden måde fortælle din app-server (orion/resin m.m.) hvor den kan finde connector jar filen.

Selv plejer jeg at ligge den i app-serverens "/lib" folder, da det som regel er nødvendigt for at benytte pooled connections via app-serveren.
Alternativt kan du placerer den i din applikations "lib" folder.
Applikations strukturen tager udgangspunkt i den folder som du fortæller serveren er roden af din applikation.
Direkte under denne folder placerer du /images, jsp, html og andre filer som alle skal kunne læse.
Under roden findes WEB-INF folderen, som er privat for serveren, og indeholder konfiguration, .class, .jar filer m.m.

Du har typisk noget der ligner:
/
--/images  (grafik filer for din applikation)
  /WEB-INF
  --/classes (.class filer i fuld pakke struktur)
  --/lib (.jar filer som din applikation benytter - f.eks. struts.jar eller lign.)
  --/web.xml (konfiguration af din web-app)
Avatar billede flse Nybegynder
17. oktober 2002 - 10:07 #11
Resin er et fint produkt, men Orion er markedets hurtigste!  :-)
Avatar billede el_fredo Praktikant
21. oktober 2002 - 09:03 #12
Tak for indlægget, flse, men disky havde allerede hjulpet mig med problemet. Ellers tak. Disky, hvordan giver jeg dig de points? Jeg har stadigvæk 60 pts. hængende...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester