# Java Bean in JSP



## Toastbrot666 (8. Februar 2007)

Hallo,

ich melde mich mal wieder hier, da ichs net mehr verstehe.

Folgende Sache. ich habe mir mal JSP angeschaut und würde des jetzt gerne verwenden. Gleichzeitig habe ich eine Bean gebastelt und würde die gerne verwenden.

Im Einsatz habe ich Tomcat 5.5 und Java SDK 6

Vielleicht fällt jemand mein Fehler auf.

JSP:

```
<jsp:useBean id="helloworldbean" type="bib.helloworld" />
<jsp:getProperty name="helloworldbean" property="helloworld" />
```
 
Java Bean:

```
package bib;
public class helloworld
{
  String str_helloworld ="helloworldd";
  public helloworld(){};
  public String getHelloworld()
  {
    return str_helloworldd;
  } 
}
```
 
Folgende fehlermeldung bekomme ich immer wieder:



> *type* Exception report
> *message*
> *description* The server encountered an internal error () that prevented it from fulfilling this request.
> 
> *exception* org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 1 in the jsp file: /jsp/beanhelloworld.jspGenerated servlet error:\root\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\jsp\beanhelloworld_jsp.java:42: package bib does not exist bib.helloworld helloworldbean = null; ^An error occurred at line: 1 in the jsp file: /jsp/beanhelloworld.jspGenerated servlet error:\root\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\jsp\beanhelloworld_jsp.java:44: package bib does not exist helloworldbean = (bib.helloworld) _jspx_page_context.getAttribute("helloworldbean", PageContext.PAGE_SCOPE); ^2 errors    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)    org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)    org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)    org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)    org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


 
das jsp liegt in D:\Tomcat\webapps\ROOT\jsp\

Die Bean liegt in: D:\Tomcat\webapps\ROOT\web-inf\classes\bib

Was ist falsch? 

Ich krieg den Fehler nicht.


----------



## Lucien3000 (8. Februar 2007)

hi Toastbrot,
hast du die JSP in der WEB.xml beschrieben? eventuell liegt da der hund begraben ...

ansonsten schau dir mal die erste Zeile der JSP an ... anstatt "type" solltest du da "class" hinschreiben und dann die klasse angeben mit der Bean.

anderer Hinweis: Deine Variable heist str_helloworld  du hast beim return aber str_helloworldd stehen. Da muss ein "d" weg am ende 

das ist erstmal das was mir auf Anhieb auffällt.

grüße
Lucien


----------



## Toastbrot666 (8. Februar 2007)

Lucien3000 hat gesagt.:


> hast du die JSP in der WEB.xml beschrieben?


 
was muss ich denn da genau beschreiben?



Lucien3000 hat gesagt.:


> ansonsten schau dir mal die erste Zeile der JSP an ... anstatt "type" solltest du da "class" hinschreiben und dann die klasse angeben mit der Bean.


 
Ich hatte es mit class probiert, aber damit lief es ganz und gar nicht. Hab ich immer ne Class not found Fehlermeldung bekommen. Durch das Type konnte ich das abfangen.

Was muss ich denn für einen zusatz einbauen, damit class funktioniert?

Danke und Gruß

Toastbrot


----------



## Lucien3000 (8. Februar 2007)

also die WEB.xml sieht in etwas so aus wenn man eine JSP dort beschreibt


```
<web-app>
                <servlet>
                        <servlet-name>helloworld</servlet-name>
                        <jsp-file>helloworld.jsp</jsp/file>
                </servlet>
                <servlet-mapping>
                        <servlet-name>helloworld</servlet-name>
                        <url-pattern>/hello.html</url-pattern>
                </servlet-mapping>
          </web-app>
```

*<servlet> *wird benutzt, um eine Servlet-Klasse oder eine JSP-Seite zu beschreiben.
*<servlet-mapping>* wird zum einen dazu benutzt, dem benutzer zu vrbergen, dass er eine JSP seite aufruft (is jetzt erstmal noch spielerei)
und zum anderen wir die Seite bei <url-pattern> dann mit _http://localhost:port/deineverzeichnisse.../hello.html_ aufgerufen


----------



## Lucien3000 (8. Februar 2007)

um class zu verweden brauchst du keinen Zusatz zumindest nicht nach meinem Wissen.

ich benutzte es beispielsweise so:


```
<html><body>
<jsp:useBean id="userInfo" class="beans.UserBean">
    <jsp:setProperty name="userInfo" property="*"/>
</jsp:useBean
```

achso den tag jsp:useBean erst nach der setProperts schließen ... das könnte auch noch eine Ursache sein.
der Tag setProperty ist allerdings nur dazu da Benutzereingaben in einer Bean zu speichern ... für dein Hello world also erstmal irrelevant denke ich


----------

