środa, 3 sierpnia 2011

JAVA EE6 Programowanie aplikacji WWW KURS cz.3 Serwlety.

Zaczynamy od podstaw podstaw. Opowiemy sobie o serwlecie czyli elemencie, który jest wykorzystywany we wszystkich aplikacjach webowych.

Warstwa prezentacji, o której wspomnieliśmy we wcześniejszych częściach stanowi część aplikacji WWW. Aplikacja ta znajduje się po stronie serwera HTTP, który odpowiada za generowanie graficznego interfejsu użytkownika. Każde żądanie powoduje kolejne wykonanie kodu logiki prezentacji. Protokół HTTP, który wykorzystuje model komunikacyjny typu klient-serwer jest protokołem tekstowym, oparty na TCP. Klient HTTP po nawiązaniu połączenia z serwerem przekazuje mu komunikat zawierający żądanie HTTP. Serwer HTTP odpowiada na żądanie i wysyła odpowiedź, która zawiera żądany dokument. Po zakończeniu tego procesu serwer zamyka połączenie. Musimy sobie powiedzieć, że protokół HTTP jest bezsesyjny i bezstanowy. Pod czas komunikacji klienta z serwerem, klient przekazuje parametry wywołania aplikacji na serwerze. Owe parametry mogą być przekazane za pośrednictwem protokołu HTTP na dwa sposoby:

- GET jest to rozkaz ,w którym parametry dołączone są do adresu URL
- POST  parametry są w ciele żądania HTTP, ciało reprezentuje dane wysyłane przez klienta HTTP do serwera np.parametry,pliki.





Działanie serwletów sprowadza się do metod doGet() doPost(). Obie metody są wywoływane, gdy serwlet otrzymuje żądanie HTTP. Kiedy klient spróbuje skorzystać z aplikacji po raz pierwszy, serwer wykona następujące czynności:

-załaduje klasy serwletu
-utworzy instancje serwletu
-wywoła metody init()
-wywoła metody service()

Każdy serwlet przez nas stworzony musi dziedziczyć po klasie HttpServlet. Wcześniej napisałem kilka podstawowych informacji dotyczących protokołu HTTP. Zawiera on definicję metod:GET, POST, PUT, HEAD, OPTIONS, TRACE, DELETE, CONNECT. W większości wypadków najczęściej stosuje się metody GET i POST.W serwlecie do obsługi tych metod służą nam:

-  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

-  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

Napiszmy sobie naszą pierwszą aplikacje WWW. Do tego celu będziemy potrzebować środowiska programistycznego oraz serwera . Skorzystajmy do tego celu ze NetBeans IDE. Jako serwer aplikacji posłuży nam GlassFish. Zakładam, że czytelnik wie jak skonfigurować własne środowisko oraz serwer aplikacji więc nie będę wdawał się w zbędne szczegóły.

Gdy uruchomimy NetBeans'a, utwórzmy nowy projekt.
1. Z menu File wybieramy  New project.
2. Wybieramy element o nazwie Java Web, a potem zaznaczamy opcję Web Application i klikamy Next.
3. Nazywamy swoją aplikacje np. PierwszaAplikacja i klikamy Next.
4. Z listy Serwerów wybierzmy  pozycję GlssFish Server  3.x (Ja posiadam najnowszą wersje serwera)
5. Klikamy na przycisk Finish.



Powyższy rysunek przedstawia nam strukturę katalogów aplikacji webowej na serwerze.

Projekt aplikacji webowej domyślnie zawiera jedną stronę index.jsp. Wykorzystamy tę stronę do stworzenia prostego formularza. w formularzu stworzymy pole tekstowe i przycisk. Kiedy użytkownik kliknie na przycisk zostanie przeniesiony pod adres, który zostanie obsłużony przez serwlet. Zmodyfikujmy więc nasz plik index.jsp.

Dyrektywa @page określa różne istotne właściwości strony.
Atrybut action określa nazwę pliku, do którego przesyłamy żądanie. W naszym wypadku jest to formularz. Czas na stworzenie serwletu.

1. Kliknij prawym przyciskiem na Source Packages.
2. Z menu New wybierzmy opcję Servlet
3. Nazwijmy naszą klasę  ValidationOfAge, a w pole Package wpiszmy package1.
4. W następnym kroku zaznaczmy opcję : Add information to deployment descriptor (web.xml),a w polu Servlet Name wpiszmy Walidacja wieku. W polu URL Patterns(s) wpiszmy /validationofage.do  .

Powinniśmy otrzymać wygenerowany serwlet .



Środowisko NetBeans utworzył nam dodatkową metodę procesRequest(). Nie jest to metoda, która jest opisywana w specyfikacji, ale jedynie udogodnienie twórców tego środowiska. Możemy zauważyć, że niezależnie od rodzaju żądania, czy to jest żądanie typu GEST czy POST zawsze wywoływana jest metoda procesRequest().

Zmodyfikujmy właśnie tę metodę tak jak niżej na rysunku:


Metoda setContentType() ustawia nam typ MIME przesyłanego dokumentu. Możemy ją tak ustawić aby w odpowiedzi dostać np. plik graficzny - response.setContentType("image/jpg").

PrintWriter getWriter() - zwraca obiekt zapisujący dla danych tekstowych. Parametry metody HttpServletRequest i HttpServletResponse reprezentują obiekty żądania i odpowiedzi. Metoda Object getParameter(String name) pobiera parametr o danej nazwie w żądaniu. Nasz parametr nazywa się age, był podany w naszym formularzu:  <input type="text" name="age" /> . Nasuwa się też nam pytanie jak serwer skojarzył adres URL serwletu validationofage.do z klasą, któa go obsługuje - ValidationOfAge.class . Odpowiedź na nasze pytanie znajdziemy w pliku web.xml. Znajdziemy go w podanej ścieżce /WEB-INF/web.xml


Plik ten jest deskryptorem wdrożenia. Znajdują się w nim liczne ustawienia aplikacji webowych JEE. Dzięki takiemu podejściu czyli umieszczeniu konfiguracji w pliku XML, każda jego zmiana nie wymaga ponownej kompilacji kodów źródłowych. W pliki web.xml możemy zdefiniować parametry dla poszczególnych serwletów i naszej aplikacji. To na tyle w tej części. W następnej części będziemy rozwijać nasze poznane wiadomości dotyczące podstawowych elementów każdej aplikacji webowej - serwletów. Oczywiście nie myśl, że w ten sposób tworzy się obecnie aplikacje, było by to zbyt trudne. Czy wyobrażasz sobie cały kod html umieszczany w wywołaniu funkcji println() ? No ja na pewno nie.

0 komentarze:

Prześlij komentarz

Labels