JSP n verfluchte JDBC

Status
Nicht offen für weitere Antworten.
Nabend bzw Morgän,

habe da ne kleien frage bekomme von meinem Tomcat 5.5.20 eine tolle fehlermeldung

type Exception report

message

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

exception

org.apache.jasper.JasperException: Unresolved compilation problems:
Unhandled exception type ClassNotFoundException
Unhandled exception type SQLException

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
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:802)

Bin noc net ganz hintergestiegen desween hier noch der code ;)

Code:
	public void setCon() {
		try {
		Class.forName("org.gjt.mm.mysql.Driver");
		try {		
this.con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db,user,pass);
} catch (SQLException ex) {
				System.out.println("SQLException: " + ex.getMessage());
				System.out.println("SQLState: " + ex.getSQLState());
				System.out.println("VendorError: " + ex.getErrorCode());
			}
} catch (ClassNotFoundException e) {
e.getException();
		}		
setQuery();

	}

das ist die function die aufgerufen wird, aufgerufen wird wie folgt:

Code:
mysql.setDb("mysql"); //setter
mysql.setUser("root");//setter
mysql.setPass("");//setter
mysql.setHost("localhost");//setter
mysql.setCon();//starten

Nr leider bekome ich imm den fehler das bei mysql.setCon() der Fehler liegt ich hoffe ihr habt eine Idee
soweit euer Illuminat23
 
mmh also ich habe wies in meinen netten buch steht den Treiaber in den lib Ordner von Tomcat geworfen und trotzdem bekomme ich den Fehler und richtig aufrufen tuhe ich den eigentlich auch....

so mmh die fehlermeldung sit glaube ich etwas neu xD

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: Exception in JSP: /index.jsp:31

28: mysql.setPass("");
29: mysql.setHost("localhost");
30:
31: mysql.setCon();
32:
33: %>
34: </body>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
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:802)

root cause

javax.servlet.ServletException: Unresolved compilation problems:
Unhandled exception type ClassNotFoundException
Unhandled exception type SQLException

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
org.apache.jsp.index_jsp._jspService(index_jsp.java:105)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
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:802)

root cause

java.lang.Error: Unresolved compilation problems:
Unhandled exception type ClassNotFoundException
Unhandled exception type SQLException

mysql.mysql.setCon(mysql.java:15)
org.apache.jsp.index_jsp._jspService(index_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
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:802)

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

Wie gesagt Treibe sit da und aufgerufen ...
Finde den Fehler nichth abe die mysql klasse umgebaut und so einiges weiteres...
 

KSG9|sebastian

Top Contributor
Deploy ein einfaches Servlet welches nur den Treiber lädt. Wenn das nicht geht hast du den Fehler.
Und in welchen lib-Ordner hast du den Treiber gepackt. Mir fallen so spontant ca. 3 Lib Ordner ein :)

- lib-Ordner der Anwendung (WEB-INF/lib)
- shared/lib-Ordner von Tomcat ($TOMCAT_HOME\shared\lib)
- lib-Ordner für Tomcat, nicht für die Anwendungen
 
So der Treiber liet in
C:\Tomcat 5.5\webapps\ROOT\WEB-INF\lib
C:\Tomcat 5.5\shared\lib
C:\Tomcat 5.5\common\lib

;)

mm habe bissl rumgetestet bekomme immer den selben fehler!

Ich bin mal so frei und schreib mal die mysql.java und die index.jsp hier rein
INDEX.JSP
Code:
<%@ page session="true"%>
<html>
<head>
</head>
<body>

<%!
int zaehler = 0;
String lastname="";
 %>
 <% 
 String name=request.getParameter("name");
 %>
Hallo <%= name %> vor dir war <%=lastname%> da, mit der nummer <%=zaehler%>!
<%
lastname=name;
++zaehler;
%>
<hr>


DATENBANK


<jsp:useBean id="mysql"class="mysql.mysql"/>
<%@page language="java" import="java.sql.*"%>
<%
mysql.setDb("mysql");
mysql.setUser("root");
mysql.setPass("");
mysql.setHost("localhost");

mysql.setCon();

%>
</body>
</html>

mysql.java

Code:
package mysql;	
import java.sql.*;

public class mysql {

	private String host="",user="",pass="",db="";
	private Connection con;
	private Statement query;
	private ResultSet result;
	
	public Connection getCon() {
		return con;
	}
	public void setCon() {
		try{
			try{
			Class.forName("com.mysql.jdbc.Driver");
		this.con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db,user,pass);
			} catch (SQLException ex) {
				System.out.println("SQLException: " + ex.getMessage());
				System.out.println("SQLState: " + ex.getSQLState());
				System.out.println("VendorError: " + ex.getErrorCode());
			}
		} catch (ClassNotFoundException e) {
			e.getException();
		}
		setQuery();

	}
	
	private void setQuery(){
try{
		query=con.createStatement();
} catch (SQLException ex) {
	System.out.println("SQLException: " + ex.getMessage());
	System.out.println("SQLState: " + ex.getSQLState());
	System.out.println("VendorError: " + ex.getErrorCode());
}
		}
	
	public ResultSet query(String querys){
			try{
		return result=query.executeQuery(querys);
			} catch (SQLException ex) {
				System.out.println("SQLException: " + ex.getMessage());
				System.out.println("SQLState: " + ex.getSQLState());
				System.out.println("VendorError: " + ex.getErrorCode());
				return result;
			}
	}
	public boolean Insert(String a,String b){
		try{
		query.executeUpdate("Insert into "+a+" "+b);
		return true;
		} catch (SQLException ex) {
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		return false;
		}
	}
	public boolean Update(String a,String b,String c){
		try{
		query.executeUpdate("update "+a+" set "+b+" "+c);
		return true;
		} catch (SQLException ex) {
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		return false;
		}
	}
	public boolean Delete(String a,String b,String c){	
		try{
		query.executeUpdate("DELETE FROM "+a+" where "+b+"="+c);
		return true;
		} catch (SQLException ex) {
			System.out.println("SQLException: " + ex.getMessage());
			System.out.println("SQLState: " + ex.getSQLState());
			System.out.println("VendorError: " + ex.getErrorCode());
		return false;
		}
	}
	
	public void setDb(String db) {
		this.db = db;
	}
	public void setHost(String host) {
		this.host = host;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public void setUser(String user) {
		this.user = user;
	}
}
 

KSG9|sebastian

Top Contributor
Klassen schreibt man groß
Methoden und Variablen klein

Und du sollst ein einfaches Servlet deployen welches den Treiber lädt..

Code:
public class TestServlet extends HttpServlet{
   public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException7
  try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
  } catch(ClassNotFoundException nfe){
    nfe.printStackTrace();
  } catch(SQLException sqe){
    sqe.printStackTrace();
  }
}
}

Ach ja, warum verwendest du nicht com.mysql.jdbc.Driver?
 
Status
Nicht offen für weitere Antworten.

Oben