czwartek, 31 maja 2012

[WAI] zagadnienia


1) Internet - pojęcie szerokie i niejednoznaczne.
Międzynarodowa sieć komputerowa łącząca inne sieci i komputery
z firm, uniwersystetów itp.
Globalny system informacyjny, który:
• jest logiczniepołączony w ramach przestrzeni unikalnych adresów bazującej na Internet Protocol (IP)lub jego rozszerzeniach i następcach,
• jest w staniezapewnić komunikację prz użyciu Transmission
Control Protocol/Internet Protocol (TCP/IP)lub jego rozszerzeniach i następcach oraz innych protokołów kompatybilnych z IP,
• zapewnia, używa lub udostępnia, publicznie lub prywatnie, usługi wysokiego poziomu oparte o komunikację i infrastrukturę tutaj opisaną


2) Wyzwania Internetu
• Zmierzch tradycyjnej gazety (w zasadzie już następuje) na rzecz gazet internetowych.
• Duże zmiany w organizacji telewizji
– telewizja interakcyjna,
– wideo na żądanie
– zanik licencji i przydziałów pasma (?)
• Duże zmiany w telefonii (przewiduje się całkowite zintegrowanie telefonii z Internetem) VoiceML
• Duże zmiany w organizacji i metodach nauczania
• Duże zmiany w organizacji i kontroli pracy (umożliwienie pracy w domu przy zapewnieniu pełnej kontroli ze strony pracodawcy)
– szansa dla niepełnosprawnych
• Handel, biznes, administracja oparte na Internecie


3) Modele przetwarzania
   Główne modele przetwarzania w Internecie

1. Klient - serwer
  Cechy usług:
    •  Serwer usługi czeka na nawiązanie połączenia przez klienta
    • Wiele klientów może korzystać z usługi 
    • Komunikacja w ramach usługi opiera się o powszechnie znany, standardowy 
    • Do usługi przypisany jest domyślny port, lub zestaw portów, na których nasłuchuje serwer

  Przykładowe usługi:
    • Poczta elektroniczna - protokoły SMTP, POP3, 
    • Repozytoria plików - protokół 
    • World Wide Web (WWW) - protokół 
    • Istnieją różne warianty usług, np. bezpieczne, szyfrowane wersje

2. Klient - pośrednik - serwer
  Cechy usług:
    •  Klient łączy się z pośrednikiem w celu wydobycia informacji o 
    • Konieczna znajomość lokalizacji 
    • Pośrednik odsyła konieczne informacje o serwerze do 
    • Klient łączy się z 
    • Komunikacja w ramach usługi opiera się o powszechnie znany, standardowy protokół

  Przykładowe usługi:
    • Wyszukiwanie nazw – 
    • Wyszukiwanie usług - UDDI


4) Usługi Internetowe
• Popularnie, Internet jest w Polsce kojarzony z WWW (protokół HTTP).
– W tej chwili obejmuje on jednak ogromną liczbę innych usług.

Wszystkie są oparte na tym samym protokole TCP/IP.
• Email, News (Usenet), Electronic news
• FTP, SFTP
• ICQ (ułatwiający kontakt w internecie)
• Telnet, SSH (Secure Shell)
• IRC
• Gopher, HyperG
• Nie jest wykluczone, że może w każdej chwili pojawić się zupełnie nowa usługa, która zdominuje pewien sektor obecnie opanowany przez WWW.

– Takim komercyjnym buzzem jest w tej chwili P2P
• Napster, Gnutella, Audio Galaxy, WinMX, KaZaA, ....
– Większość nowych usług traktuje HTTP jako „protokół transportowy”.
Architektura trzywarstwowa i wielowarstowa


5) Logika przetwarzania
• Model przetwarzania klient-serwer realizuje się w architekturze trójwarstwoej:
interfejs użytkownika,
logikę przetwarzania (reguły biznesu, logikę biznesu)
serwer (serwery) bazy danych.
• Warstwy są zaprojektowane i istnieją niezależnie, co ma duże znaczenie dla
„pielęgnacyjności” systemu ze względu na możliwość zmian w dowolnej warstwie bez konieczności zmian w pozostałych warstwach.
• Środkowa warstwa może składać się z wielu warstw, co jest określane jako architektura wielowarstwowa.


6) Cienki i gruby klient
  • Terminy cienki klient oraz gruby klient odnoszą się do mocy i jakości przetwarzania po stronie klienta w architekturze klient-serwer.

  • Model cienkiego klienta: klient posiada niezbyt wielką moc przetwarzania, ograniczoną do prezentacji danych na ekranie. Przykładem jest klient w postaci przeglądarki WWW.

  • Model grubego klienta: klient posiada znacznie bogatsze możliwości przetwarzania, w szczególności może zajmować się nie tylko warstwą prezentacji, lecz także warstwą przetwarzania aplikacyjnego (logiki biznesu).
  • Powyższy podział posiada oczywiście pewną gradację.
  • Model cienkiego klienta jest najczęstszym rozwiązaniem w sytuacji, kiedy system scentralizowany jest zamieniany na architekturę klient-serwer. Wadą jest duże obciążenie serwera i linii komunikacyjnych.
  • Model grubego klienta używa większej mocy komputera klienta do przetwarzania zarówno prezentacji jak i logiki biznesu. Serwer zajmuje się tylko obsługą transakcji bazy danych. Popularnym przykładem grubego klienta jest bankomat. Zarządzanie w modelu grubego klienta jest bardziej złożone.

7) Warstwa klienta Warstwa klienta - Interfejs użytkownika
  • często najbardziej istotna cecha serwisu dla odbiorcy końcowego
  • bardzo pracochłonny dla twórców serwisu (grafika)
  • Cienki klient (thin client) i gruby klient (thick client) - pojęcia różnie rozumiane, płynna granica. Cienki klient - to najczęściej:
  • "Czysta" przeglądarka WWW, kod HTML i DHTML bez obiektów 
  • Kod strony WWW niezależny od przeglądarki i systemu operacyjnego

        
  • Gruby klient - to najczęściej:
    • Przeglądarka zawierająca obiekty osadzone, uruchamiane w ramach systemu operacyjnego
    •  lub osobna aplikacja systemu operacyjnego działająca w środowisku WWW

         
  • Specyfika pracy w ramach cienkiego klienta:
    • komunikacja w trybie żądanie - odpowiedź (request - response) w ramach HTTP tylko jako efekt działania użytkownika.
    • DHTML pozwala na częściowe ominięcie tych ograniczeń, ale jego użycie również może uzależnić od przeglądarki



  • Technologie warstwy klienta
    • HTML - wizualizacja i struktura rozmieszczenia danych
    • CSS - wizualizacja danych
    • DHTML - interakcja z użytkownikiem, zmiany w wyglądzie i działaniu interfejsu użytkownika po stronie klienta
    • Języki skryptowe (JavaScript, JScript, VBScript) -przetwarzanie danych po stronie klienta
    • Obiekty osadzone (aplety j. Java, ActiveX, prezentacje Flash itp.) – rozszerzenie funkcjonalności serwisu poza możliwości samej przeglądarki

8) Warstwa serwera
  • Warstwa serwera - przetwarzanie 
    • w typowych serwisach realizuje większość zadań 
    • punkt centralny systemu rozproszonego - wrażliwość na przeciążenia => ataki typu DoS (Denial of Service)
    • odpowiedzialna za synchronizację pracy klientów i, częściowo, zachowanie spójności w warstwie danych
  • Oprogramowanie serwisu w ramach warstwy serwera:
    • integruje się z właściwym serwerem WWW, faktycznie komunikującym się z klientem
    • jest uruchamiane prze serwer WWW w reakcji na żądanie klienta, serwer WWW przekazuje klientowi wynik działania oprogramowania
    • Przetwarzanie typu wejście/wyjście - serwer WWW przekazuje do modułu oprogramowania żądanie klienta i traktuje wynik działania modułu jako pełną odpowiedź przekazywaną klientowi
    • Przetwarzanie wsadowe - serwer WWW przekazuje klientowi statyczny zasób (np. kod HTML), przetwarzając tylko niektóre, specjalnie oznaczone fragmenty; wynik przetwarzania umieszczany jest w ramach zasobu zamiast danego fragmentu

  • Technologie po stronie serwera
    •  CGI podstawowy interfejs wymiany danych pomiędzy serwerem WWW i oprogramowaniem; potocznie - moduły w języku Perl, C lub skrypty systemu operacyjnego działające w ramach przetwarzania typu wejście/wyjście
    • Serwlety j. Java - poza implementacją CGI – większość możliwości środowiska Java i kilka specyficznych udoskonaleń obecnie część większego standardu J2EE
    • ASP pierwsza poważna technologia przetwarzania wsadowego w zasadzie tylko serwery WWW Microsoft (IIS)
    • PHP najpopularniejsza i najbardziej dynamicznie rozwijająca się technologia przetwarzania wsadowego pod wieloma względami lepsze od ASP, ale część możliwości zależna od systemu operacyjnego i zewnętrznych bibliotek
    • JSP "odpowiedź" j. Java na PHP razem z serwletami tworzą środowisko łatwe do projektowania i "podziału kompetencji"
9) Warstwa danych
  • Warstwa danych - przechowanie i udostępnianie danych:
    • Źle zaprojektowana struktura danych przy ich dużej ilości => spadek wydajności systemu
    • Zmiany w strukturze danych w trakcie implementacji - bardzo kosztowne

  • System Zarządzania Bazą Danych (DBMS):
    • efektywne fizyczne przechowanie danych
    • możliwości selektywnego odczytu, zapisu i modyfikacji
    • wbudowane techniki kontroli spójności danych i replikacji
10) Wzorzec MVC
  • Wzorzec Model - View - Controller: podział na zadania w ramach warstwy serwera
    • Model - reprezentacja danych i realizacja komunikacji z warstwą danych
    • View - tworzenie końcowej postaci wizualizacji danych przed przesłaniem do klienta
    • Controller - przetwarzanie danych wejściowych i zarządzanie procesem realizacji funkcji

  • Realizacja "naturalna":
    • Model - Data Access Object (DAO) - klasa (lub zestaw klas) realizująca komunikację z bazą danych
    • View - kod JSP
    • Controller - serwlet

  • Zastosowanie architektur
    • Dwuwarstwowa architektura z cienkim klientem
      • Systemy spadkowe ( legacy), gdzie oddzielenie przetwarzania i zarządzania danymi jest niepraktyczne.
      • Aplikacje zorientowane na obliczenia, np. kompilatory, gdzie nie występuje lub jest bardzo mała interakcja z bazą danych.
      • Aplikacje zorientowane na dane (przeglądanie i zadawanie pytań) gdzie nie występuje lub jest bardzo małe przetwarzanie.
    • Dwuwarstwowa architektura z grubym klientem
      • Aplikacje w których przetwarzanie jest zapewnione przez wyspecjalizowane oprogramowanie klienta, np. MS Excel.
      • Aplikacje ze złożonym przetwarzaniem (np. wizualizacją danych, przetwarzaniem multimediów).
      • Aplikacje ze stabilną funkcjonalnością dla użytkownika, użyte w środowisku z dobrze określonym zarządzaniem.
    • Trzywarstwowa lub wielowarstwowa architektura
      • Aplikacje o dużej skali z setkami lub tysiącami klientów.
      • Aplikacje gdzie zarówno dane jak i aplikacje są ulotne (zmienne).
      • Aplikacje integrujące dane z wielu rozproszonych źródeł.
      • W architekturze klient-serwer istnieje wyraźna asymetria pomiędzy klientem i serwerem; w szczególności, nie występuje tam komunikacja bezpośrednio pomiędzy klientami. Model taki dla wielu zastosowań jest mało elastyczny i zapewnia zbyt małą skalowalność.
    • Architektura rozproszonych obiektów znosi podział na klientów i serwery.
      • Każde miejsce w rozproszonym systemie jest jednocześnie klientem i serwerem.
      • Konieczne jest sprowadzenie wszystkich danych i usług do jednego standardu.
      • Taki standard obejmuje:
        • Model (pojęciowy i logiczny) danych i usług, który jest w stanie "przykryć" wszystkie możliwe dane i usługi, które mogą kiedykolwiek pojawić się w systemie rozproszonym;
        • Specjalne oprogramowanie zwane pośrednikiem (broker), które akceptuje wspólny model danych i usług umożliwiając ich udostępnienie dla dowolnych miejsc w systemie rozproszonym.
        • Specjalne oprogramowanie, zwane osłoną, adapterem lub mediatorem, które przystosowuje konkretne miejsce do modelu przyjętego przez pośrednika.
Zaawansowane AI
Aplikacje wielowarstwowe - w ramach warstwy serwera kilka pod-warstw, zarządzanych względnie niezależnie od oprogramowania
Praktyka aplikacji wielowarstwowych: użycie serwerów aplikacji
• skalowalność: serwer może łączyć w sobie kilka komputerów i decydować w sposób optymalny gdzie fizycznie dany moduł będzie działać
• elastyczność: oprogramowanie może być wysoce konfigurowalne za pomocą samego serwera
• wydajność: przy zachowaniu zgodności ze standardami i wzorcami projektowymi można oczekiwać określonej minimalnej wydajności
Technologie serwerów aplikacji: J2EE i .NET
Zaawansowane AI
Web Services - uruchamianie zdalnych procedur przy pomocy składni opartej o XML, głównie poprzez HTTP (czyli w środowisku WWW) serwery aplikacji mogą udostępniać funkcje aplikacji jako Web Services
Web Services mogą stanowić punkt wejścia do "głębszej" aplikacji w ramach systemów heterogenicznych
Zaawansowane AI
Sysetmy agentowe i sieci semantyczne - elementy sztucznej inteligencji w Internecie
– Agent -niezależny proces mający właściciela (twórcę) i zadanie do wykonania
– Mobilny agent - agent, który może samodzielnie przemieszczać się w sieci zachowując przy tym aktualny stan
– Inteligentny agent - agent, przeważnie mobilny, którego zachowaniem sterują elementy sztucznej inteligencji
– Sieć semantyczna - projektowany zbiór opisów zasobów WWW i logicznych powiązań między nimi, pozwalający na "inteligentne", kontekstowe wyszukiwanie informacji (RDF, ontologie)


11)Uniform Resource Indicator, Uniform Resource Name, Uniform Resource Locator
  • URI (IRI) [RFC 2369] jest elementem, który wskazuje (w sposób szczególny) na zasób w internecie. Może to być nazwa, adres lub obydwa atrybuty.
    • URI jest, zazwyczaj krótkim, łańcuchem znaków, zapisanym zgodnie z określoną w standardzie składnią. Łańcuch ten określa nazwę lub adres zasobu, którego dotyczy dany URI.
    • URI składa się z URL i URN.
  • URN (Uniform Resource Name) jest to URI, który wskazuje na przestrzeń (namespace) zasobu, bez określenia gdzie się on znajduje i jaki jest schemat dostępu (NID i NSS) np. nazwa książki.
  • Uniform Resource Locator
    • Ustandaryzowana nazwa adresu dla zasobu (dokumentu, obrazu, pliku …) w sieci.
    • [RFC2396, RFC1738] - podzbiór URI

  • Przykłady:
    • URL składa się z dwóch częsci:
      • [schemat protokołu] :// [określenie zasobu specyficzne dla schematu]
      • http://www.imdb.com
      • ftp://astro.caltech.edu
    • Uniform Resource Locator
      • Dwa rodzaje URL: ogólny i względny
      • Składnia ogólnego URL
        • protokół://lokalizacja_serwera:port/ścieżka_na_serwerze?parametry
        • http://my.host:1234/resource?p1=1&p2=2
        • protokół://użytkownik:hasło@LokalizacjaSerwera:port/ścieżkaNaSerwer
        • ftp://nobody:unknown@ftp.site/index.html
        • schemat:użytkownik@lokalizacja_serwera
        • mailto:user@my.mail
Pominięcie niektórych części (np. portu) powoduje przyjęcie rozwiązań domyślnych
Względny URL [RFC2396, RFC1808] - w zasadzie odpowiada lokalizacji zasobu na serwerze, z dopuszczeniem znaków specjalnego znaczenia "." i ".."


12) Hypertext Transfer Protocol (HTTP)
  • Protokół warstwy aplikacyjnej Http jest protokołem żądanie-odpowiedź (request/response) pomiędzy klientami i serwerami
  • Klienci: zazwyczaj przeglądarki
  • Serwery www (Web servers): oprogramowanie, które zazwyczaj działa jako tzw. Demon (daemon), oczekuje na żądania od klientów i przesyła w odpowiedzi dokumenty z serwera.
  • HTTP
    • Protokół bezstanowy (stateless)
      • Serwer nie pamięta stanu klienta pomiędzy kolejnymi żądaniami
    • Format żądanie i odpowiedź:
      • Nagłówek z dokładnie określonym formatem pierwszej linii
      • W kolejnych liniach opcjonalne pola nagłówka postaci nazwa: wartość
      • Opcjonalna treść oddzielona od nagłówka pojedynczą pustą linią
    • Domyślny port: 80
    • Aktualnie działające wersje: 1.0 (RFC 1945) i 1.1 (RFC 2068+, obecnie 2616)
    • W ramach jednego połączenia może wystąpić:
      • Dokładnie jedna sekwencja żądanie - odpowiedź: wersja HTTP 1.0
      • Jedna lub więcej sekwencji żądanie - odpowiedź: wersja HTTP 1.1
  • Proces pobierania zasobu z sieci
    • Wysyłanie żądania
      • Uruchamiamy serwer www
      • Klient tworzy połączenie z serwerem na określonym porcie
        • Gdy port nie jest określony przyjmuje 80
      • Żądanie musi określone być w postaci URL
      • Struktura żądania
        • Komenda + komunikat
    • Odpowiedź
      • Serwer oczekuje na żądania (łańcuchy tekstowe) i wysyła odpowiedź również w postaci łańcucha znaków
      • Format odpowiedzi: Linia statusu + komunikat
      • Komunikat składa się z nagłówka i ciała (body) dokumentu
      • Całość przesyłana przez sieć
      • Przeglądarka wydobywa z odpowiedzi body i wyświetla w oknie
    • Komendy żądania
      • GET - uzyskanie zasobu o podanym URI
      • POST -przesłanie danych do zasobu o podanym URI, dane zawarte są w treści żądania
      • HEAD - jak GET, ale w odpowiedzi uzyskujemy sam nagłówek
      • OPTIONS (HTTP 1.1) - uzyskanie informacji o metodach akceptowalnych przez dany zasób lub serwer
      • PUT (HTTP 1.1) - umieszczenie na serwerze zasobu w podanym URI, zawartość zasobu określona jest przez treść żądania
      • DELETE (HTTP 1.1) - usunięcie z serwera zasobu o podanym URI
      • TRACE (HTTP 1.1) - wykonanie rodzaju testu przesłania wiadomości w pętli zwrotnej na samym serwerze – odpowiedź do faktycznego klienta zawiera to co klient przesłał
13) HTTPS
  • Domyślny port 443
  • SSL (Secure Socket Layer) - protokół kryptograficzny opracowany przez Netscape
  • W ramach sesji SSL używa się kryptografii przy pomocy algorytmów asymetrycznego (para kluczy: publiczny i prywatny) oraz symetrycznego (jeden klucz)
  • Wszystkie dane przed wysłaniem kodowane są własnym kluczem symetrycznym
  • Bezpieczeństwo transmisji zależy głównie od rozmiaru kluczy
  • Za wystarczające uznaje się (jeszcze) 128 bitów dla klucza sesji i 1024 dla klucza publicznego
  • Przebieg sesji połączenia przez SSL:

  1. Wymiana certyfikatów (CA) pomiędzy klientem i serwerem.
    • CA zawiera uwierzytelnione informacje o właścicielach i klucze publiczne. Przeglądarka może podać własny CA, jeżeli brakuje CA użytkownika
  2. Uzgodnienie algorytmu kryptograficznego opartego o klucz symetryczny - wybierany jest zawsze najmocniejszy algorytm znany obu stronom
  3. Wygenerowanie osobno przez klienta i serwer tzw. symetrycznego klucza sesji
  4. Wymiana kluczy sesji zakodowanych kluczem publicznym "rozmówcy"
  5. Odkodowanie kluczy sesji przy pomocy własnego klucza prywatnego i rozpoczęcie wymiany danych

14) Serwlety
  • Jednostka (klasa) kodu Javy, która jest uruchomiona po stronie serwera (serverside)
  • Klasa ta jest wyspecjalizowana w obsłudze protokołów usług internetowych
  • Uruchomiona w kontenerze, który dostarcza tzw. kontekst (context)
  • Nie posiada interfejsu użytkownika
  • CGI, w Javie, wzbogacone o biblioteki ułatwiające życie programiście (np. utrzymywanie sesji, wspólne zasoby serwletów, ciasteczka, obsługa GET/POST/PUT)
  • Pomimo podobieństw, serwlet to nie jest palet uruchamiany na serwerze
  • Pomaga w komunikacji klient – serwer
    • nie koniecznie z wykorzystaniem HTTP
    • jednakże zazwyczaj z HTTP
  • serwlety mogą korzystać ze standardowych klas Javy (z VM), klas wchodzących w skład Servlet API oraz ewentualnie z dodatkowych bibliotek zainstalowanych na serwerze.
  • Web containters
    • W obecnych implementacjach serwety uruchamiane są w ramach tzw. Web Container, który może stanowić osobny i jedyny mechanizm serwera (Apacze Tomcat) lub jedną z jego części (serwery aplikacji)
      • Tomcat 5.5
      • GlassFish
      • Jetty
      • Enhydra
  • Cel stosowania serwletów
    • Zasadniczo:
      • do wyświetlania dynamicznych stron WWW
      • przetwarzanie formularzy (logika biznesowa)
      • w serwletach zaleca się umieszczanie tylko lekkich funkcji biznesowych, ale w małych aplikacjach cała logika może być w serwletach i JSP
      • forwarding (przekierowywanie żądań)
      • wyświetlania wyników zapytań do DB (tu zaleca się strony JSP)
  • Zalety
    • Dobrze pracują w środowisku heterogenicznym
    • Niezależne od platformy i OS
    • Pracują ze wszytkimi głównymi serwerami WWW (IIS, Apache,etc..) (dla zainteresowanych Microsoft's Java SDK: http://www.microsoft.com/java )
    • Dobrze zdefiniowane ramy dla Aplikacji Web (dużo usług, API)
    • Łatwa i czysta separacja logiki od prezentacji
    • Wydajne i dobrze skalowalne

  • Cykl życia serwletu:
    1. strona html 
    2. ladownie strony html(klient)
    3. (klient)wypełnia formularz html i przesyla zadanie(request)
    4. servlet reqest
    5. (servlet) przetwarza zadnie
    6. servlet response
    7. (klient) wyswietla odpowiedz(response)

  • Powołanie do życia
    • Automatycznie przy starcie Web Serwera
    • Przy żądaniu klienta
    • Przy powtórnym ładowaniu
  • Zakończenie działania
    • Wykonanie (świadome) metody destroy
    • Zamknięcie Web serwera
  • Załadowanie serwletu - klasa serwletu umieszczana jest w pamięci Web Container, wykonywana jest metoda public void init(ServletConfig config)
  • Obsługa żądania - w momencie przekazania żądania do serwletu jest ono obsługiwane w ramach metody
    • GenericServletservice(ServletRequest req, ServletResponse res)
    • HttpServlet doGet(...), doPost(...), ...
  • Usunięcie serwletu - serwlet może być również usunięty w przypadku zmiany kodu serwletu. 
    • W ramach usuwania wywoływana jest metoda public void destroy()


15) Komponenty J2EE
  • Serwlety
  • Strony JSP (do prezentacji)
  • Java Beans (Używane jako obiekty z wartościami, przekazujące dane do JSP)
  • Biblioteki Znaczników (Tag Libraries) – Elementy JSP w formacie XML (JSTL)
  • Deskryptor Web Deployment – /web-inf/web.xml


16) Sesja
  • Potrzebna gdy serwer chce śledzić poczynania użytkownika (tzn. jego kolejne żądania)
    • Utrzymywanie koszyka zakupów użytkownika
    • Zapisywanie informacji o autoryzacji dostępu
  • Sesje są problemem dla serwerów HTTP
    • Brak mechanizmu sesji HTTP (bezstanowość)
    • API serwletów dostarcza API sesji
    • Współdzielenie sesji przez wszystkie przeglądarki (jednego typu)
  • Śledzenie sesji
    • Istnieją 3 sposoby na utrzymanie sesji

  1. Cookies
  2. Ukryte pola formularza
  3. Przepisywanie URL’a
  4. Serwlety
    • Będą używać cookies jeśli to możliwe
    • Będą przepisywać URL jeśli nie ma cookies
  • Jak serwlet śledzi sesję?
    • Każda sesja ma unikalne ID
    • Gdy sesja się rozpoczyna zostaje przypisane ID
    • Każde następne „podzapytanie” musi przesyłać ID (przez cookie lub URL)
  • Sesja
    • Pozyskanie nowej sesji (z obiektu żądania) :
      • HttpSession s = request.getSession(true);
    • Zapamiętanie obiektów w czasie sesji:
      • s.putValue("item-name", myobject);
    • Pozyskanie obiektów :
      • s.getValue("item-name");
    • Można nasłuchiwać czy obiekty są dodane lub usunięte z sesji – listener’y
17) Filtry
• Obiektów implementujących interfejs Filter używa się do modyfikowania
komunikatów między klientem a docelowym serwletem na serwerze.
• Modyfikacja może odbywac się w kierunku do i od serwletu, a także między serwletami
• Filtry można łączyć w łańcuchy.
• Przykładowe zastosowania filtrów to: autentykacja, szyfrowanie, kompresja.
Sposób użycia
• Zadeklarowanie filtru
• Przypisanie filtru do zasobu (nazwa lub URL)
• Określenie na jakie żądania ma reagować filtr: REQUEST,
FORWARD, INCLUDE, ERROR
• Domyślana operacja to REQUEST. Istnieje możliwość łączenia operacji.

18) JSP- Java Server Pages
• JSP to technologia przetwarzania wsadowego do użytku w ramach Web
Container
• jest bardzo ściśle powiązana z serwletami. Przy pierwszym uruchomieniu strona JSP tłumaczona jest na klasę Java, która faktycznie jest wyspecjalizowanym serwletem
Znaczniki JSP
• Komentarz <%-- …...text…... --%>
• Deklaracja <%! int i; %>
<%! int numOfStudents(arg1,..) {} %>
• Wyrażenie <%= 1+1 %>
• Skryptlet <% … kod java … %>
• Dyrektywa <%@ include file=“*.jsp” %>
• Akcja <jsp:forward page=”…”
Notacje znaczników JSP
• JSP może być wyrażony jako HTML lub XML
• Dla uzyskania zgodności z regułami składni XML, znaczniki muszą być inne (ale realizują te same operacje)
• HTML: <%= expression%>
XML: <jsp:expression> expression</jsp:expression>
• HTML: <% code%>
XML: <jsp:scriptlet> code</jsp:scriptlet>
• HTML: <%! declarations%>
XML: <jsp:declaration> declarations</jsp:declaration>
• HTML: <%@ include file= URL%>
XML: <jsp:directive.include file=" URL"/>
Obiekty JSP
• JSP może operować na zestawie "wbudowanych" obiektów, wywodzących się w większości z mechanizmu serwletów. Te obiekty to m.in.:
􀂃 request - obiekt typu javax.servlet.http.HttpServletRequest, aktualnie obsługiwane żądanie
􀂃 response - obiekt typu javax.servlet.http.HttpServletResponse, aktualnie generowana odpowiedź
􀂃 session - obiekt typu javax.servlet.http.HttpSession, aktualna sesja HTTP
􀂃 application - obiekt typu javax.servlet.ServletContext, kontekst aplikacji WWW w ramach Web Container
􀂃 config - obiekt typu javax.servlet.ServletConfig, konfiguracja strony jako serwletu
􀂃 page - obiekt typu java.lang.Object, odpowiednik this, czyli aktualnie przetwarzana strona
􀂃 out - obiekt typu javax.servlet.jsp.JspWriter, standardowe wyjście strony, odpowiednik JSP dla java.io.PrintWriter
􀂃 pageContext - obiekt typu javax.servlet.jsp.PageContext, daje dodatkowe możliwości np. w zakresie obsługi błędów
􀂃 exception - obiekt typu java.lang.Throwable, obsługiwany błąd, dostępny tylko dla stron odpowiedniego typu
Wybrane dyrektywy JSP
Dyrektywa page - określa różne parametry strony, głównie językowe. Może być kilka dyrektyw tego typu w ramach strony, przy kompilacji zostaną potraktowane jako jedna całość. Niektóre atrybuty:
􀂃 language - określa język kodu strony JSP, jedyna prawidłowa i wymagana wartość to java
􀂃 import - określa zestaw klas i pakietów, oddzielonych przecinkami, które powinny być zaimportowane w ramach docelowej klasy tej strony. Przykład:
<%@ page import="java.io.*, java.util.*, java.text.SimpleDateFormat" %>
􀂃 session - określa, czy strona powinna używać sesji. Jeżeli wartość jest równa true obiekt JSP session jest zdefiniowany i można się do niego odwoływać. Domyślnie wartość true
􀂃 isErrorPage - określa, że strona powinna być traktowana jako strona do obsługi błędów. Jeżeli wartość jest równa true obiekt JSP exception jest zdefiniowany i można się do niego odwoływać. Domyślnie wartość false
􀂃 contentType - określa typ MIME i zestaw znaków dla odpowiedzi aktualnej strony JSP. Format zgodny ze standardem MIME, np. text/html; charset=iso-8859-2
􀂃 pageEncoding - określa zestaw znaków używanych do kodowania strony JSP, domyśnie ISO-8859-1
Dyrektywa include - określa przy pomocy atrybutu file (wartość - relatywny URL) zasób, która ma być włączony do dokumentu w miejscu wystąpienia dyrektywy. Zasób jest dołączany na etapie kompilacjistrony
Dyrektywa taglib - określa bibliotekę znaczników, z której będzie można skorzystać w ramach strony
Wybrane akcje JSP
Akcja w JSP oznacza działanie, które należy podjąć podczas wykonywania kodu JSP. Wiąże się np. z obsługą żądania, jego atrybutów, czy kontrolą przepływu danych. Akcje w JSP określane są w postaci znaczników zgodnych z XML, jak gdyby przestrzeń nazw miała prefix jsp
􀂃 include - (<jsp:include page="..." flush="...">) - działa podobnie jak dyrektywa <%@ include %>, ale zasób, określony przez atrybut page, dołączany jest w momencie działania, nie kompilacji. Atrybut flush mówi, czy przed dołączeniem zasobu aktualny bufor standardowego wyjścia JSP powinien zostać wysłany jako w ramach odpowiedzi
􀂃 forward - (<jsp:forward page="...">) - działa podobnie jak przekazanie sterowania z poziomu serwletu do podanego zasobu
param - (<jsp:param name="..." value="...">) - pozwala zdefiniować parametr, którego znaczenie zależy od kontekstu użycia. Przykładowo:
dołącza p1 jako atrybut żądania
useBean - (<jsp:useBean ...>) - pozwala operować na instancji klasy Java. Przyjmowane jest, że instancja ta jest zgodna z JavaBean. Jeżeli instancji nie ma w danym zakresie widoczności, jest ona tworzona według parametrów podanych w ramach akcji.
Java Bean - Jeszcze jedna technologia Java do nauki
• Java beans są zwykłymi klasami Java, które muszą spełniać kilka prostych zasad:
– Musi mieć konstruktora bez paramterów
– Nie może mieć atrybutów publicznych
– Dostęp do wszystkich atrybutów powinien być przez metody get lub set
• Get zwraca wartość atrybutu i pobiera pojedynczy parametr, który jest nową wartością atrybutu – zgodne typy !
• Get i set powinny być nazwane przez prefixy get i set + nazwa
atrybutu np.. Atrybut name = getName i setName
• Uwaga pierwsza litera atrybutu powinna być zapisana dużą literą w
nazwie metody get i set



JSP i JavaBeans
• Główną ideą użycia JB w JSP jest separacja kodu od widoku HTML
• Programiści integrują JB używając tagów lub skryptletów.
– Dołączenie (utworzenie) bean’a.
• jsp:useBean
– Inicjalizcja.
– Ustawienie atrybutów
• jsp:setProperty
– Pobieranie atrybutów
• jsp:getProperty
Niektóre atrybuty useBean:
id - nazwa beana, za pomocą której będzie identyfikowany w ramach strony JSP, unikalna w zakresie kompilacji
scope - zakres widoczności. Może przyjmować wartości page (domyślnie), request, session, application, co odpowiada atrybutom na poszczególnych poziomach
class - pełna nazwa klasy, której instancją jest bean
Przykład: definicja: jest odpowiednikiem (do pewnego stopnia) wywołania:
<jsb:useBean id="mode" class="java.lang.String" scope="request"/>
<% String mode=(String)request.getAttribute("mode"); %>
Z akcją useBean wiążą się dodatkowe akcje setProperty i
getProperty, pozwalające zarządzać polami instancji JavaBean
setProperty - (<jsp:setProperty name="..." />) - ustawia wartość pola instancji JavaBean identyfikowanej przez name. Pozostałe atrybuty:
property - może zawierać nazwę zmienianego pola. W przypadku podania "*", przeszukiwane są parametry żądania i pasujące pola wypełniane są odpowiednimi wartościami parametrów
param - zawiera nazwę parametru żądania, którego wartość ma zostać wpisana dla danego pola instancji Java Bean. Nie może występować razem z value
value - zawiera konkretną wartość, która będzie wpisana dla danego pola instancji JavaBean Biblioteki znaczników
Taglib, czyli biblioteka znaczników pozwala na rozszerzenie funkcjonalności JSP.
• Jest to jednocześnie sposób na ukrycie implementacji działania kodu w ramach strony, przy zachowaniu jej funkcjonalności
• Istnieje spora liczba bibliotek, które weszły już do standardów programowania JSP.
Najbardziej znana to JavaServer Pages Standard Tag Library (JSTL) udostępniana przez firmę Sun.
Cookies (RFC 2109)
• Utworzenie nowego cookie
– Cookie c = new Cookie("item-name", "item-value");
• Modyfikacja atrybutów cookie:
– c.setValue("item-value");
– c.setComment("Jakiś");
– c.setMaxAge(60 * 60 * 24 * 365);
• Odczytanieatrybutów
– String value = c.getValue();
– String comment = c.getComment();
• Ustawienie cookie przez HttpServletResponse:
– response.addCookie(c);
• Pozyskanie cookie prze HttpServletRequest:
– Cookie[] cookieArray = request.getCookies();





Brak komentarzy:

Prześlij komentarz