Avatar billede ppstyle Nybegynder
25. december 2001 - 20:52 Der er 10 kommentarer og
1 løsning

Beans ved jsp programmering

hmm, sidder lige i øjeblikket og læser lidt nærmere om beans til brug i jsp sider.

Jeg er lidt forvirret med hensyn hvordan disse beans ser ud, og hvad der helt præcist gør dem til beans ( ud over getter og setter metoderne ).

Kan jeg bare lave mine egne klasser og bruge dem som beans, eller skal man have et værktøj, for at generere disse beans ?

Alle indslag er meget velkomne. mvh. Daniel
Avatar billede erikjacobsen Ekspert
26. december 2001 - 00:24 #1
I JSP er det netop get- og set-metoderne, samt en tom constructor, der \"gør
dem til beans\". Det er i hvert fald nok. En kogeægte bønne kræver lidt mere, for
den skal også - helst - kunne håndteres i et visuelt udviklingsværktøj.
Avatar billede senj Nybegynder
26. december 2001 - 00:32 #2
Dine beans kan se ud som du selv ønsker det. Dermed sagt, at dine bønner kan designes lige som du ønsker det og udfører de opgaver du nu engang ønsker at bønnen skal gøre. Der er dog nogle faste regler der skal følges når man opbygger bønner.

Javabønner er javaklasser og skal dermed designes som public klasser (public class). Der skal være en public konstruktør (constructor) der ikke må have eller tage nogen parametre.

Herefter er det ligesom java. Du kalder dine bønner/klasser fra din JSP side og får dermed adgang til klassen og dens metoder.

Du behøver ikke noget værktøj til at lave din bønner. Du kunne lave dem i notepad hvis det skulle være. Jeg selv bruger Forte4Java fra Sun og jeg mener stadig man kan få en gratis public version på deres hjemmeside. Har kan du frit designe JSP sider og Bønner. Der er ligeledes indbygget en jsp server (mener det er tomcat) så du kan teste det du laver.

Håber du kunne bruge det til noget!

/senj
Avatar billede logical Nybegynder
27. december 2001 - 12:45 #3
senj>> Der er ikke noget krav om no-arg constructor, værktøjer må bare gerne antage dette. Hvis der kun er andre constructors, skal der leveres en serialiseret prototype til værktøjerne. Og ja, forte bundler en tomcat 3 med sig :-)
Avatar billede logical Nybegynder
27. december 2001 - 12:46 #4
Alle klasser kan pr. definition bruges som beans, mindste mulige bønne er:
public class MyBean {}
Avatar billede erikjacobsen Ekspert
27. december 2001 - 12:56 #5
En klasse uden en parameterløs constructor giver denne fejl i JSP under Resin

java.lang.NoSuchMethodError: Eks2: method <init>()V not found
    at _eks1get__jsp._jspService(/eks1get.jsp:13)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
...osv...
Avatar billede logical Nybegynder
27. december 2001 - 13:46 #6
Yep, jeg siger heller ikke det fejler, det er bare aldrig skrevet i spec (Og derfor heller ikke et krav).

Der er 3 mekanismer beskrevet i javabeans spec omkring instantiering af en bean:
Værktøjer må konstruere en instans (new MyBean())
Værktøjer må indlæse en serialiseret instans (Beans.instantiate(\"MyBean.ser\", MyBean.class))
Værktøjet kan bruge en javaInitializerAsString fra en PropertyEditor.


Men summen er, linien \"der skal være en no-arg constructor\", skal rettes til \"der skal helst være en no-arg constructor\"

Mht. JSP kan man angive
<jsp:useBean id=\"mybean\" beanName=\"MyContainer.ser\" />
Hvis det skal loades op serialiseret.

beanName (jsp1.2 spec):
The attribute beanName specifies the name of a Bean, as specified in the
JavaBeans specification. It is used as an argument to the instantiate() method
in the java.beans.Beans class. It must be of the form “a.b.c”, which may be
either a class, or the name of a resource of the form “a/b/c.ser” that will be
resolved in the current ClassLoader.
Avatar billede erikjacobsen Ekspert
27. december 2001 - 13:55 #7
Ok, ja, men det er vel ikke så tit man bruger en serialiseret form.
Avatar billede logical Nybegynder
27. december 2001 - 16:45 #8
Egentlig ikke, men det er trods alt en metode til at levere en instans med prækonfiguration (Hvis der er attributter, man ikke vil have sat, og som ikke er properties).
Avatar billede heboth Nybegynder
02. januar 2002 - 10:08 #9
Hmmm,

Har lige prøvet at lave en bean der kaldes fra en JSP side men det virker ikke. Jeg får ingen fejl men getProperty kaldet returnere ikke noget. Til gengæld virker det at kalde funktionen direkte på min bønne. Se nedenstående. Kaldet til ub.getUserName virker mens getProperty kaldet ikke returnere noget. Jeg skal nævne at det er i Forte 3.0 jeg udvikler og min Tomvcat server er en 3.2

<jsp:useBean id=\"ub\" class=\"testBean\" />
<html>
<head><title>User record</title></head>
<body>
<br>
<% ub=(testBean)request.getAttribute(\"employee\"); %>
<%= ub.getuserName() %>
<jsp:getProperty name=\"ub\" property=\"userName\"/>
</body>
</html>
Avatar billede erikjacobsen Ekspert
02. januar 2002 - 12:35 #10
Du skal kalde din funktion getUserName
Avatar billede ppstyle Nybegynder
03. januar 2002 - 10:13 #11
Sorry guys en lidt lang juleferie uden ADSL :(

Nå men jeg er glad for de mange konstruktive indlæg folk har afgivet. Da senj er den eneste der har svaret får han pointsne. Men tak til jer andre der gad deltage.

Godt nytår - Daniel
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