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 - serwerCechy 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 - serwerCechy 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:
- 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
- Uzgodnienie algorytmu kryptograficznego opartego o klucz symetryczny - wybierany jest zawsze najmocniejszy algorytm znany obu stronom
- Wygenerowanie osobno przez klienta i serwer tzw. symetrycznego klucza sesji
- Wymiana kluczy sesji zakodowanych kluczem publicznym "rozmówcy"
- 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:
- strona html
- ladownie strony html(klient)
- (klient)wypełnia formularz html i przesyla zadanie(request)
- servlet reqest
- (servlet) przetwarza zadnie
- servlet response
- (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
- GenericServlet, service(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
- Cookies
- Ukryte pola formularza
- Przepisywanie URL’a
- 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