Łukasz Mogielnicki Elbląg 05.04.2013 Trójwarstwowa architektura

advertisement
Łukasz Mogielnicki
Elbląg 05.04.2013
Trójwarstwowa architektura aplikacji www
w frameworku JSF.
Wzorzec projektowy niezależnie od języka programowania opisuje rozwiązanie
powtarzającego się problemu podczas tworzenia aplikacji. Przy pomocy wzorców
projektowych tworzymy abstrakcyjną strukturę, która będzie przydatna do tworzenia
projektów obiektowych nadających się do wielokrotnego użytku. Wzorzec określa również
klasy, ich role oraz komunikację i zależności między nimi. Nie jest on gotową
implementacją tylko ogólnym schematem, który możemy wielokrotnie wykorzystywać do
rozwiązywania problemów.
Jednym z precyzyjnie określonych wzorców jest MVC (Model-View-Controller).
Jego początek datowany jest na 1979 rok kiedy został zaprojektowany przez norweskiego
programistę Trygve Reenskaug pracującego nad językiem Smalltalk, początkowo nosił
nazwę Model-View-Editor.
Główną ideą MVC jest podział aplikacji na 3 maksymalnie niezależne od siebie
warstwy. Jak wskazuje nazwa są to następująco warstwy: model, widok, kontroler.
Model - reprezentuje logikę aplikacji oraz rodzaje
obiektów-danych wykorzystywanych w
aplikacji.
Widok - odpowiada za tworzenie interfejsu
graficznego, prezentuje wyniki działania
kontrolera.
Kontroler - łączy dwie pozostałe warstwy, obsługuje
żądania użytkownika, wykonuje działania
na danych z modelu.
Wzorzec MVC nazywany również architekturą MVC jest wykorzystywany w różnych
sytuacjach, w różny sposób co czyni go najczęściej stosowanym wzorcem przy tworzeniu
aplikacji webowych. Opisywana architektura ma dwie zasadnicze wartości. Pierwszą z
nich jest separacja prezentacji i modelu dzięki której możemy ingerować w interfejs
użytkownika bez konieczności modyfikacji modelu. Drugą zaś separacja widoku i
kontrolera umożliwia nam zmianę kontrolera bez konieczności zmiany widoku.
Architektura MVC jest wykorzystywana w frameworku JSF (Java Server Faces).
Framework ten został stworzony do projektowania aplikacji webowych w języku Java.
JSF ma najwięcej wspólnego z warstwą kontrolera, ale również wiele z widokiem. Rolę
kontrolera w JSF pełni FacesServlet. Jest to servlet, który zarządza cyklem przetwarzania
żądania dla aplikacji internetowej.
Poniżej przedstawiam fragment kodu odpowiedzialny za przekierowania.
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Z powyższego kodu wynika, że wybrany fragment przestrzeni adresów URL (/faces/*) jest
skojarzony z klasą serwletu FacesServlet.
Do tworzenia warstwy widoku mamy możliwość używania wielu wbudowanych
komponentów. Framework JSF dostarcza dwie technologie do tworzenia stron widoku.
Pierwszą z nich jest JSF Pages, umożliwia ona implementację dynamicznych dokumentów
www,czyli takich stron www, które umożliwiają komunikację użytkownika z serwerem,
natomiast drugą jest technologia facelets oferująca gotowe układy strony nazywane
szablonami. Obie technologie tworzą strony w formacie xhtml.
Najmniej wspierana przez JSF spośród 3 opisanych warstw jest warstwa modelu. W
warstwie modelu wykorzystujemy klasy Javy oraz JavaBeans.
Poniżej przedstawię krótki przykład aplikacji.
Na początek fragment kodu strony widoku "logowanie.xhtml", wykonanej przy
użyciu JSF Page.
Możemy zauważyć standardowe znaczniki kodu html poprzedzone literką h, która jest
identyfikatorem grupy komponentów html, w frameworku JSF. Główną częścią
powyższego kodu jest formularz z 3 elementami. Dwa pierwsze, czyli <h:inputText> oraz
<h:inputSecret>, służą do wprowadzenia danych, w tym przypadku będzie to login i hasło,
ich wartość przesyłana jest do pól klasy modelu po naciśnięciu przycisku
<h:commandbutton>. Po naciśnięciu przycisku następuje również wywołanie metody
check. Występujące w kodzie słowo "ziarno" oznacza, że odwołujemy się do klasy modelu
właśnie o takiej nazwie.
Teraz przedstawię część kodu klasy "ziarno.java" wykonanej przy pomocy
JavaBean. To właśnie do niej zostały przesłane nasze dane z formularza znajdującego się
na stronie "logowanie.xhtml".
Powyższy fragment kodu przedstawia metodę check, która zostanie wywołana po
naciśnięciu przycisku z naszej strony widoku "logowanie.xhtml". Pierwsze 3 linijki służą do
nawiązania połączenia z bazą danych, nad czym nie będziemy się zagłębiać. W kolejnej
linijce kodu następuje pobranie do kolekcji, wszystkich rekordów z tabeli "Dane",
znajdującej się w naszej bazie danych. Następnie przy użyciu pętli przeglądamy
utworzoną kolekcję i porównujemy, czy znajdują się w niej dane przesłane z formularza.
Jeżeli znajdują się, zostanie zwrócona strona widoku "witaj.xhtml", w przeciwnym
przypadku strona "index.html".
Podsumowując, framework Java Server Faces posiada trójwarstwową architekturę
aplikacji opartą na idei wzorca projektowego MVC.
Download