A cikk megĂ©rtĂ©sĂ©hez szĂŒksĂ©ges ismeretek: többĂ©-kevĂ©sbĂ© mĂĄr kitalĂĄlta
a Java Core-t , Ă©s szeretne
a JavaEE technolĂłgiĂĄkkal Ă©s
webprogramozĂĄssal foglalkozni . Az lenne a legĂ©sszerƱbb, ha jelenleg a Java Collections kĂŒldetĂ©st tanulmĂĄnyoznĂĄ, amely a cikkhez közel ĂĄllĂł tĂ©mĂĄkkal foglalkozik.
Jelenleg az IntelliJ IDEA Enterprise Edition-t hasznĂĄlom (
a szerkesztĆ megjegyzĂ©se: ez az IDE fizetĆs kiterjesztett vĂĄltozata; ĂĄltalĂĄban a szakmai fejlesztĂ©s sorĂĄn hasznĂĄljĂĄk). Sokkal egyszerƱbb webes projektekkel dolgozni, mint az ingyenes
közösségi kiadåsban . Az
Enterprise Edition- ben szĂł szerint egyetlen kattintĂĄs az egĂ©rrel felĂ©pĂti a projektet, bedobja egy szervlet-tĂĄrolĂłba, elindĂtja a kiszolgĂĄlĂłt, Ă©s mĂ©g egy weboldalt is megnyit a projekthez a böngĂ©szĆben. Az IDEA ingyenes verziĂłjĂĄban ennek nagy rĂ©szĂ©t egyedĂŒl, azaz "manuĂĄlisan" kellene megtennie.
Apache Maven- t hasznĂĄlok
a projekt felĂ©pĂtĂ©sĂ©hez Ă©s Ă©letciklusĂĄnak kezelĂ©sĂ©hez. A kĂ©pessĂ©geinek (csomag/fĂŒggĆsĂ©gkezelĂ©s) csak egy kis rĂ©szĂ©t hasznĂĄltam ebben a projektben. Szervlet-tĂĄrolĂłkĂ©nt/alkalmazĂĄskiszolgĂĄlĂłkĂ©nt az Apache Tomcat 9.0.12-es verziĂłjĂĄt vĂĄlasztottam.
KezdjĂŒk el
ElĆször nyissa meg
az IntelliJ IDEA-t , Ă©s hozzon lĂ©tre egy ĂŒres
Maven projektet .
A bal oldalon vĂĄlassza ki
a Maven elemet , Ă©s ellenĆrizze, hogy fent van-e kivĂĄlasztva a
projekt JDK-ja . Ha nincs ott, vĂĄlasszon egyet a listĂĄbĂłl, vagy kattintson
az Ăj ... gombra, Ă©s vĂĄlasszon egyet a szĂĄmĂtĂłgĂ©prĆl.
Ebben az ablakban meg kell adnia a
GroupId és az ArtifactId értékeket . A
GroupId a projektet kibocsĂĄtĂł cĂ©g egyedi azonosĂtĂłjĂĄra utal. Az ĂĄltalĂĄnos gyakorlat a cĂ©g domain nevĂ©nek hasznĂĄlata, de fordĂtott sorrendben. De nem olyan, mint egy tĂŒkör. PĂ©ldĂĄul, ha egy vĂĄllalat domain neve
maven.apache.org , akkor a csoportazonosĂtĂłja
org.apache.maven. Vagyis elĆször a legfelsĆ szintƱ tartomĂĄnyt Ărjuk, adjunk hozzĂĄ egy pontot, majd a mĂĄsodik szintƱ tartomĂĄnyt, Ă©s Ăgy tovĂĄbb. Ez az ĂĄltalĂĄnosan elfogadott megközelĂtĂ©s. Ha sajĂĄt maga "csiszolja" a projektet (Ă©s nem egy cĂ©g rĂ©szekĂ©nt), akkor ide Ărja be szemĂ©lyes domain nevĂ©t (szintĂ©n fordĂtott sorrendben!). Ha van, termĂ©szetesen. :) Ha nem, ne aggĂłdj. Ide tulajdonkĂ©ppen
bĂĄrmit Ărhatsz .
A john.doe.org domain nĂ©vvel rendelkezĆ vĂĄllalatnĂĄl a GroupId org.doe.john lesz. Erre az elnevezĂ©si konvenciĂłra azĂ©rt van szĂŒksĂ©g, hogy elkĂŒlönĂtsĂŒk a kĂŒlönbözĆ vĂĄllalatok ĂĄltal elĆĂĄllĂtott, azonos nevƱ projekteket. |
Ebben a pĂ©ldĂĄban egy fiktĂv domaint fogok hasznĂĄlni:
fatlady.info.codegym.cc . Ennek megfelelĆen a
GroupId mezĆbe beĂrom
a cc.codergym.info.fatlady cĂmet .
Az ArtifactId egyszerƱen a projektĂŒnk neve. A szavak elvĂĄlasztĂĄsĂĄra hasznĂĄlhat betƱket Ă©s bizonyos szimbĂłlumokat (pĂ©ldĂĄul kötĆjeleket). "Artefaktumunkat" pontosan az lesz a neve, amit itt Ărunk.
Ebben a pĂ©ldĂĄban az Ă©n-szuperprojektemet fogom hasznĂĄlni . MĂ©g ne Ă©rintse meg a verziĂł mezĆt â csak hagyja Ășgy, ahogy van. Ăs itt van a standard
IDEA ablak, amikor Ășj projektet hoz lĂ©tre. A hagyomĂĄnyokhoz hĂven nevezzĂŒk ezt
az Ă©n-szuperprojektemnek .
A projekt létrejött!
A Pom.xml azonnal megnyĂlik. Ez egy Maven beĂĄllĂtĂĄsokkal rendelkezĆ fĂĄjl. Ha meg akarjuk mondani a Mavennek, hogy mit tegyen, vagy hol talĂĄljon valamit, mindezt leĂrjuk ebben a pom.xml fĂĄjlban. A projekt gyökerĂ©ben talĂĄlhatĂł. |
Låtjuk, hogy most pontosan azokat az adatokat tartalmazza, amelyeket a Maven projekt létrehozåsakor adtunk meg :
groupId ,
artifactId Ă©s
version (ez utĂłbbihoz nem nyĂșltunk hozzĂĄ).
ProjektĂŒnk felĂ©pĂtĂ©se
Ennek
a Maven projektnek sajĂĄtos szerkezete van.
Amint låtja, a gyökérnek:
- egy .idea könyvtĂĄr, amely az aktuĂĄlis projekt IDEA beĂĄllĂtĂĄsait tartalmazza;
- egy src könyvtår, ahol létrehozzuk a forråskódunkat;
- egy my-super-project.iml fåjl, amely egy IDEA åltal létrehozott projektfåjl;
- a pom.xml fĂĄjl (a Maven projektfĂĄjl, amelyet korĂĄbban emlĂtettem), amely most meg van nyitva. Ha valahol emlĂtem a pom.xml fĂĄjlt, akkor errĆl a fĂĄjlrĂłl beszĂ©lek.
Az
src mappĂĄn belĂŒl kĂ©t almappa talĂĄlhatĂł:
- main â kĂłdunkhoz;
- teszt â a kĂłdunk tesztelĂ©sĂ©hez.
A main Ă©s
a tesztben van egy
java mappa. Ezeket ugyanannak a mappånak tekintheti, kivéve, hogy a
main- ban talĂĄlhatĂł a forrĂĄskĂłd, a tesztben
pedig a tesztkĂłd. EgyelĆre nem hasznĂĄljuk az
erĆforrĂĄs mappĂĄt. Nem fogjuk hasznĂĄlni. De csak hagyd ott.
AlakĂtsa ĂĄt webprojekttĂ©
Itt az ideje, hogy a Maven projektĂŒnket webprojekttĂ© alakĂtsuk . Ehhez kattintson a jobb gombbal a projekt nevĂ©re ebben a fĂĄban, Ă©s vĂĄlassza a
KeretrendszertĂĄmogatĂĄs hozzĂĄadĂĄsa âŠ
MegnyĂlik egy ablak, ahol kĂŒlönbözĆ keretrendszerek tĂĄmogatĂĄsĂĄt adhatjuk hozzĂĄ projektĂŒnkhöz. De csak egy kell:
webalkalmazĂĄs . Ăs ezt vĂĄlasztjuk.
GyĆzĆdjön meg arrĂłl, hogy a
Web Application jelölĆnĂ©gyzet be van jelölve, Ă©s a fĆablak azt jelzi, hogy egy
web.xml fĂĄjlt szeretnĂ©nk automatikusan lĂ©trehozni (javaslom, hogy jelölje be a jelölĆnĂ©gyzetet, ha mĂ©g nincs bejelölve). EzutĂĄn azt lĂĄtjuk, hogy a
webmappa hozzĂĄadĂĄsra kerĂŒlt projektĂŒnk szerkezetĂ©hez.
Ez a webprojektĂŒnk gyökere a cĂmmel
/
. MĂĄs szĂłval, ha beĂrjuk a böngĂ©szĆbe a '
localhost ' szĂłt (termĂ©szetesen amikor a projekt fut), akkor itt, a webprojekt gyökerĂ©ben fog kinĂ©zni. Ha beĂrjuk
a localhost/addUser -t , akkor az addUser nevƱ erĆforrĂĄst fog keresni a
webmappĂĄban .
A legfontosabb dolog, amit meg kell Ă©rtened, hogy a webmappa a projektĂŒnk gyökere, amikor a Tomcatbe helyezzĂŒk. Jelenleg van egy bizonyos mappastruktĂșrĂĄnk, de a kĂ©sz projektben, amelyet lĂ©trehozunk, ez kissĂ© mĂĄs lesz. Pontosabban, a webmappa lesz a gyökĂ©r. |
A webben van egy szĂŒksĂ©ges
WEB-INF mappa , ahol a
web.xml fĂĄjl talĂĄlhatĂł, vagyis az, amelyet az utolsĂł lĂ©pĂ©sben a programtĂłl kĂ©rtĂŒnk. Nyissuk ki.
LĂĄthatĂł, hogy nincs mĂ©g benne semmi Ă©rdekes, csak egy fejlĂ©c. EgyĂ©bkĂ©nt, ha nem kĂ©rted a fĂĄjl lĂ©trehozĂĄsĂĄt, akkor manuĂĄlisan kell lĂ©trehoznod, azaz kĂ©zzel kell kiĂrnod ââaz összes fejlĂ©cet. Vagy legalĂĄbb keressen egy kĂ©sz verziĂłt az interneten. Mire van szĂŒksĂ©gĂŒnk
a web.xml fĂĄjlra ? A tĂ©rkĂ©pezĂ©shez. Itt Ărjuk le
a Tomcat szĂĄmĂĄra , hogy mely URL-kĂ©rĂ©seket melyik szervleteknek kell ĂĄtadni. De erre majd kĂ©sĆbb tĂ©rĂŒnk ki. EgyelĆre hagyja ĂŒresen. A
webmappa index.jsp fĂĄjlt is tartalmaz
. Nyisd ki.
Ez az a fĂĄjl, amely ĂșgyszĂłlvĂĄn alapĂ©rtelmezĂ©s szerint vĂ©grehajtĂłdik. MĂĄs szĂłval, pontosan ezt fogjuk lĂĄtni, amikor elindĂtjuk a projektet. AlapvetĆen
a jsp egy közönséges
HTML-fåjl , kivéve, hogy Java kódot futtathat benne.
Egy kicsit a statikus Ă©s dinamikus tartalomrĂłl
A statikus tartalom olyan tartalom, amely az idĆ mĂșlĂĄsĂĄval nem vĂĄltozik.
Minden, amit egy HTML-fĂĄjlba Ărunk, vĂĄltozatlan formĂĄban jelenik meg, ahogyan meg van Ărva. Ha azt Ărjuk, hogy "
hello world ", ez a szöveg azonnal megjelenik az oldal megnyitĂĄsakor, Ă©s 5 perc mĂșlva, Ă©s holnap Ă©s egy hĂ©t mĂșlva, Ă©s egy Ă©v mĂșlva. Nem fog vĂĄltozni. De mi van akkor, ha az aktuĂĄlis dĂĄtumot szeretnĂ©nk megjelenĂteni az oldalon? Ha csak azt Ărjuk, hogy "
2017. oktĂłber 27", akkor holnap ugyanazt a dĂĄtumot lĂĄtjuk, Ă©s egy hĂ©ttel kĂ©sĆbb Ă©s egy Ă©vvel kĂ©sĆbb. De szeretnĂ©nk, ha a dĂĄtum aktuĂĄlis lenne. Itt segĂt a kĂłd közvetlenĂŒl az oldalon törtĂ©nĆ vĂ©grehajtĂĄsĂĄnak lehetĆsĂ©ge. Kaphatunk egy dĂĄtum objektum, konvertĂĄlja a kĂvĂĄnt formĂĄtumra, Ă©s jelenĂtse meg az oldalon. EzutĂĄn minden nap, amikor megnyitjuk az oldalt, mindig aktuĂĄlis lesz a dĂĄtum Ha csak statikus tartalomra van szĂŒksĂ©gĂŒnk, akkor csak egy rendes webszerverre Ă©s HTML-fĂĄjlok. Nincs szĂŒksĂ©gĂŒnk Java-ra, Maven-re vagy Tomcat-re. De ha dinamikus tartalmat akarunk hasznĂĄlni, akkor az összes eszközre szĂŒksĂ©gĂŒnk van. De most tĂ©rjĂŒnk vissza az index.jsp-
hez .
JelöljĂŒnk a szokĂĄsos cĂmen kĂvĂŒl mĂĄst is, pĂ©ldĂĄul: "
Szuper webalkalmazĂĄsom! " Majd a törzsbe Ărjuk be: "
Ălek! " MĂĄr majdnem kĂ©szen ĂĄllunk a projektĂŒnk elindĂtĂĄsĂĄra! Sajnos a program indĂtĂĄsĂĄhoz szokĂĄsos zöld hĂĄromszög nem aktĂv.
Kattintson a tĆle balra lĂ©vĆ gombra (amelyet a kĂ©pernyĆn egy piros nyĂl jelzi), Ă©s vĂĄlassza a
KonfigurĂĄciĂłk szerkesztĂ©se lehetĆsĂ©get . Ekkor megnyĂlik egy ablak, ahol egy zöld pluszjelre kell kattintani a konfigurĂĄciĂł hozzĂĄadĂĄsĂĄhoz. Kattintson rĂĄ (az ablak bal felsĆ sarkĂĄban).
VĂĄlassza
a Tomcat szerver >
Helyi lehetĆsĂ©get . MegnyĂlik egy sok lehetĆsĂ©get tartalmazĂł ablak, de az alapĂ©rtelmezettek szinte mindenre megfelelnek nekĂŒnk.
A konfiguråciónknak szép nevet adhatunk a szabvånyos
Unnamed helyett (legfelĂŒl). Azt is ellenĆriznĂŒnk kell, hogy az IDEA sikeresen megtalĂĄlta-e a Tomcatet a rendszerĂŒnkön (mĂĄr letöltötte
Ă©s telepĂtetteaz, igaz?). Ha nem talĂĄlhatĂł (ami nem valĂłszĂnƱ), akkor nyomja meg a lefelĂ© mutatĂł nyilat, Ă©s vĂĄlassza ki a telepĂtĂ©s helyĂ©t. Vagy vĂĄlasszon mĂĄsik verziĂłt, ha egynĂ©l több van telepĂtve. Nekem csak egy van Ă©s mĂĄr telepĂtve van. EzĂ©rt nĂ©z ki Ășgy, ahogy a kĂ©pernyĆmön. Az ablak aljĂĄn pedig egy figyelmeztetĂ©st lĂĄtunk, amely arra figyelmeztet, hogy eddig nem jeleztek mƱtermĂ©keket a kiszolgĂĄlĂłn törtĂ©nĆ telepĂtĂ©shez. A figyelmeztetĂ©stĆl jobbra talĂĄlhatĂł egy gomb, amely a problĂ©ma javĂtĂĄsĂĄt javasolja. RĂĄkattintunk, Ă©s azt lĂĄtjuk, hogy az IDEA mindent meg tudott talĂĄlni magĂĄtĂłl, mindent, ami hiĂĄnyzott, magĂĄtĂłl lĂ©trehozta, Ă©s minden beĂĄllĂtĂĄst magĂĄtĂłl konfigurĂĄlt.
LĂĄthatjuk, hogy ĂĄthelyezett minket a
KiszolgĂĄlĂł laprĂłl a
TelepĂtĂ©s lapra, a
TelepĂtĂ©s a kiszolgĂĄlĂł indĂtĂĄsakor.szakaszt, Ă©s most van egy mƱtermĂŒnk, amelyet telepĂteni kell.
Kattintson az Alkalmaz Ă©s az OK gombra. Ăs elĆször azt lĂĄtjuk, hogy az ablak aljĂĄn megjelent egy rĂ©sz a helyi Tomcat szerverĂŒnkkel, ahol a mƱtermĂ©kĂŒnk lesz elhelyezve. ZĂĄrja össze ezt a rĂ©szt az ablak jobb oldalĂĄn talĂĄlhatĂł megfelelĆ gombra kattintva.
Most lĂĄtjuk, hogy a zöld indĂtĂłhĂĄromszög aktĂv. Aki szeretne mindent duplĂĄn ellenĆrizni, kattintson a projektbeĂĄllĂtĂĄsok gombra (az indĂtĂłgomboktĂłl jobbra, piros nyĂllal jelezve), lĂ©pjen a MƱtermĂ©kek rĂ©szre, Ă©s ellenĆrizze, hogy valĂłban lĂ©trejött-e az
artefact . Addig nem volt ott, amĂg meg nem nyomtuk azt a
Fixetgombot, de most mĂĄr minden rendben van. Ăs ez a konfigurĂĄciĂł tökĂ©letesen megfelel nekĂŒnk. DiĂłhĂ©jban a kĂŒlönbsĂ©g
a my-super-project:war Ă©s
a my-super-project:war exploded között az, hogy
a my-super-project:war egyetlen
hĂĄborĂșs fĂĄjlbĂłl (ami csak egy archĂvum) Ă©s a
robbantott verzióból åll. egyszerƱen a
"kicsomagolt" hĂĄborĂș . Ăs szemĂ©ly szerint ez az a lehetĆsĂ©g, amit kĂ©nyelmesebbnek talĂĄlok, mert lehetĆvĂ© teszi a kisebb vĂĄltoztatĂĄsok gyors hibakeresĂ©sĂ©t a szerveren. LĂ©nyegĂ©ben
a mƱtermĂ©k a mi projektĂŒnk, amelyet most fordĂtottunk le â Ă©s ahol a mappaszerkezet megvĂĄltozott, hogy a Tomcat közvetlenĂŒl hozzĂĄfĂ©rhessen. Valahogy Ăgy fog kinĂ©zni:
Most mĂĄr minden kĂ©szen ĂĄll a projektĂŒnk elindĂtĂĄsĂĄhoz. Nyomja meg az Ă©rtĂ©kes zöld indĂtĂłgombot, Ă©s Ă©lvezze az eredmĂ©nyt! :)