# JSP Zugriff auf JavaBean



## hunter1977 (16. Feb 2005)

Hallo ich habe folgendes Problem. Ich habe den Zugriff auf die DB in eine JavaBean ausgelagert.
Jetzt will ich in der JSP die Bean aufrufen und das Ergebnis anzeigen.

```
JSP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=ISO-8859-1"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="oracle.jdbc.pool.OracleDataSource"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<jsp:useBean id="abrechnung" class="abrechnung.DBConnection"/>
<jsp:getProperty name="abrechnung" property="db_result"/>
--> hier sagt er mir das er das  property="db_result keine Eigenschaft von abrechnung ist
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta>
    <title>
      Auswertung
    </title>
  </head>
  <body>
  </body>
</html>
```


```
JavaBean:
package abrechnung;
import java.io.Serializable;
import java.sql.*;


public class DBConnection
   implements Serializable
{
  private String db_result
  //public DBConnection()
  //{
  //}
  ;

  public String DBResult()
  {
    final String db_hostname = "xxxx";
    final String db_port = "1xxx";
    final String db_name = "ixxx";
    final String db_user = "xxx";
    final String db_password = "xxx";
    String db_query = ("");
    Connection conn = null;
    try
    {
      Class.forName("").newInstance();
    }
    catch (Exception e)
    {
      System.err.println("Unable to load driver");
      e.printStackTrace();
    }
    try
    {
      /*
        * Aufbau der DB-Verbindung
        */
      String url = "jdbc:oracle:thin:@" + db_hostname + ":" + db_port + ":" + db_name + "";
      conn = DriverManager.getConnection(url, db_user, db_password)/*
         * Datenbank Abfrage
         */
      ;
      db_query = "SELECT * from dual;";
      Statement state = conn.createStatement();
      ResultSet result;
      result = state.executeQuery(db_query);
      if (result.next())
      {
        db_result = result.getString(1);
      }
      conn.close();
    }
    catch (SQLException sple)
    {
      sple.printStackTrace();
    }
    return db_result;
  }

}
```

Kann mir jemand sagen was ich bei Properties falsch machen. Wie kann ich auf den Wert aus der JavaBean in der JSP zugreifen?
Kann mir jemand weiterhelfen.

Danke Hunter


----------



## bambi (16. Feb 2005)

Eine JavaBean muss immer die Getter und Setter-Methoden aller Eigenschaften bereitstellen.
Du brauchst also auf jedenFall getDb_result() und setDb_Result(String result).

Die Zugriffe auf die DB wurede ich auch lieber in eine andere Klasse auslagern, die dann die JavaBean zurueckgibt
 - iss halt einfach schoener so...  :wink:


----------



## ak (17. Feb 2005)

Deine Klasse hat keine Eigenschaften einer Javabean. Wie Bambi schon sagte: private Variablen und getter und setter.
Hab ich eigentlich schon einmal erwähnt, dass DB-Zugriffe nicht in eine JavaBean gehören?


----------



## hunter1977 (17. Feb 2005)

Hallo,

ich habe leider noch keine Erfahrung mit JSP und Datenbankzugriffen.
Wie würdet ihr denn das mit dem Zugriff auf die DB regeln.
Nicht in eine JavaBean, sondern ?

Danke Hunter


----------



## ak (17. Feb 2005)

In einer anderen Klasse oder in einer Methode eines Servlets. Wenn du z.B. die Daten aus der DB eingelesen hast, dann speicherst du diese in der JavaBean und übergibst diese der session.


----------

