Gå til innhold

Anbefalte innlegg

Hei, jeg sitter å lager en liten web applikasjon i jsp. Problemet mitt er at jeg får NullPointerException. CLASSPATH er satt riktig. Jeg får ikke dette problemet når jeg kjører kode fra en testklasse i vanlig java, kun når jeg prøver fra en jsp-fil. Dette er selv om både jsp-klassen og java-klassen kaller den samme statiske metoden DBConnect.validateUser() som tar seg av alt det databaserelaterte. Noen som har peiling på hva dette kan ha seg? På forhånd takk =)

 

//Fra DBConnect.java:

//Statisk metode som kobler til databasen og returnerer et Connection object
public static Connection getConnection(){
	Connection c = null;
		try {
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
			c = DriverManager.getConnection("jdbc:derby:nwdb");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (ArrayIndexOutOfBoundsException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return c;

}

//Metode som sjekker om brukernavn og passord finnes i databasen og returnerer isåfall ID-nummeret til brukeren.
public static int validateUser(String stm1, String stm2) {
	Connection c = getConnection();
	ResultSet rs = null;
	try{
//linje 80		PreparedStatement s = c.prepareStatement("SELECT id, username, password FROM users WHERE   username = ? and password = ?");
		s.setString(1, stm1);
		s.setString(2, stm2);
		rs = s.executeQuery();
		while(rs.next()) return rs.getInt("id");
		closeConnection(c, s, rs);
	}catch(SQLException e){
		System.err.println("Det ble noe SQL-trøbbel; nærmere bestemt " + e);
	}
	return 0;
}


//Liten klasse for å teste dette, denne funker fint.
public class Whatever {

public static void main (String[] args){
	System.out.println("Vi tester loginvalidering: ");
	System.out.println(DBConnect.validateUser("test", Hash.md5("test")));
}

}



//Jsp kode for innlogging, denne kaller på akkurat samme metoden som den lille testklassen, men denne funker ikke.
<%String error = "";%>
<%@ page import="tools.DBConnect"%>
<%@ page import="tools.Hash"%>
<%@ page import="java.sql.SQLException"%>

<%
if(request.getParameter( "nypost" ) != null) {
int id = 0;
String username = "";
String password = "";
username = request.getParameter( "username" );
password = Hash.md5(request.getParameter( "password" ));
id = DBConnect.validateUser(username, password);

if(id > 0){
	request.getSession().setAttribute("sessionid", id);
	response.sendRedirect("main.jsp");
}else {
 error = "Feil brukernavn eller passord, vennligst prøv igjen";	
}
}
%>

 

 

Feilmelding fra tomcat:

14.jul.2008 13:01:56 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at tools.DBConnect.validateUser(DBConnect.java:80)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:94)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
java.sql.SQLException: Database 'nwdb' not found.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at tools.DBConnect.getConnection(DBConnect.java:33)
at tools.DBConnect.validateUser(DBConnect.java:77)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:94)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Database 'nwdb' not found.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 35 more

Lenke til kommentar
Videoannonse
Annonse
Denne er jo ganske avslørende:
java.sql.SQLException: Database 'nwdb' not found.

 

Ja, men hvorfor oppstår den bare når jeg kaller metoden som foretar seg databaseoperasjonene fra en jsp-klasse, og ikke når jeg kaller den fra en vanlig java-klasse?

Lenke til kommentar
Denne er jo ganske avslørende:
java.sql.SQLException: Database 'nwdb' not found.

 

Ja, men hvorfor oppstår den bare når jeg kaller metoden som foretar seg databaseoperasjonene fra en jsp-klasse, og ikke når jeg kaller den fra en vanlig java-klasse?

 

Point of execution? Prøvd å spesifisere full path til databasen?

Lenke til kommentar

DOH! Takk for hjelpen, det var selvfølgelig det som skulle til -.- usj, mange bortkastede timer på feilsøking der gitt...Men mange takk, det kunne sikkert fort blitt flere timer med headbanging :p

Endret av michmoel
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...