[JSP] Gegenereerde JSP pagina met bean compileert niet *

Pagina: 1
Acties:

  • mrClass
  • Registratie: April 2002
  • Laatst online: 17-04-2025
Ik heb al even rondgekeken op got en al gegoogled, maar ik kon geen antwoord op mijn vraag vinden.

Ik heb een jsp pagina die er als volgt uit ziet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<head>
<title>Gegevens</title>
</head>

<body>
<jsp:useBean id='Mydbbean' class='dbbean' scope='session'/>
<jsp:setProperty name="Mydbbean" property="user" value="*****"/>
<jsp:setProperty name="Mydbbean" property="pass" value="*****"/>
<jsp:setProperty name="Mydbbean" property="user" value="*****"/>

<jsp:setProperty name="Mydbbean" property="voornaam" value=""/>
<jsp:setProperty name="Mydbbean" property="tussenvoegsel" value=""/>
<jsp:setProperty name="Mydbbean" property="achternaam" value=""/>
<jsp:setProperty name="Mydbbean" property="email" value=""/>

<jsp:getProperty name="Mydbbean" property="voornaam"/><br>
<jsp:getProperty name="Mydbbean" property="tussenvoegsel"/><br>
<jsp:getProperty name="Mydbbean" property="achternaam"/><br>
<jsp:getProperty name="Mydbbean" property="email"/><br>

</body>
</html>


De bijbehorende bean ziet er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import java.sql.*;

public class dbbean {
  private String voornaam = "";
  private String tussenvoegsel = "";
  private String achternaam = "";
  private String email = "";
  private String user = "";
  private String pass = "";
  private String name = "";

  public String getVoornaam() {
    return voornaam;
  }

  public void setVoornaam(String voornaam) {
    this.voornaam = voornaam;
  }

  public String getTussenvoegsel() {
    return tussenvoegsel;
  }

  public void setTussenvoegsel(String tussenvoegsel) {
    this.tussenvoegsel = tussenvoegsel;
  }

  public String getAchternaam() {
    return achternaam;
  }

  public void setAchternaam(String achternaam) {
    this.achternaam = achternaam;
  }

  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  public boolean CheckEmail(String email) {
    return true;
  }

  public void WriteGebruiker() {
    try {
      java.sql.Connection cn = GetConnection();
      String sql = "[correct SQL statement]";
      cn.createStatement().executeUpdate(sql);
      cn.close();
    } catch (SQLException e)
    {
      System.err.println("Foutje: " + e);
    }
  }

  public ResultSet GetGebruikers() {
    try {
      java.sql.Connection cn = GetConnection();
      String sql = "select * from gebruikers";
      ResultSet r = cn.createStatement().executeQuery(sql);
      cn.close();
      return r;
    } catch (SQLException e)
    {
      System.err.println("Foutje: " + e);
    }
    return null;
  }

  private java.sql.Connection GetConnection() {
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      return java.sql.DriverManager.getConnection(name, user, pass);
    } catch (Exception e) {
      System.err.println("Foutje: " + e);
    }
    return null;
  }

  public dbbean() {

  }
}


De jsp pagina is via tomcat normaal bereikbaar en de jsp pagina word zonder problemen omgezet in een servlet.

Het probleem is nu als volgt:
De gegenereerde servlet wil niet compileren, omdat de instantie van de dbbean niet aangemaakt kan worden. Dit komt omdat de java compiler de klasse van het type dbbean niet kan vinden.

Deze klasse (Van de dbbean) wordt ook niet in de gegenereerde servlet geplaatst, en er wordt ook geen import aangemaakt.

De foutmelding van de server is als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 6 in the jsp file: /jsp/test.jsp

Generated servlet error:
    [javac] Compiling 1 source file

/work/Standalone/localhost/internet/jsp/test_jsp.java:47: cannot find symbol
symbol  : class dbbean
location: class org.apache.jsp.test_jsp
      dbbean Mydbbean = null;
      ^


Extra informatie:

jsp pagina (Die wel via de browser toegankelijk is):
/webapps/internet/jsp/test.jsp

dbbean (Die bij het omzetten van jsp naar servlet wel gevonden kan worden):
/webapps/internet/WEB-INF/classes/dbbean.class

gegenereerde servlet (Die niet compileert):
/work/Standalone/localhost/internet/jsp/test_jsp.java

tomcat versie: 4.1.31
linux versie: slackware current
JDK versie: 1.5

edit:

Ik zie dat ik in de topic titel de [jsp] vergeten ben, en het is: "compileert" :D

[ Voor 11% gewijzigd door mrClass op 11-11-2004 11:33 ]


Verwijderd

En als je de dbbean class in een eigen package plaatst? Soms heeft Tomcat wat gekkigheden met class loading wat dat betreft. Als dat allemaal niet werkt, probeer dan eens of het wel werkt met een JAR file in [tomcat_home]/shared/lib. Vergeet trouwens niet dat het herstarten van Tomcat soms ook wonderen doet als het om classloading gaat.

Tips:
1 Volg de Java Naming Conventions - dat scheelt soms problemen en maakt je code leesbaarder.

2 Kies een beschrijvende naam voor je class bijv. UserData zegt in dit geval meer over de class dan dbbean.

3 Heroverweeg je public method die een ResultSet teruggeeft. Volgens mij hoort dat niet bij de "best practices".

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Ik zie nergens een import statement.
Je moet de klasse dbbean wel importeren in je jsp pagina, in principe is een jsp pagina een java klasse met html code, en dus is allen java.lang beschikbaar + wat er allemaal in de jsp klasses zit.