# Datenbank connection mit Servlet



## the0MIKE (16. Nov 2011)

Moin,

hab folgendes problem, ich habe ne kleine Klasse, die mir eine Verbindung zu meiner MySQL-Datenbank aufbaut, und mehr nicht (Statement etc. gibt es aber kann ich benutzen wenn das Prob. beseitigt ist) 

Mein Problem ist, wenn ich das als Hauptklasse laufen lasse und als App in Eclipse, geht alles, er gibt mir schöne aus "Verbunden".

Wenn ich das jedoch als Servlet für ein Login-Formular verwende sagt er plötzlich das kein MySQl Treiber gefunden werden kann...

Verstehe nicht wo das Problem liegt.

Hier mal mein Code:

index:

```
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Project Sven</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>

<form action="Login_Servlet"> 
<table id="login_table">
	
	<tr id="login_table_left_top">
		<td>
			&nbsp;
		</td>
		<td>
		 	&nbsp;
		</td>
		<td>
		 	&nbsp;
		</td>
	</tr>
	<tr>
		<td id="login_table_left">
			&nbsp;
		</td>
		<td>
		 	username
		</td>
		<td>
		 	<input name="username" type="text" value="">
		</td>
	</tr>
	<tr>
		<td id="login_table_left">
			&nbsp;
		</td>
		<td>
		 	passw
		</td>
		<td>
		 	<input name="passw" type="text" value="">
		</td>
	</tr>
	<tr>
		<td id="login_table_left">
			&nbsp;
		</td>
		<td>
		 	&nbsp;
		</td>
		<td>
		 	<input type="submit" value="Abschicken">
			<input type="reset" value="Löschen">
		</td>
	</tr>
</table>
</form>
	
</body>
</html>
```

Login_Servlet:

```
import java.io.IOException;
import java.sql.Connection;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import db_con.DB_Servlet;

public class Login_Servlet extends HttpServlet 
	{
		static Connection currentCon = null; 
		private static final long serialVersionUID = 1L;
	       
	    public Login_Servlet() 
		    {
		        super();
		    }
	
		protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
			{
				String user = request.getParameter("username");
				String pass = request.getParameter("passw");
				
				System.out.println("Hallo " + user + ", ihr Passwort lautet: " + pass);
				
				Statement stmt = null;
				String searchQuery = "SELECT * FROM users WHERE username ='" + user + "' AND password ='" + pass + "'"; 
				
				try{
					currentCon = DB_Servlet.getConnection();
					System.out.println(currentCon);
				}catch(Exception ex)
					{
						ex.printStackTrace();
					}
				
				
			}
	}
```

DB_Servlet:

```
package db_con;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class DB_Servlet extends HttpServlet 
	{
		private static final long serialVersionUID = 1L;

		public static Connection getConnection()
			{	
				System.out.println("hallo");
				 Connection con = null;
				 String url = "jdbc:mysql://127.0.0.1";
				 String user = "root";
				 String pass = "admin";
				
				 try{
				   Class.forName("com.mysql.jdbc.Driver");
				 }catch(ClassNotFoundException cnfe)
				 	{
					 	System.out.println("Can't load driver: "+cnfe.getMessage());
				 	}
				 
				 try {
					 con = DriverManager.getConnection(url, user, pass);
				     System.out.println("Verbunden");
				 }catch (Exception e) 
				 	{
					 System.err.println("Kann nicht verbinden!");
				 	}
				 
				 finally 
				 	{
					 	if (con != null) 
					 		{
					 			try {
					 				con.close();
					 				System.out.println("Verbindung beendet.");
				 			}catch(Exception e) 
				 				{	}
					 		}
				 	}
				return con;
			}
	}
```


----------



## homer65 (16. Nov 2011)

Der Ort, wo der MySQL JDBC Treiber liegt muß im CLASSPATH bekannt sein. Wenn du das Programm in einer anderen Umgebung laufen läßt ist auch der CLASSPATH anders definiert.


----------



## the0MIKE (16. Nov 2011)

gut das hab ich mal wo gelesen, aber nicht weiter drüber nachgedacht.

weiß auch wo der liegt, aber wie muss ich das eintragen? Arbeite mit Eclipse


----------



## turtle (16. Nov 2011)

Der Treiber sollte in WEB-INF\lib der Webapplikation abgelegt werden. 

Dieser Pfad wird Servlet-konform zum Classpath hinzugenommen. Einfach Datei reinkopieren sollte ausreichen.


----------



## the0MIKE (16. Nov 2011)

BOAH SUPER @turtle !!!

ja ich hab halt immer rechts klick auf das Projekt und dann unter properties des hinzugefügt aber so geht es ja zum einen leichter und schneller  und zum zweiten ES GEHT 

super nochmal vielen dank euch allen

schöne grüße
MIKE


----------

