Title: JavaServer Pages
1JavaServer Pagesés Java Beans
- Fabók Zsolt
- Általános Informatikai Tanszék
- Miskolci Egyetem
2JSP és a beanek
- Három tag
- ltjspuseBeangt
- ltjspsetPropertygt
- ltjspgetPropertygt
3ltjspuseBeangt
- Felhasználása objektumok, javaBeanek,
példányosítása.
4ltjspuseBeangt (folyt.)
- Attribútumai
- id
- scope
- type
- class
- beanName
5ltjspuseBeangt muködése
- id és scope attribútumok segítségével megpróbálja
megkeresni az objektumot a megfelelo névtérben. - Az "oldalon" létrehoz egy változót, melynek neve
az id -nek felel majd meg, és típusa a type -nak.
6ltjspuseBeangt muködése (folyt.)
- Ha megtalálta az objektumot a fenti névtérben,
akkor type típusúvá teszi (ha kell akkor
típuskényszerítéssel - sikertelen castolás esetén
kivétel keletkezik (java.lang.ClassCastException)
és a feldolgozása a tag -nak véget ér).
7ltjspuseBeangt muködése (folyt.)
- Ha nem találta meg az objektumot, akkor (3 eset)
- De a class -ban megadott osztálynak van default
konstruktora akkor azzal példányosítja, bekerül a
megadott névtérbe, majd "oldalszintu" változóvá
avanzsál. Ha nem tudta példányosítani, akkor a
java.lang.InstantionException kivétel kerül
kiváltásra.
8ltjspuseBeangt muködése (folyt.)
- De a beanName attribútum meg van adva akkor a
java.beans.Beans.instantiate() metódust hívja meg
a servlet ClassLoader -vel és a megadott névvel.
Ha sikeres akkor hozzárendeli a beant az adott
"oldalszintu" változóhoz, és elhelyezi a
megadott névtérbe. - Ha sem a class sem a beanName attribútum nincs
megadva, akkor a java.lang.InstantionException
kerül kiváltásra.
9Lehet, nem lehet, kötelezo...
- type és class értéke lehet osztálynév.
- beanName lehet egy a java.beans.Bean.instantiate()
-tal példányosítható javaBean. - beanName lehet futásidoben kiértékelodo kifejezés
is.
10Lehet, nem lehet, kötelezo... (folyt.)
- class és beanName nem lehet egyszerre megadva
- Ha type és class is meg van adva, akkor a class
értékül adható kell, hogy legyen type -nak. - id -t kötelezo megadni.
- Új objektum létrehozásakor a class -nak vagy a
type beanName párosnak szerepelnie kell.
11scope értéke lehet...
- page
- Az objektumot a javax.servlet.jsp.PageContext
objektumban keresi. - Az új objektumot itt is tárolja.
- élettartama egyetlen oldal élettartama
- megjegyzés ez az alapértelmezett.
12scope értéke lehet... (folyt.)
- request
- A javax.servlet.ServletRequest objektumban
keresi. - Az új objektumot szintén itt tárolja.
- élettartalma a kérés kiszolgálás idejére
vonatkozik.
13scope értéke lehet... (folyt.)
- session
- A javax.servlet.http.HttpSession objektumban
keresi. - Az új objektum itt tárolódik.
- élettartama a session (ülés) lejártával,
érvénytelenítésével vagy az alkalmazás
terminálásával ér véget.
14scope értéke lehet... (folyt.)
- application
- A javax.servlet.ServletContext objektumban
keresi. - Az új itt tárolódik.
- élettartama az egész alkalmazás élettartamával
azonos.
15ltjspsetPropertygt
- Feladata a ltjspuseBeangt által létrehozott
"elem" tulajdonságainak beállításra szolgál.
16ltjspsetPropertygt attribútumai
- property értéke lehet konkrét property név
- property értéke lehet is (ebben az esetben
minden olyan tulajdonság beállításra kerül a
megfelel értékkel, amely név a ServletRequest
objektumban is megtalálható) - Mindkét esetben, ha kell akkor tipuskonverzió
hajtódik végre.
17ltjspsetPropertygt attribútumai (folyt.)
- param attribútumot akkor kell használni, ha a
ServletRequest ben tárolt név nem azonos a
beanben tárolt tulajdonság nevével. - value attribútummal futási idoben rendelhetünk
értket a megfelelo tulajdonsághoz.
18ltjspgetPropertygt
- Feladata beanben adott tulajdonságának
lekérdezése.
19ltjspgetPropertygt (folyt.)
- A name -ben megadott bean példány
(beanInstanceName) getX() (X - propertyName)
metódust hívja, majd kiirja az implicit out
objektum segítségével (println). - BeanInfo !!!
20Esettanulmány
21Esettanulmány (folyt.)
22Esettanulmány (folyt.)
23Esettanulmány (folyt.)
24Esettanulmány (folyt.)
25Kiinduló állapot...
26Új értékek beállítása...
27Send után...
28Új böngészoben...
29Másik gépen...
30Thank you
for your
attention!