Avatar billede gorlist Nybegynder
10. december 2001 - 16:31 Der er 21 kommentarer og
1 løsning

Nullpointer fejl

500 Servlet Exception
java.lang.NullPointerException
    at _dpouls1._index__jsp._jspService(/dpouls1/index.jsp:45)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:485)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:176)
    at com.caucho.server.http.Invocation.service(Invocation.java:278)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
    at com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:847)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)


Er der en der ved hvad jeg skal stille op med den smøre?
Avatar billede gorlist Nybegynder
10. december 2001 - 16:32 #1
Kan det være fordi der er noget jeg ikke har importeret i min index.jsp?
Avatar billede erikjacobsen Ekspert
10. december 2001 - 16:40 #2
Nej, der er noget du ikke har sagt new til :)

Men vis os noget kode
Avatar billede gorlist Nybegynder
10. december 2001 - 16:46 #3
I min index.jsp:
<%@ page language=\'java\' %>
<%@ page import=\"java.lang.*\"%>
<%@ page import=\"java.sql.*\"%>
<%@ page import=\"liste1.*\"%>
...
<jsp:useBean id=\"l\" class= \"Liste\" />
...
l.åben();
...

Min liste1.Liste.åben():

public void åben() {
    try {
        if (con == null) {
            Class.forName(\"org.gjt.mm.mysql.Driver\").newInstance();
            con = (org.gjt.mm.mysql.jdbc2.Connection) DriverManager.getConnection(db);
        }
    } catch (SQLException e) {             
        e.printStackTrace(System.out);        //fanger hvis der er fejl i SQL forespørgsel
    } catch (ClassNotFoundException e) {
        e.printStackTrace(System.out);        //fanger hvis driveren ikke findes / kan loades
    } catch (InstantiationException e) {
        e.printStackTrace(System.out);        //fanger hvis der ikke kan skabes en ny Instance af driveren
    } catch (IllegalAccessException e) {
        e.printStackTrace(System.out);        //fanger hvis driveren ikke er tilgængelig f.eks. ikke public
    }
}
}
Avatar billede gorlist Nybegynder
10. december 2001 - 16:48 #4
Min liste1 ligger under C:\\resin-2.0.4\\doc\\WEB-INF\\classes\\liste1
Avatar billede erikjacobsen Ekspert
10. december 2001 - 16:57 #5
Hmm - det er ikke helt nok til at jeg kan se hvad der er galt
Avatar billede gorlist Nybegynder
10. december 2001 - 17:00 #6
ok så er her hele min index.jsp og hele liste1

<%@ page language=\'java\' %>
<%@ page import=\"java.lang.*\"%>
<%@ page import=\"java.sql.*\"%>
<%@ page import=\"liste1.*\"%>

<jsp:useBean id=\"l\" class= \"Liste\" />

<html>

<head>
<title>Kundekartotek</title>
</head>
<body>
<p align=\"center\"><font size=\"7\">Kundekartotek</font>
<form method=\"POST\" action=\"index.jsp\">
 
  <input type=\"text\" hidden value=\"Kundenummer\" name=\"editnr\" size=\"20\" ><br>
 
  <input type=\"text\" value=\"Kundenavn\" name=\"editnavn\" size=\"20\"><br>
 
  <input type=\"text\" value=\"Kundetelefon\" name=\"edittelefon\" size=\"20\"><br>
 
  <input type=\"submit\" value=\"Søg\" name=\"buttonnummer\"></p>
</form>
</body>
</html>

<html>

<body>
<p align=\"center\"><table border=1 cellpadding=0 cellspacing=0>
<tr> <td> Nummer </td>
    <td> Navn </td>
    <td> Telefon </td>
</tr>
<%

  org.gjt.mm.mysql.jdbc2.Connection con=null;
  String Knr = request.getParameter(\"editnr\");
  String Kn = request.getParameter(\"editnavn\");
  String Kt = request.getParameter(\"edittelefon\");
  String sql =\"select * from Kunde where nummer =\'\"+Knr+\"\' or navn like \'%\"+Kn+\"%\'\";
  l.åben();
  Statement database=con.createStatement();
  ResultSet rs=database.executeQuery(sql);
  l.luk();

while (rs.next()) {
  int n = rs.getInt(\"nummer\");
  String nr = rs.getString(\"navn\");
  String t = rs.getString(\"telefon\"); %>
  <tr>  <td> <%= nr %> </td>
        <td> <%= n %> </td>
        <td> <%= t %> </td>
  </tr>
<%}
%>
</table></p>
</html>


************************************************
package liste1;

import pkundeGUI1.*;
import pkunde1.*;
import java.sql.*;
import java.util.*;


/**
* Insert the type\'s description here.
* Creation date: (29-11-2001 00:30:57)
* @author:
*/

public class Liste {
    private org.gjt.mm.mysql.jdbc2.Connection con=null;
    private String db = \"jdbc:mysql://127.0.0.1:3306/Kunde?user=&password=\";
    private int current;
// Kartotek constructor
//
public Liste() {
    super();
}
//Indsætter ny kunde i listen.
public void addkunde(Kunde k){
    current++;                                        //tæl current op
    int nr = k.getnummer();
    String n = k.getnavn();
    String t = k.gettelefon();
    String query =\"insert into Kunde values(\"+nr+\",\'\"+n+\"\',\'\"+t+\"\')\";
    try{
        Statement database=con.createStatement();
        ResultSet rs=database.executeQuery(query);
    } catch (SQLException e) {                      //fanger hvis der er fejl i SQL forespørgsel
        e.printStackTrace(System.out);
    }   
}
    public int getcurrent(){
        return current;
        }
public Kunde getfirst(){
    String sql =\"select * from kunde\";
    String n = null;
    String t = null;
    int nr = 0;
    try{
    Statement database=con.createStatement();
    ResultSet rs=database.executeQuery(sql);
    rs.first();                                    //tag den første record i rs
    n = rs.getString(\"navn\");
    t = rs.getString(\"telefon\");
    nr = rs.getInt(\"nummer\");
    current = nr;
    } catch (SQLException e) {                  //fanger hvis der er fejl i SQL forespørgsel
        e.printStackTrace(System.out);
    }   
    current=nr;                                    //sæt current til nummeret på den første kunde
    return new Kunde(nr,n,t);
   
}
public Kunde getlast(){
    String sql =\"select * from Kunde\";           
    String n = null;
    String t = null;
    int nr = 0;
    try{
    Statement database=con.createStatement();
    ResultSet rs=database.executeQuery(sql);
    rs.last();                                    //tag den sidste record i rs
    n = rs.getString(\"navn\");
    t = rs.getString(\"telefon\");
    nr = rs.getInt(\"nummer\");
    } catch (SQLException e) { 
        e.printStackTrace(System.out);            //fanger hvis der er fejl i SQL forespørgsel
    }
    current=nr;                                    //sæt current til at være nummeret på den sidste
    return new Kunde(nr,n,t);
}
// Henter næste kunde i listen.
    public Kunde getnext(){
    current++;                                                        //tæl current op
    String sql =\"select * from Kunde where nummer = \"+current+\"\";    //tag den kunde som har nummer current
    String n = null;
    String t = null;
    int nr = 0;
    try{
    Statement database=con.createStatement();
    ResultSet rs=database.executeQuery(sql);
    rs.next();
    n = rs.getString(\"navn\");
    t = rs.getString(\"telefon\");
    nr = rs.getInt(\"nummer\");
    } catch (SQLException e) {                                      //fanger hvis der er fejl i SQL forespørgsel
        e.printStackTrace(System.out);
    }
    return new Kunde(nr,n,t);
}
// Henter forrige kunde i listen.
    public Kunde getprevious(){
    current--;                                                        //tæl current ned
    String sql =\"select * from Kunde where nummer = \"+current+\"\";      //tag den kunde som har nummer current
    String n = null;
    String t = null;
    int nr = 0;
    try{
    Statement database=con.createStatement();
    ResultSet rs=database.executeQuery(sql);
    rs.next();
    n = rs.getString(\"navn\");
    t = rs.getString(\"telefon\");
    nr = rs.getInt(\"nummer\");
    } catch (SQLException e) {                                      //fanger hvis der er fejl i SQL forespørgsel
        e.printStackTrace(System.out);
    }
    return new Kunde(nr,n,t);
}
public int getsize(){
    String sql =\"SELECT count(*) as size FROM Kunde\";     //tæl hvor mange rækker der er i Kunde
    int i=0;
    try{
    Statement database=con.createStatement();
    ResultSet rs=database.executeQuery(sql);
    rs.next();
    i =rs.getInt(\"size\");                                  //sæt i til antal rækker i Kunde
    } catch (SQLException e) {                          //fanger hvis der er fejl i SQL forespørgsel
        e.printStackTrace(System.out);
    }
    return i;
}
//Lukker
public void luk() {
    if (con != null) {                         //hvis forbindelsen er åben
        try {
            con.close();                     //luk forbindelse og
            con = null;                      //sæt den til null
        } catch (SQLException e) {
            e.printStackTrace(System.out);    //fanger hvis der er fejl i SQL forespørgsel
        }
    }
}
    public void setcurrent(int i){
        current=i;
        }
    public int toint(String s){
        int i = 0;
        i = new Integer(s).parseInt(s);
        return i;
        }
//Åbner
public void åben() {
    try {
        if (con == null) {
            Class.forName(\"org.gjt.mm.mysql.Driver\").newInstance();
            con = (org.gjt.mm.mysql.jdbc2.Connection) DriverManager.getConnection(db);
        }
    } catch (SQLException e) {             
        e.printStackTrace(System.out);        //fanger hvis der er fejl i SQL forespørgsel
    } catch (ClassNotFoundException e) {
        e.printStackTrace(System.out);        //fanger hvis driveren ikke findes / kan loades
    } catch (InstantiationException e) {
        e.printStackTrace(System.out);        //fanger hvis der ikke kan skabes en ny Instance af driveren
    } catch (IllegalAccessException e) {
        e.printStackTrace(System.out);        //fanger hvis driveren ikke er tilgængelig f.eks. ikke public
    }
}
}
Avatar billede gorlist Nybegynder
10. december 2001 - 17:01 #7
Jeg har lige lavet index.jsp om så den sender inputs til sig selv.
Avatar billede gorlist Nybegynder
10. december 2001 - 17:03 #8
Hvis jeg kopierer indholdet af liste1.Liste.åben() over i index.jsp fungerer det fint.
Avatar billede gorlist Nybegynder
10. december 2001 - 17:03 #9
(herved ment at jeg så ikke bruger bønnen)
Avatar billede erikjacobsen Ekspert
10. december 2001 - 17:25 #10
Er det en god idé at lukke forbindelsen inden man løber ResultSet
igennem ?
Avatar billede gorlist Nybegynder
10. december 2001 - 17:28 #11
Tja, hvad syn\'s du? Mener du at det kan ha\' noget med sagen at gøre? :)
Avatar billede gorlist Nybegynder
10. december 2001 - 17:37 #12
Hmm - ændrer ingenting.
Det må være når jeg forsøger at få fat på bønnen...
Avatar billede gorlist Nybegynder
10. december 2001 - 17:37 #13
Er mit import korrekt eller skal der mere på?
Avatar billede erikjacobsen Ekspert
10. december 2001 - 17:42 #14
Er du sikker på det ikke ændrer noget?
Avatar billede gorlist Nybegynder
10. december 2001 - 17:47 #15
Jeg har helt fjernet l.luk().
Avatar billede gorlist Nybegynder
10. december 2001 - 17:51 #16
  l.åben();
  Statement database=con.createStatement();
  ResultSet rs=database.executeQuery(sql);

i l.åben() åbnes forbindelsen (con). Ved index.jsp godt det? l.åben() returnerer jo ikke noget.
Avatar billede gorlist Nybegynder
10. december 2001 - 17:55 #17
I index.jsp sætter jeg org.gjt.mm.mysql.jdbc2.Connection con=null;

Men l.åben() bruger en con fra klassen liste.Liste

Hvordan skal den gribes an?
Avatar billede erikjacobsen Ekspert
10. december 2001 - 17:55 #18
Nej, det gør den da ikke. Du har jo 2 forskellige con-variabler.
Avatar billede gorlist Nybegynder
10. december 2001 - 17:58 #19
Dvs. at jeg, udover at kalde l.åben() skal konstruere en metode Connection getcon()?
Avatar billede erikjacobsen Ekspert
10. december 2001 - 17:59 #20
Jah, eller en metode, der afleverer et ResultSet.
Avatar billede gorlist Nybegynder
10. december 2001 - 18:59 #21
Ok - så kører det. Takker!
Avatar billede gorlist Nybegynder
20. februar 2002 - 18:43 #22
Det virker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester