E N D
Uvod • Sta je to Struts?Struts Framework je implementacija Model-View-Controller (MVC) design pattern-a. Struts je nastao kao dio Apache Jakarta project-a i open source je. Pogodan je za aplikacije bilo koje velicine. Poslednju verziju mozete download-ovati sa: http://jakarta.apache.org/. • Sta je Model-View-Controller (MVC) arhitekrtura?MVC architectura podrazumeva deljenje komponenti aplikacije u tri razlicite kategorije Model, View i Controller.
Model: Model je odgovoran za obezbedjivanje podataka iz baze kao i za skladistenje podataka. Sva ‘business logic’ je implementirana u Modelu. Podaci koje krisnik unese preko View-a, se proveravaju u Modelu pre nego se pohrane u bazi. Delovi Model-ove logike su tako pristup podacima, validacija podataka, te samo cuvanje podataka. • View: View predstavlja korisnikov pogled na aplikaciju i odgovoran je za preuzimanje podataka, koje je korisnik uneo, prosledjivanje unetog zahteva Controller-u, a potom primanje odgovora, koji prosledjuje Controller, te prikazivanje rezultata. HTML-ovi, JSP-ovi, Custom Tag Libraries, te Resources file-ovi su deo View komponente. • Controller: Controller se nalazi izmedju Model-a i View-a. Controller je odgovoran za primanje klijentovih zahtjeva. Nakon sto primi zahtev klijenta, on izvrsi odgovarajucu Model-ovu ‘bussiness logic’-u te proslijedi izlaz (output) klijentu koristeci View komponentu. ActionServlet, Action, ActionForm i struts-config.xml su dio Controller-a.
Struts Controller • Klasa org.apache.struts.action.ActionServlet je srce Struts Framework-a. Ona je zapravo Controller komponenta Struts Framework-a. ActionServlet je konfigurisan kao Servlet u web.xmlfile. • <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> • Ovim se mapira specifican patern zahteva (request-a) ActionServlet-a. <servlet-mapping> tag u web.xml file-u odredjuje url pattern-a koji ce servlet da obradjuje. Po default-u to je *.do. • web.xml • Predhodno mapiranje mapira sve zahteve koji zavrsavaju sa .do na ActionServlet. ActionServlet koristi konfiguraciju definisanu u struts-config.xml file-u da definise zahtev (request). • Primer: authorsFromDatebase.jsp, mapiranje u struts-config.xml file-u. • "Action Mapping Definitions" je najvazniji deo struts-config.xml file-a. U ovom delu uzimamo form (pojam form bice detaljno opisan u "Form Bean Definitions” odlomku ) i mapira ga na action klasu. • showAuthor.do, authorsFromTheDatebase.jsp.
Struts Action Class • Sta je Action Class? Action Class je deo Model-a i wrapper je oko ‘bussiness logic’-e. Njena uloga je da prevodi HttpServletRequest u ‘business logic’-u. • Primer nase Action klase: ActionsWithFirstLetter.java • Detaljnije o Action klasiPotpis execute metode u Action klasi: public ActionForward execute( ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.lang.Exception Action klase procesira specifican HTTP zahtev (request) i kreira odgovarajuci HTTP odgovor (response) (ili forward-uje na drugu web komponentu koje ce ga kreirati). Ova klasa ima mogucnost handle-ovanja exeption-a koje baci ‘bussiness logic’-a. Vraca ActionForward instance, opisujuci na taj nacin gde i kako kontrola treba da bude forward-ovana ili null ako je odgovor (response) vec kreiran.
ActionForm Class • Sta je ActionForm? ActionForm je JavaBean koji nasledjuje org.apache.struts.action.ActionForm. ActionForm odrzava stanje sesije web aplikacije. Sa serverske strane, ActionForm objekat je automacki popunjen podacima unesenim u form sa klijentske strane. • Primer: CsAuthorDetails.java - form (authorDetails.jsp) • DeleteAuthors.java
Struts HTML Tags • Struts obezbedjuje HTML tag biblioteku, koja omogucava jednostavnije kreiranje ‘user interface’-a. Da bismo koristili HTML tag-ove moramo najpre ubaciti sledecu liniju u JSP file-ove: • <%@ taglib uri="/WEB-INF/taglibs/struts-html.tld" prefix="html" %>