# Mit jsp über Java eine DB Abfrage durchführen --> java.lang.ClassNotFoundException



## Caspair (21. Mrz 2012)

Hallo zusammen

Ich habe ein kleines Problem. Ich habe eine kleine Klasse übernommen, welche eine DB Abfrage durchführt:


```
package Function;

import java.sql.*;

public class MeineBean {
	


      public static String meineFunktion( String s )
      {
    	  
    	  if(s.length()>=2){
    		  System.out.println(s + " ist grösser gleich 10");
        try {
          int i = Integer.parseInt( s );
          s =  "" + (i * i);
          return s;
        } catch( Exception ex ) {
          s = "Fehler, bitte Zahl eingeben!";
          return s;
        }
      }
    	  else{
    		  System.out.println(s + " ist kleiner 10");
    		  try{
    			  System.out.println("In try");
    			  
    				Class.forName("com.mysql.jdbc.Driver")/*.newInstance()*/;
    				
    				System.out.println("Class ok");
    				
    				Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Qualdratzahlen","root","**********");
    				
    				System.out.println("DB Connection erfolgreich");
    				
    				con.setReadOnly(true);
    				
    				Statement stmt = con.createStatement();
    				
    				ResultSet rs = stmt.executeQuery("Select quadratzahl from quadratzahlen where zahl=" + s); 
    				
    				
    				
    				while(rs.next()){
    					
    					s = rs.getString(1);
    					
    					//System.out.println(s);
    				}
    				
    				rs.close();
    				stmt.close();
    				con.close();
    				
    				
    			}catch(Exception e){
    				System.out.println("FEHLERMELDUNG --> " + e);
    				s = e.toString();
    			}
    			
    		  
    	  }
    	  
    	  return s;
      }


      
}
```

Wenn ich diese nun aus einem anderen Java Prgramm aufrufe, funktioniert sie tadellos :toll:! Wenn ich sie allerdings über einen Webbrowser mittels einer jsp Routine aufrufe, dann klappt das nicht mehr . 


```
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- link rel="stylesheet" type="text/css" href="Styletest.css"/>  -->
<body>
  <%@ page import ="Function.*" %>
  <h1>Mein JSP- und JavaBeans-Test</h1>
  <h2>
  <form action="MeinJspUndJavaBeansTest.jsp">
    Bitte Zahl eingeben: <input type="text" name="EingabeZahl" size=5maxlength=5><br>
  </form>
  </h2>
  <h3>
  <%
    String s1 = request.getParameter( "EingabeZahl" );
    if( null != s1 )
      //out.println("Das Quadrat von '" + s1 + "' ist: '" + MeineBean.meineFunktion( s1 ) + "'.");
      
      out.println("Das Quadrat von '" + s1 + "' ist: '" + testClass.tester() + "'.");
  %>
  </h3>
</body></html>
```

Ich habe eine Klasse geschrieben, mit welcher ich sowohl direkt als auch über jsp die Methode MeineFunktion() aufrufen kann:


```
package Function;

public class testClass {

	
	public static void main(String[] args) {
		
		
		String strS = MeineBean.meineFunktion("2");
		
		System.out.println(strS);

	}
	
	public static String tester() {
		// TODO Auto-generated method stub
		
		String strS = MeineBean.meineFunktion("2");
		
		System.out.println(strS);
		
		return strS;

	}

}
```

Konkret: Mittels der main() Methode klappe es, mittels der tester() Methode bekomme ich den folgenden Fehler: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver. Natürlich ist das Verhalten dasselbe, wenn ich nicht über testClass sondern direkt vom jsp MeineBean ansteuere.


Das Class-File MeineBeans liegt ordnungsgemäss im Verzeichnis des Tomcat, das Ausführen von Zahlen grösser 9 klappt ja auch.

Kann mir jemand helfen? :rtfm:

Danke Euch.

Viele Grüse
Caspair


----------



## SlaterB (22. Mrz 2012)

kennt Tomcat den JDBC-Treiber? ist der dort bei den Libs abgelegt oder ähnlich?


----------



## Caspair (22. Mrz 2012)

Vielen Dank auch, das war es. Manchmal sieht man vor lauter Wald die Bäume nicht mehr...

Viele Grüsse
Caspair


----------



## nocturne (23. Mrz 2012)

Wenn du willst kannst du auch SQL direkt in deine JSP schreiben.


----------



## Caspair (23. Mrz 2012)

Das weiss ich, das funktioniert auch. Mir geht es aber eben genau um die Entkoppelung der verschiedenen Tiers 
Dennoch vielen Dank für den Hinweis


----------

