# Einloggen auf Seite + MYSQL, JSP



## tommy20 (7. Dez 2007)

Hi weis jemand wo da bitte en Fehler ist
Immer wenn ich versuche einen namen einzugeben im Formular bekomm ich einen Fehler weis aber echt net an was es liegen könnte!!Alos ich möchte einfach Zugang auf eine Seite ermöglich in dem man sich als Kunde einloggt.


Ich zeigs euch mal:


*Das ist meine INDEX.html*

<!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>Insert title here</title>
</head>
<body>
<form action="eintragendb.jsp" method="post">


 Ihr Pseudonym
<input type="text" name="pseudonym" size="10" maxlength="10" /></p>


 Ihr Passwort
<input type="password" name="passwort" maxlength="6" /></p>
<input type="submit" name="druckknopfanmelden" value="Anmelden" />
</form>





</body>
</html>


*Meine lesenDB:*


<%@ 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>Lesen einer Datenbank </title>
</head>
<body>



 Inhalt der benutzer-Datenbank</p>
<table border = "1" cellpadding="0" cellspacing="0">
<tr>
<td>Benutzer NR</td>
<td>Pseudonym</td>
<td>Passwort</td>

</tr>

<jsp:useBean id="eineDB" class="DB.DBZugriff"/>



<%java.sql.ResultSet tabelleBenutzer = eineDB.leseDB();
while ( tabelleBenutzer.next()) // Durchlaufen der Tabelle
	{
String benutzernr = tabelleBenutzer.getString("BENUTZERNR");
String pseudonym = tabelleBenutzer.getString("PSEUDONYM");%>

<tr>
<td><%=benutzernr %></td>
<td><%=pseudonym %></td>
<td><%=tabelleBenutzer.getString("PASSWORT") %></td>
</tr>

<%}// Ende der Schleife %>

</table>


</body>
</html>



*3. Meine eintragen DB*

<%@ page contentType="text/html; charset=iso-8859-1" language="java"  errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>


<% String pseudonym = request.getParameter("pseudonym");
	String passwort = request.getParameter("passwort");%>

	Pseudonym: <%=pseudonym%>
	Passwort: <%=passwort%>

	<jsp:useBean id="eineDB" class="DB.DBZugriff" scope="application"/>
	<%eineDB.schreibeDB(pseudonym,passwort);%>

 Datenbankinhalt anzeigen



</body>
</html>


*Und zu guter letzt mein DB Zugriff:
*

package DB;



import java.sql.SQLException;

import javax.swing.JOptionPane;



import com.mysql.jdbc.ResultSet;
public class DBZugriff {


	private java.sql.Connection dieVerbindung;
	//Konstruktor
	public DBZugriff()
	{

		try
		{	// Die verbindung zur DB wird aufgebaut
		// Erzeuge, laden und registrieren des Treibers
		// Der Name des Treibers lautet org.gjt.mm.mysql.Driver

		Class.forName("com.mysql.jdbc.Driver").newInstance();
		// Hole eines Connection Objects
		//die DB heißt dbbenutzer
		dieVerbindung = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/dbbenutzer","","");


		}


	catch (ClassNotFoundException e1)
	{

		System.out.println ("ClassNotFoundException:"+ e1.getMessage());

	}
	catch(InstantiationException e2){
System.out.println("InstantiationException:"+ e2.getMessage());
	}
	catch(java.sql.SQLException e3)

	{

		System.out.println("SQLException:"+ e3.getMessage());

	}
	catch(IllegalAccessException e4)
	{

		System.out.println("IllegalAccessException "+ e4.getMessage());

	}

	}
	// Lesende Operation
	public java.sql.ResultSet leseDB()

	{
java.sql.Statement statement;
// Liefere Tabelle
java.sql.ResultSet tabelle;
try
{

// Abfrage der DB
	statement = dieVerbindung.createStatement();
	//Ausführen der SQL Anweisung
	tabelle = statement.executeQuery("Select * FROM Benutzer");
	// Rückgabe des Ergebnisses vom Typ ResultSet
	return tabelle;



}
catch (java.sql.SQLException e3)
{

System.out.println ("SQLException:" + e3.getMessage());
}
return null;
	}

//Schreibene Operationen
	public synchronized void schreibeDB(String pseudonym,String passwort)
	{
		String benutzernrString = "Leer";
		int benutzernr = 0;
		java.sql.Statement statement = null;
		java.sql.ResultSet tabelle = null;

		try {

			//Statement erzeugen
			statement = dieVerbindung.createStatement();

			// Operation ausführen
			tabelle = statement.executeQuery("SELECT MAX ( BENUTZERNR)FROM BENUTZER");

			// Zeiger auf 1. Element positionieren
			tabelle.next();

			// 1. Element der 1. Spalte lesen
			benutzernr  =  tabelle.getInt(1);

			// benutzernr um 1 erhöhen

			benutzernr++;
			benutzernrString = Integer.toString(benutzernr);

			// neuen Eintrag im String values zwischenspeichern

			String insert = "INSERT INTO benutzer ( BENUTZERNR,PSEUDONYM, PASSWORT)";
			// neuen Wert in Stringvaules zwischenspeichern

			String values = "VALUES('" + benutzernrString + "','" + pseudonym + "','" + passwort + "')";

			// DB Operationen ausführen d.h. Daten in Tabelle eintragen


			statement.executeUpdate(insert + values);
		}
		catch  (java.sql.SQLException e3)
		{
			System.out.println("SQLException:" + e3.getMessage());

		}


			finally
			{

			// DIe Close Operation kann ebenfalls eine Ausnahme erzeugen
				try {
					tabelle.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}



			}



			}



MYSQL DB ist folgende :

-
-- Datenbank: `
dbbenutzer`
--

-- --------------------------------------------------------

--
-- 
Tabellenstruktur für Tabelle `benutzer`
--

CREATE TABLE `benutzer`
 (
  `benutzernr` int(11) NOT NULL,
  `pseudonym` varchar(10) collate latin1_general_ci NOT NULL,
  `passwort` varchar(6) collate latin1_general_ci NOT NULL,

 PRIMARY KEY  (`benutzernr`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Daten für Tabelle `benutzer`
--

INSERT INTO `benutzer`
 (`benutzernr`, `pseudonym`, `passwort`) VALUES
(1, ' alex', 'test'),
(2, ' wilmer', 'test2'),
(3, ' tom', 'test3');


----------



## tommy20 (7. Dez 2007)

ALSO Als FEHLER kommt immer das hier:
--------------------------------------------------------------------------------
*
type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)


root cause 

java.lang.NullPointerException
	DB.DBZugriff.schreibeDB(DBZugriff.java:137)
	org.apache.jsp.eintragendb_jsp._jspService(org.apache.jsp.eintragendb_jsp:76)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.

*


----------



## happy_robot (7. Dez 2007)

du hast an zeile 137 ne null-pointer-exception.......

zwei glühend heisse kandidaten sind folgende zeilen:


```
statement = dieVerbindung.createStatement();

tabelle = statement.executeQuery("SELECT MAX ( BENUTZERNR)FROM BENUTZER");
```

du arbeitest nach der zuweisung einfach weiter. eine der zuweisungen gibt aber sicherlich NULL zurück.
schau mal nach welche das ist und berücksichtige diesen fall.


----------



## tommy20 (7. Dez 2007)

mmh wie meinste das genau?sorry


----------



## happy_robot (7. Dez 2007)

also gerade im moment weiß ich nicht so recht ob du als newbie tatsächlich schon so was machen solltest.......


----------



## Guest (7. Dez 2007)

i muss so was machen lol leider i soll für eine jsp einen anmelde form machen in dme sich nur mitglieder einloggen könne und dan nerst zugriff auf die seite bekommen


----------



## tommy20 (9. Dez 2007)

Weis niemand warum da immer ein Fehler entsteht versuch schon seit Tagen das hinzubekommen aber immer das selbe bitte helft mir??


----------

