Intre-o mie de cuvinte doua labe se separa
Articolu’ asta nu e despre labe ci despre cuvintele dintre. De data asta scriu despre Struts (a se citi Straţ). Cica l-am invatat on zǎ fucking flai si acum scriu cod de zor si tin interviuri. Asa ca bi uer la ce-mi spui la interviuri ca altfel te fut.
Inainte sa inveti ar fi bine sa stii MeVeCeu, Servleţi si Geiespi ca altfel nu intelegi nimic din ce balmajesc aciisa. Daca mai stii si ceva tagliburi ca de exemplu geiestiel si alte dizain paternuri ca de exemplu Observǎr adica superpaternu’ MeVeCeului e si mai bine.
Pai Strutsu e format din doua bucati. Una e partea de View si una pa partea de Controller. Inca nu stiu unde pula mea vad astia partea de Model la Struts, da’ daca e vr’unu’ mai destept ca mine si-mi zice la interviu il trec volentieri. Pa partea de View sunt JSP-urile pa care le scrii tot tu si-i zici lu’ Struts de ele. Tot acolo ai si Taglibu’ de Struts, adica nu mai stai sa scrii tu ca prostu’ scriptleti prin jsp, scrii direct:
<logic: notPresent scope=”session” name=”user”>
<h3>Sugi pula fraiere ca io n-am clit!</h3>
</logic:notPresent>
Pa partea de Controller ai trei chestii. Un jeg de Servlet, un POJO care inseamna Plane Old Java Object pentru prosti, adica o chestie care zic ei ca e bean da’n pula mea daca vrei sa faci validari nu prea mai e bin ca nu mai da cu dizain paternu’, si mai e o clasa la care-i zice Acşăn si care face ce cacat vrei tu sa faci p-acolo.
Uite aici o figura ca sa nu vorbesc ca prostu’ aiurea:

Lu’ servletu’ ala jegos ii zice ActionServlet, da’ stai linistit ca n-o sa faci tu nimic cu el daca esti indeajuns de prost. Ca la interviuri veniti in pula mea cu ani de experienta pa Struts si nu stiti ce-i ala. Voi doar scrieti cacaturi de acşănuri si faceti dup-aia forward si nu stiti unde pula mea se duce serveru’ dup-aia.
Jegu’ asta de ActionServlet e de fapt inima Controllerului. Adica daca se gaseste vreun handicapat de iuzer sa faca vreun submit printr-un jeg de forma de-a ta nimereste drept in ActionServlet, ori pa GET ori pe POST ca oricum tu nu stii mai multe metode de submit.
Dup-aia ActionServletu’ asta trebe’ sa aleaga unde pula mea se duce ca sa rezolve chinuiala de talent a userului. Si ca sa stie sa faca asta trebe’ sa-i scrii tu intr-un icsmeleu… da’ o sa zic mai incolo de asta.
Pula mea, zicem ca s-a prins ce vrea prostu’ ala, acu’ ce face? Pai completeaza jegu ala de bin la care ii zice ActionForm si care nu e bin de fapt da’ ei asa zic. Oricum, daca te intreb ce-i aia bin ar fi mai bine sa stii si sa nu uiti ca dizain paternu’ zice de is la geterele de bulean si de constructor fara argumente. Restu’ stiu toti prostii!
Asa, acu’ ActionServletu’ ala trebe’ sa apeleze setere in ActionForm pentru fiecare camp pe care l-a submitat distrusu’ ala de user si dup-aia Struts-u e de-a dreptu’ destept. Apeleaza un delegheit (da’ nu-ti bate capu’ cu cuvinte grele) de pe clasa aia care ziceam ca face ce pula mea vrei sa-i zici la prost si care se numeste Action. Metoda delegata ie de fapt doua, execute sau perform, depinde de versiunea de Struts… da’ lasa asta!
Pe metoda asta delegata ai 4 parametri. ActionMappig, de care zisai ca zic mai tarziu, ActionForm, Request si Response. De request tre’ sa stii, de response… lasa, ca nu-l folosesti tu in viata asta de programer. Poate in alta.
Inteligenta la Strutsu e ca se redundeaza ca prostu si-ti da parametri si pe form si pe request. N-a auzit de Observer! Da’ lasa asta ca-i prea departe.
Cand ie sa intorci si tu ceva in Action intorci un ActionForward din metoda delegata, adica ii zici la ActionServlet ce pula mea ai facut si ce sa-i zica la prostu’ ala de user. Ca sa faci asta trebe’ cate-odata sa mergi si la Model… da’ din Struts parerea mea e ca asta o faci numa’ cu EJB-uri sau sa hibernezi intr-un fel sau altu’.
Cam asta cursul labei prin Struts da’ vine partea cu configurarile. Ca de unde kkt stie ActionServletu’ sa se duca pe unde. Pai scrii si tu un ixmeleu la care ii zice struts-config si pui acolo care actiune ce URI are, ce clasa ii corespunde si ce ActionForm.
Dup-aia vine Strutsu si incarca icsmeleu si face un obiect in memorie la care ii zice ActionMapping. Aci e de mancat o paine cu explicatiile da’ la interviu daca imi zici atat e bine. Te mai intreb io cum faci prin tagurile din icsmeleu da’ acu’ mi-e lene sa zic ce raspuns astept.
Te mai intreb de validare si de internationalizare.
De validare daca-mi zici ca pui in icsmeleu validate=”true” pa si pa urma implementezi validate in ActionForm te cred pe cuvant. Te las dreaq cu validation.xml si cu validator-rules.xml ca oricum nu stii, da’ daca nu ma nimeresc p-acolo colegii astia ai mei se fac ei ai dreaq si te intreaba.
Dup-aia te mai intreb de internationalizare si te las. Aici poti sa ma vrajesti ca nu prea stiu, ca nu am pus mana calumea… da’ nu mai e mult pana atunci si s-a belit pula. Daca imi zici ca pui niste prorprietati prin niste fisiere pa care le denumesti dupa limba nici nu te mai intreb de ResourceBundle.
Si acum niste imagini si va las:

Aiciisa zice ce zisai io pana acu’ pa o chestie de-i zice Sequence Diagram… da’ oricum nu ma astept sa stii UML.
Si ce scrii in icsmeleu:
<form-beans>
<form-bean name=”registerForm” type=”RegisterForm”/>
</form-beans>
<action-mappings>
<action
path=”/register” type=” app.RegisterAction”
name=”registerForm” input=”/register.jsp”>
<forward name=”success” path=”/success.html”/>
<forward name=”failure” path=”/failure.html”/>
</action>
</action-mappings>
Asa, prima data zisai ca trebe’ sa definesti formurile. Pui pa from-beans (care nu e beans cand ai validate) pui un nume acolo si cum se numeste clasa. Pa action pui tot asa, URI-u relativ (ca restu’ pune Serveru’) si clasa Action. Pa urma pui numele binului pa care-l definisi mai sus ca sa stie ActionServletu ce sa-i trimita lu’ Action.
In forward pui prima data ce scrii in in ActionMapping.findForward(“cacat”) pa care il scrii la return in Actionu’ tau. Da’ vezi sa scrii “success” sau “failure”… sa nu scrii “cacat” daca faci copy – paste d’aci. Si la path ii zici un’ sa se duca.
Tagurile le inveti si singur ca nu-i mare jmen acolo. Sunt doar niste taguri pa care le inveti si esti fericit.
Gata cu tutorialu’ meu. Cui nu-i place sa suga pula, vorba lu’ prostu’ ala…
Pe aceeasi tema:





(3 voturi, media: 4,00 din 5)
Salut! Care crezi ca e cea mai buna modalitate de a invata struts2?
Imi poti indica locul de unde sa incep?
bine, de la a raspunde la cateva intrebari de interviu si a intelege un pattern pana la a spune ca stii struts e o distanta destul de mare, pe care o acoperi cu experienta. Asadar, sfatul meu in ce priveste struts 2 este ca citesti un tutorial, chiar si pe roseindia… nu conteaza, dar nu pierde prea mult timp. Incearca doar sa intelegi arhitectura generala, sa faci un exemplu doua si apoi sa intrii in productie ca sa capeti skill… altfel, doar cu tutoriale e greu…
Trebuie sa fac un proiect folosind Struts2 (o aplicatie web).
Ai vreo idee ce as putea face? O idee, un gand, orice.
Fara vesnicul magazin online