´ Attekint´ es
Java Web–technol´ogi´ak Bevezet´es I
Model–View–Controller (MVC) elv
I
Java EE
I
Java alap´ u Web–alkalmaz´asok
1 / 28
MVC Model-View-Controller
2 / 28
MVC desktop illetve webalkalmaz´as eset´en
eredete: I
kezdetben a SmallTalk OO programz´asi nyelvhez lett kifejlesztve
I
eredetileg desktop alkalmaz´asokn´al haszn´alt´ak
l´enyege sz´etv´alasztani a k¨ovetkez˝o r´eszeket: I
u ¨zleti adatokat tartalmaz´o objektumok, illetve a rajtuk v´egezhet˝o m˝ uveletek (model)
I
megjelen´ıt´es (view)
I
vez´erl˝o logika (controller)
MVC – desktop alkalmaz´as eset´en I
jelenleg a legt¨obb web-keretrendszer is a Model-View-Controller (MVC) mint´at k¨oveti
3 / 28
MVC – (klasszikus) web-alkalmaz´as eset´en
4 / 28
MVC + Java web–technol´ogi´ak Az MVC elv m˝uk¨od´ese Java web-alkalmaz´asok eset´en a k¨ovetkez˝ok´eppen v´azolhat´o:
MVC Java web-technol´ogi´ak eset´en: I
Modell: tipikusan JavaBean-ek alkotj´ak + a rajtuk v´egzett m˝ uveletek (¨ uzleti logika k´od)
I
N´ ezet: tipikusan Java Server Page-ek (JSP) k´epviselik (de m´as megjelen´ıt´esi technol´ogi´ak is felhaszn´alhat´ok, pl. Velocity, FreeMarker, JasperReports, Facelets (JavaServer Faces) stb.) Vez´ erl´ es: tipikusan egy Servlet (+parancsobkjektumok), amely
I
I I I I I
1. A kliens (web b¨ong´esz˝o) k´er´est int´ez a web szerverhez (GET vagy POST) 2. A webszerver a k´er´est (egy konfigur´aci´os ´allom´any alapj´an) a vez´erl´es´ert felel˝os Servlethez ir´any´ıtja 3. A vez´erl˝o Servlet (diszp´ecser) a k´er´es URL alapj´an megh´ıvja a megfelel˝o parancs-objektumot 4. A parancsobjektum
fogadja a k´er´es (request) param´etereket ´ atalak´ıtja a param´etereket a megfelel˝ o t´ıpusra ellen˝ orzi a param´eterek helyess´eg´et megh´ıvja a megfelel˝ ou ¨zleti logika met´ odusokat az el˝ obbi l´ep´esek eredm´enyei alapj´ an tov´ abb´ıt a megfelel˝ o n´ezethez
I
I
megh´ıvja az u ¨zleti logik´ at (itt t¨ ort´enik pl. kommunik´ aci´ o az adatb´ azissal vagy web-szolg´ altat´ assal), majd ´ atir´ any´ıt a megfelel˝ o n´ezetre (pl. JSP).
5. A n´ezet (pl. JSP) megjelen´ıti az u ¨zleti objektumokat
5 / 28
Java EE
6 / 28
Java EE Java EE alkalmaz´as elk´esz´ıt´es´enek f´azisai:
I
a Java alap´ u Web–alkalmaz´asok tipikus alkot´oelemei: I I
I
Servlet (vez´erl´es) JSP (n´ezet)
I
tervez´ese (design)
I I
fejleszt´ese (development) ¨ossze´all´ıt´asa (assembly)
I
telep´ıt´ese (deployment)
A JavaEE platform az al´abbiakat k´ın´alja:
ezek a komponensek a Java EE specifik´aci´o szerves r´eszei
I
alkalmaz´asok komponens alap´ u fejleszt´ese – u ´jrafelhaszn´alhat´o komponensek t¨obbr´eteg˝ u osztott alkalmaz´asmodell
I
egys´eges´ıtett biztons´agi modell
I
XML alap´ u web-szolg´altat´asok (web service)
I
platformf¨ uggetlens´eg
I
szerverf¨ uggetlens´eg
I
I
a tov´abbiakban ´attekint´est ny´ ujtunk a Java EE technol´ogi´akr´ol
7 / 28
8 / 28
T¨obbr´eteg˝u alkalmaz´asmodell
T¨obbr´eteg˝u alkalmaz´asok
R´ etegek (tier) - sz´etv´alasztj´ak az alkalmaz´ast logikai egys´egekre (mindegyiknek k¨ ul¨on feladata van)
A k¨ovetkez˝o r´etegeket k¨ul¨onb¨oztetj¨uk meg: I
I
I
I
Kliens (¨ ugyf´ el)-r´ eteg: A kliens g´epen fut´o komponensek (pl. applet, swing alkalmaz´as) Web-r´ eteg: a Java EE szerver web–kont´ener´eben fut´o komponensek (Servlet, JSP) ¨ Uzleti logikai-r´ eteg: a Java EE szerver EJB kont´ener´eben fut´o komponensek (EJB) V´ allalati inform´ aci´ os r´ eteg (Enterprise Information System (EIS)): EIS szerveren fut´o szoftver (pl. adatb´azisszerver)
A Java EE alkalmaz´asokat ´altal´aban h´arom r´eteg˝ unek tekintik: I
T¨obbr´eteg˝ u alkalmaz´asok [Java EE Tutorial]
kliens g´ep (felhaszn´al´oi fel¨ uletet bizos´ıt), Java EE szerver (az u ¨zleti logik´at tartalmazza) ´es adatb´azis szerver 9 / 28
Web kliens
10 / 28
Alkalmaz´askliensek (desktop kliens)
a web b¨ong´esz˝o: I
Alkalmaz´askliensek:
megmutatja a szerverr˝ol ´erkez˝o oldalakat: I
A kliens g´epen futnak ´es egy komplexebb felhaszn´al´oi fel¨ uletet biztos´ıtanak a html, xml alap´ u nyelvekhez k´epest
HTML, XML stb. alap´ u dinamikus weblapok – a web-r´etegen fut´ o komponensek gener´ alj´ ak o ˝ket
web kliensek – u ´n. k¨onny˝ u (thin) kliensek I
nem k´erdeznek le adatb´azisokat, nem v´egeznek komplex u ¨zleti m˝ uveleteket
I
ezek a “neh´ez” m˝ uveletek a Java EE szerveren hajt´odnak v´egre (hasznos´ıtva a szerveroldali technol´ogi´ak gyorsas´ag´at, biztons´ag´at, megb´ızhat´os´ag´at)
I
legink´abb jellemz˝o egy Swing vagy AWT alap´ u grafikus felhaszn´al´oi fel¨ ulet
I
lehet ak´ar parancssor alap´ u fel¨ ulet is
Ezek a kliensek m´ar k¨ozvetlenebb¨ ul kapcsol´odnak az alkalmaz´aslogik´ahoz ´es t¨obb funkcionalit´ast tartalmazhatnak.
11 / 28
12 / 28
JavaBean-ek
Java EE komponensek Java EE komponens:
Az al´abbiakban j´atszanak szerepet: I
a Java EE komponensek ´es az adatb´azisr´eteg k¨oz¨otti adatcser´eben
I
web–alkalmaz´as eset´en a n´ezet a standard web-es hat´ok¨or¨okbe helyezett bean-eket mutatja meg
egy ¨ on´ all´ o funkcionalit´ as´ u szoftverr´esz, amely a hozz´a tartoz´o Java oszt´alyokkal ´es er˝oforr´asf´ajlokkal egy alkalmaz´as keret´eben van telep´ıtve, ´es m´as komponensekkel kommunik´ al
A k¨ovetkez˝o Java EE komponensek vannak defini´alva: A JavaBean-ek nem r´eszei a Java EE specifik´aci´onak. Az implement´alt JavaBean oszt´alyok meg kell feleljenek a JavaBean specifik´aci´onak: I
get/set met´odusok a tulajdons´agok lek´erdez´es´ere, be´all´ıt´as´ara,
I
param´eter n´elk¨ uli publikus konstruktor,
I
szerializ´alhat´o kell legyen, stb.
I
Alkalmaz´ as kliensek, Appletek: kliensoldalon fut´o komponensek
I
Servletek, JSP (JavaServer Pages), JSF (JavaServer Faces): web komponensek, melyek a Java EE szerver Web-kont´ener´eben (pl. Tomcat) futnak
I
EJB-k (Enterprise JavaBeans): u ¨zleti logika komponensek, melyek a Java EE szerver ejb-kont´ener´eben (pl. Weblogic, Websphere, JBoss, GlassFish) futnak
13 / 28
14 / 28
Web komponensek n´eh´any jellemz˝o: I
a Java EE komponensek Java nyelven ´ır´odnak
I
ford´ıt´asuk b´armilyen m´as Java program´ehoz hasonl´oan t¨ort´enik
Servletek: Java oszt´alyok, amelyek dinamikusan dolgozz´ak fel a k´er´est (request) ´es ´ep´ıtik fel a v´alaszt (response)
JSP-k:
egy Java EE komponens ´es egy standard Java oszt´aly k¨ozti k¨ul¨onbs´eg: I
a Java EE komponensek meg kell feleljenek az illet˝o t´ıpus´ u komponensre vonatkoz´o Java EE specifik´aci´onak
I
a komponenseket ¨ossze kell rakni egy Java EE alkalmaz´asba
I
ezt k¨ovet˝oen a szerverre lesznek telep´ıtve
sz¨oveg-alap´ u dokumentumok, amelyek a h´att´erben ugyancsak Servletk´ent futnak le, de a statikus tartalmat (HTML, XML) j´oval egyszer˝ ubben, term´eszetesebben lehet l´etrehozni a seg´ıts´eg¨ ukkel.
15 / 28
I
elvileg – a Servletek ´es JSP-k felcser´elhet˝oek
I
gyakorlatilag – minkett˝onek megvan az er˝oss´ege ´es a gyeng´eje
16 / 28
¨ Uzleti logika komponensek – Enterprise Java Bean-ek
o¨sszehasonl´ıt´as A Servletek alkalmasabbak: I
kontrollerk´ent egy web–alkalmaz´asn´al (pl. k´er´estov´abb´ıt´as)
I
nem sz¨oveg alap´ u adatok feldolgoz´as´ara
Egy Java EE alkalmaz´asban az u ¨zleti logika k´odja (ami egy konkr´et k¨ovetelm´enyt –use case– implement´al) EJB-k ´altal van megval´os´ıtva.
H´aromf´ele EJB:
A JSP-k alkalmasabbak:
I
session bean: az u ¨zleti logik´at implement´alja
sz¨ oveg alap´ u (HTML, SVG, WML, XML) oldalak l´etrehoz´as´ara
I
entity bean: egy adatb´azist´abla egy bejegyz´es´enek (record) felel meg. Biztos´ıtja, hogy az adatok automatikusan le legyenek mentve az adatb´azisba.
A Servlet ´es JSP technol´ogi´ak bevezet´ese ´ota u ´jabb Java technol´ogi´ak fejl˝odtek ki, amelyek (r´eszben) az el˝obbi kett˝on alapulnak. Pl. JSF, JSP elemk¨onyvt´arak (pl. JSTL)
I
message-driven (¨ uzenetvez´ erelt) bean: u ¨zenetk¨ uld´est teszik lehet˝ov´e
I
17 / 28
ami a t¨obbr´eteg˝u alkalmaz´asok meg´ır´as´at bonyolultt´a teszi. . .
18 / 28
A web komponenseket vagy enterprise beaneket nem lehet egyb˝ol lefuttatni:
komplex k´od ´ır´as´ara van sz¨ uks´eg: I
a tranzakci´ok kezel´es´ehez,
I
¨ossze kell ´all´ıtani ˝oket (assembly) egy Java EE modulba
I
t¨obbsz´al´ u programoz´ashoz,
I
a kont´enerbe kell telep´ıtni (deploy)
I
hat´ekony er˝oforr´as-t´arol´ashoz (resource pooling),
I
m´as alacsony szint˝ u m˝ uvelethez
az ¨ossze´all´ıt´as: k¨ ul¨onb¨oz˝o kont´ener be´all´ıt´asokat felt´etelez – k¨ ul¨onb¨oz˝o konfigur´aci´os ´allom´anyokban A Java EE szerver ezen be´all´ıt´asok alapj´an k¨ ul¨onb¨oz˝o szolg´altat´asokat biztos´ıt:
A komponens alap´ u ´es platfom-f¨ uggetlen Java EE architekt´ ura a t¨obbr´eteg˝ u alkalmaz´asok fejleszt´es´et megk¨onny´ıti, mivel: I I
az u ¨zleti logika u ´jrafelhaszn´alhat´o komponensekbe van szervezve a fenti alacsony szint˝ u m˝ uveleteket a Java EE szerverek biztos´ıtj´ak, ez´altal a fejleszt˝o a konkr´et feladat (¨ uzleti logika) megold´as´ara koncentr´alhat.
19 / 28
I
biztons´agi szolg´altat´asok
I
tranzakci´okezel´es,
I
JNDI,
I
t´avoli h´ıv´asok (EJB-k ´es kliensek k¨oz¨ott, mintha ugyanabban a JVM-ben futn´anak)
20 / 28
Kont´ener t´ıpusok A web-kliens ´es web-alkalmaz´as k¨ozti kapcsolat a k¨ovetkez˝ok´eppen m˝ukodik:
egy Java EE szerver EJB ´es Web kont´enereket biztos´ıt:
1. A kliens egy HTTP k´er´est k¨ uld a web-szervernek 2. A web-kont´ener (mely a Servlet ´es JSP technol´ogi´akat implement´alja) a k´er´est egy HTTPServletRequest objektumm´a alak´ıtja. 3. Ezt az objektumot megkapja a web-komponens (Servlet vagy JSP), amely JavaBean-ekkel vagy az adatb´azissal egy¨ uttm˝ uk¨odve dinamikus tartalmat gener´al. 4. A web-komponens egy HTTPServletResponse objektumot fog gener´alni vagy tov´abbadja (forward) a k´er´es objektumot egy m´asik web-komponensnek. 5. A web-kont´ener ezt az objektumot egy HTTP v´alassz´a (response) alak´ıtja ´es visszak¨ uldi a kliensnek. Java EE szerver ´es kont´enerek [Java EE Tutorial] 22 / 28
21 / 28
Egy web-alkalmaz´as l´etrehoz´asa ´es futtat´asa a k¨ovetkez˝o l´ep´esekb˝ol ´all:
Egy web-alkalmaz´as a k¨ovetkez˝o komponensekb˝ol ´all: I
web-komponensek
I
a web komponensek (Servlet, JSP) illetve seg´edoszt´alyok meg´ır´asa
I
telep´ıt´es-le´ır´o (deployment descriptor)
I
a telep´ıt´es-le´ır´o (deployment descriptor) l´etrehoz´asa
I
statikus er˝oforr´asok (pl. k´epek, statikus HTML oldalak)
I
I
Java oszt´alyok
I
jar programcsomagok (libraries)
a komponens oszt´alyok illetve az ezekb˝ol hivatkozott seg´edoszt´alyok leford´ıt´asa, illetve a megfelel˝o strukt´ ur´aj´ u web-alkalmaz´as ¨ossze´all´ıt´asa (build–tool seg´ıts´eg´evel: pl. Ant)
I
[opcion´alisan] ¨osszecsomagolni az alkalmaz´ast egy telep´ıthet˝o egys´egbe (deployable unit). (.war ´allom´any)
I
telep´ıteni az alkalmaz´ast a web-kont´enerbe
I
b¨ong´esz˝ob˝ol megh´ıvni a megfelel˝o URL-ket, melyek a web-alkalmaz´asra hivatkoznak
Egy web-alkalmaz´as szerverf¨ uggetlen: b´armilyen web-kont´enerbe telep´ıthet˝o, amelyik megfelel a Java Servlet/JSP specifik´aci´onak.
23 / 28
24 / 28
Web modul szerkezete
A web modul I
a web-kont´ener megfelel˝o katal´ogus´aba lesz telep´ıtve
I
az al´abb felsorolt elemeket tartalmaz´o
.war ´allom´anynak vagy katal´ogusnak felel meg
Egy web modul saj´atos strukt´ur´aval rendelkezik: a gy¨ok´erben tal´ahat´ok a I
JSP oldalak
I
statikus web er˝oforr´asok
szint´en a gy¨ok´er tartalmaz egy WEB-INF nev˝ u katal´ogust, amely a k¨ ovetkez˝oket tartalmazza: I
web.xml : a webalkalmaz´as telep´ıt´es-le´ır´oja (deployment descriptor)
I
classes katal´ogus: szerver-oldali oszt´alyok: Servletek, seg´edoszt´alyok ´es JavaBeans komponensek
I
lib katal´ogus: jar csomagok, melyeket a szerver-oldali oszt´alyok h´ıvnak meg Java EE web modul [Java EE Tutorial] 26 / 28
25 / 28
Hasznos web-c´ımek
Fejleszt˝oi k¨ornyezet – pl.
N´eh´any hasznos web-c´ım: I
www.oracle.com/technetwork/java/ – A Oracle (Sun) Java-val kapcsolatos hivatalos weboldala I I
Az al´abbi eszk¨oz¨oket fogjuk haszn´alni:
http://docs.sun.com/app/docs/doc/819-3669 – Java EE 5 Tutorial http://download.oracle.com/javaee/6/tutorial/doc/ – Java EE 6 Tutorial (Java EE Tutorials )
I
www.apache.org – Hasznos programcsomagok, keretrendszerek, API implement´aci´ok (pl. Tomcat)
I
www.eclipse.org – Az Eclipse fejleszt˝oi k¨ornyezet hivatalos honlapja
I
www.google.com ... :)
I
JDK 6 (vagy 7) (Java Developement Kit) – futtat´asi k¨ornyezet ´es Java fejleszt˝oi eszk¨oz¨ok (pl. ford´ıt´o)
I
Eclipse/NetBeans – Java fejleszt˝oi k¨ornyezet
I
Ant – build tool
I
Tomcat 7 – webkont´ener
I
MySql – adatb´azisszerver
I
tetsz´es szerinti b¨ong´esz˝o
magyar nyelv˝ u dokument´aci´o: Antal Margit, Java alap´ u webtechnol´ogi´ak: www.ms.sapientia.ro/∼manyi/teaching/java/java web technologiak.pdf
27 / 28
28 / 28