luni, 22 decembrie 2008

Aplicatii web in Java (3) - Struts 1.x + Tiles

Daca dupa articolul trecut nu v-am convins sa optati pentru facilitatile MVC ale Spring, puteti sa folositi solutia consacrata (are niste dezavantaje, dar odata ce v-ati obisnuit cu el se poate lucra rapid): Struts.

Struts are un controller care parseaza URL-urile si apeleaza clase Java (numite "actiuni") pentru a crea si popula un model care va fi dat mai departe la layer-ul de view (realizat de obicei cu JSP). O actiune poate sa decida randarea paginii sau redirectionarea (interna) catre un alt URL (care va avea asociata o actiune).

Daca insa doriti sa faceti un "mashup", sau sa creati module reutilizabile responsabile pentru randarea unor bucati de pagina, veti constata limitarea Struts. Intr-un site scalabil, fiecare bucata de pagina este randata de un serviciu web separat, si deci care poate fi relocat pe un alt server (sau grup de servere), iar Struts nu suporta aceasta paradigma.

Aici intervine Tiles, un plug-in de Struts care lucreaza cu layout-uri. Un layout specifica pozitiile in care trebuiesc inserate "tile"-urile din care este format si este descris in limbaj JSP. Reprezentarea cea mai generala a unui tile este un URL, care poate reda la randul sau un alt layout, si asa mai departe.

Cum afla o "actiune" care sunt parametrii request-ului HTTP facut de utilizator? Aceasta este una din cele mai simpatice facilitati ale Struts-ului, numita auto-populare: intr-o asociere URL-actiune se mentioneaza si o clasa Java numita Form (ActionForm), care este un bean ai carui membri sunt setati automat de catre Struts inainte de a apela actiunea. Actiunea va primi ca parametru un Form auto-populat si validat. Validarea se face de asemenea inainte de apelarea actiunii, iar rutinele sunt configurate separat fata de actiuni. Avantajele acesti abordari:
  • se separa clar validarea datelor de crearea modelului
  • actiunea poate presupune ca lucreaza cu date valide
In curand vom incepe sa postam si tutoriale pas cu pas despre crearea unei aplicatii web, si atunci aceste explicatii abstracte vor fi cu adevarat folositoare.

Un comentariu:

  1. Intradevar, o serie de articole introductive, clare si usor de citit. Te asteptam in continuare cu un step-by-step de integrare Hibernate, Spring si Struts sau poate ceva JSF:D

    RăspundețiȘtergere