Transcript Document

Technologie Internetu
wykład 4: Technologie dokumentów
dynamicznych WWW
Piotr Habela
Polsko-Japońska Wyższa Szkoła
Technik Komputerowych
1
W poprzednim odcinku…
• Rodzaje dokumentów: statyczne, aktywne, dynamiczne;
• Zachowanie dokumentów aktywnych opisywane językiem
skryptowym:
– Zapewnia interakcyjność serwisów webowych;
– Wymaga ustandaryzowanego wsparcia w środowisku przeglądarki;
• Całość oparta na bezstanowym protokole HTTP: interakcja
z serwerem odbywa się jako sekwencja niezależnych par:
żądanie-odpowiedź. Zapamiętanie stanu realizowane
zwykle poprzez mechanizm cookies.
• Środowisko wykonawcze po stronie klienta jest bardzo
ograniczone:
– ustandaryzowany „wspólny mianownik”,
– względy bezpieczeństwa,
– ograniczona objętość przesyłanych danych.
2
Plan wykładu
•
•
•
•
Motywacja dla użycia dokumentów dynamicznych;
Właściwości dokumentów dynamicznych;
Problem autentykacji użytkowników;
Przegląd ważniejszych technologii:
–
–
–
–
–
–
Common Gateway Interface (CGI);
Server Side Includes (SSI);
PHP Hypertext Preprocessor (PHP);
Active Server Pages (ASP);
Servlety i Java Server Pages (JSP);
ASP .NET;
3
Dokumenty dynamiczne
• Motywacja = Interakcyjność serwisów WWW:
– Swobodne wykorzystanie zasobów zlokalizowanych po
stronie serwera – w tym baz danych;
– Brak specjalnych wymagań wobec środowiska
przeglądarki (jest przesyłany czysty HTML).
• Wykorzystywana funkcjonalność:
–
–
–
–
aplikacje oparte na bazie danych;
autoryzacja użytkownika i personalizacja; koszyk;
forum; poczta przez WWW oraz listy rozsyłkowe;
zarządzanie treścią; generowanie dokumentów.
4
Właściwości dokumentów dynamicznych
• Serwer WWW musi zostać uzupełniony o współdziałający
z nim program użytkowy;
• Zapewnienie przekazywania danych wejściowych i
wyjściowych pomiędzy serwerem WWW a programem
użytkowym;
• Rozróżnienie adresów URL dokumentów statycznych i
dynamicznych;
• Adres URL żądania wskazuje albo na dokument HTML
zawierający interpretowane przez serwer skrypty, lub
określa program, który generuje całość zwracanego
dokumentu;
• Wynikiem przetwarzania ma być zwracany przez serwer
kod strony HTML;
5
Problem autoryzacji użytkownika
• Można wyróżnić trzy kryteria udostępniania klientowi
chronionego zasobu:
– Autoryzacja (authorization)
– Autentykacja (authentication)
– Kontrola dostępu (access control).
• Autentykacja: użytkownik jest rzeczywiście tym, za kogo
się podaje (najpowszechniejsza metoda = sprawdzenie
hasła).
• Autoryzacja: sprawdzenie, czy dany użytkownik jest
uprawniony do danego dostępu.
• Kontrola dostępu: inne, ujęcie zagadnienia. Poza
zidentyfikowaniem użytkownika możliwe są jeszcze inne
kryteria udostępnienia zasobu (np. adres, spod którego
nadchodzi żądanie).
6
Autentykacja HTTP
• Najprostsza metoda, tzw. basic:
– uwzględniona w protokole HTTP;
– wymaga ustawień konfiguracyjnych serwera WWW;
– hasło nie jest kodowane;
• Przebieg interakcji:
– w odpowiedzi na żądanie serwer zwraca zamiast zasobu
nagłówek: 401 Authentication Required; oraz nazwę
chronionego obszaru (tzw. realm)
– przeglądarka wyświetla dialog (użytkownik i hasło);
– wprowadzone dane są wykorzystywane przez
przeglądarkę w kolejnych żądaniach dotyczących danego
obszaru;
7
Konfigurowanie autentykacji HTTP (serwer Apache)
• Utworzenie pliku z hasłami uprawnionych użytkowników.
• Utworzenie pliku .htaccess chronionego katalogu lub wpis
w głównym pliku konfiguracyjnym:
–
–
–
–
–
AuthType:
Rodzaj autoryzacji – np. Basic
AuthName:
Nazwa chronionego obszaru
AuthUserFile: Lokalizacja pliku haseł użytkowników.
AuthGroupFile:Lokalizacja pliku grupy (opcjonalnie)
Require:
Identyfikatory uprawnionych użytkowników
(specjalną nazwą jest valid-user, czyli każdy poprawnie
zidentyfikowany użytkownik wymieniony w pliku haseł).
• Plik grupy określa jej nazwę oraz listę jej członków (w polu
„Require” można wówczas podać słowo group oraz nazwę
grupy.
• Przy większej liczebności lub fluktuacji uprawnionych,
należy wesprzeć obsługę haseł mechanizmem bazy danych.
8
Kontrola dostępu – pozostałe możliwości
• Obok autoryzacji można specyfikować jeszcze inne
ograniczenia dostępu, oparte na adresie z którego
napływa żądanie:
Allow from <nazwa lub adres IP> oraz
Deny from <nazwa lub adres IP>.
• Można określać kolejność nakładania ograniczeń:
Order: deny, allow
• Można też ustalić warunek logiczny: Satisfy all lub any
to pierwsze (domyślne) oznacza wymagalność zarówno
autentykacji hasłem jak również spełnienia dodatkowych
ograniczeń; to drugie – albo autentykacja albo
lokalizacja (np. wewnątrz sieci danej firmy).
9
CGI – Common Gateway Interface
• Historycznie pierwsza upowszechniona technologia dla
dokumentów dynamicznych. Standard opracowany
pierwotnie przez NCSA (National Center for
Supercomputer Applications).
• Standard dla zewnętrznych programów bramki dla
współdziałania z serwerami informacyjnymi takimi jak
HTTP.
• Protokół uruchamiania programów na serwerze WWW.
Ustandaryzowanie takiego interfejsu zapewnia niezależność
od platformy tj. OS oraz serwera webowego.
• Pozwala na udostępnianie dynamicznej informacji. Nie
ogranicza się do dokumentów HTML.
10
Architektura CGI
• Program implementujący dokument dynamiczny – zwany
programem CGI. Typowy scenariusz działania:
– odczytanie parametrów żądania (ze standardowego wejścia albo ze
zmiennych środowiskowych);
– przetworzenie danych;
– wyprowadzenie komunikatu http (na standardowe wyjście).
• CGI nie jest językiem programowania i nie determinuje
języka programowania. Można stosować nawet skrypty
powłoki. Często stosowany Perl w związku z dostępnością
modułów dla Webu oraz bardzo dobrymi udogodnieniami
dla przetwarzania tekstu.
• Lokalizacja i nazewnictwo programów CGI – zależne od
konfiguracji serwera.
11
Komunikacja z programem CGI
• Wyjście programu CGI może zawierać nagłówek
interpretowany przez serwer. Określać może np. format
wytworzonego dokumentu, czy też przekierowanie zlecenia
w nowe miejsce, tj. przesłanie w odpowiedzi domyślnego
pliku – np. Location: response.html
• Przekazywanie parametrów – metoda GET:
– Z założenia metoda służy pobieraniu jakiegoś zasobu;
– Dołączone do URL parametry precyzują takie żądanie (wymagane
odpowiednie kodowanie; ograniczona długość);
– kilka identycznych żądań GET ma taki sam efekt uboczny jak
jedno i zwracane z takiego zapytania wyniki mogą być
przechowywane w cache; => nie nadaje się do używania w
operacjach wymagających reakcji na każde żądanie;
– Dostępne dla programu w zmiennej środowiskowej
QUERY_STRING.
12
Komunikacja z programem CGI
• Przekazywanie parametrów – metoda POST:
– nadaje się do przekazywania większych objętości
danych;
– dane są pobierane ze standardowego wejścia. Liczba
bajtów do pobrania jest określana w zmiennej
środowiskowej CONTENT_LENGTH.
• Odpowiedzi kierowane do klienta polegają na
generowaniu wyjścia HTML:
– Content-type: text/html
– następnie – pusta linia;
– Wygenerowana zawartość dokumentu.
13
Zmienne środowiskowe dostępne dla programu CGI
• REMOTE_ADDR, REMOTE_HOST, REMOTE_USER,
REMOTE_IDENT, FROM
• QUERY_STRING
• SERVER_SOFTWARE, SERVER_NAME, SERVER_PORT
• SERVER_PROTOCOL, GATEWAY_INTERFACE
• REQUEST_METHOD (np. POST lub GET)
• PATH_INFO (virtual) PATH_TRANSLATED, SCRIPT_NAME
• AUTH_TYPE (zastosowana metoda autentykacji).
• CONTENT_TYPE, CONTENT_LENGTH (dot. nadesłanego
załącznika)
• ACCEPT_LANGUGE, HTTP_ACCEPT, HTTP_USER_AGENT
• REFERER (dokument, z którego nastąpiło odwołanie)
• FORWARDED (nazwa serwera proxy)
• HTTP_COOKIE
14
Wady technologii CGI
• Ograniczona sprawność działania: konieczność
załadowania procesu przy obsłudze każdego
żądania stanowi znaczne obciążenie;
• Problem współdzielenia zasobów nie jest łatwy
do rozwiązania;
• Możliwość wywoływania poleceń po stronie
serwera tworzy istotne zagrożenie dla
bezpieczeństwa;
15
•
•
•
•
•
Internet Server Application Programming Interface (ISAPI)
Technologia wprowadzona przez firmę Microsoft (przed
ASP). Definiuje tzw. rozszerzenia (extensions) i filtry
(filters). Zapewnia równie dużą elastyczność jak CGI.
Podobną technologią jest NSAPI (Netscape Server
Application Programming Interface), będący produktem
Netscape, działający w ramach serwerów Enterprise tej
firmy.
W przeciwieństwie do CGI proces obsługi rezyduje w
pamięci, a nie jest każdorazowo ładowany.
Podobnie jak programy wołane poprzez CGI, w ISAPI daje
możliwość wywoływania funkcji systemowych (API) i
innych dostarczonych przez wybrany język programowania.
Istotnym problemem jest nieprzenośność kodu (zależny od
API konkretnego dostawcy) – określanej jako proprietary
API
16
Server Side Includes (SSI)
• Jak sugeruje nazwa, w tym wypadku kod jest wstawiany w
strukturę dokumentu HTML.
• Odpowiednie fragmenty dokumentu są ponownie
generowane przy każdym odwołaniu.
• Dynamika dokumentu bez konieczności stosowania CGI;
generowane są tylko wymagane fragmenty dokumentu.
• Możliwe zastosowania:
– Licznik odwołań;
– Data i czas; data ostatniej modyfikacji dokumentu;
– Wkomponowywanie innego pliku lub rezultatu wywołania
programu CGI.
• Rozszerzenia specyfikacji obejmują m. in.:
– Instrukcje warunkowe (if … else);
– Wysyłanie poczty.
17
SSI - składnia
• Pliki wymagające takiego przetwarzania wyróżniane zwykle
specjalnym rozszerzeniem: .sht .shtm lub .shtml.
• Elementy interpretowane umieszczone są w specjalnych
znacznikach wewnątrz kodu HTML. Przed wysłaniem
zawartość jest przeglądana i osadzone znaczniki są
interpretowane. Format znacznika (token) SSI jest
następujący:
<!--#polecenie zbiór_zmiennych --> czyli :
– <!--# Identyfikator otwierający znacznik SSI;
– polecenie może przybierać wartości: echo, include, fsize, flastmod,
exec, config, oraz (rozszerzenia): if, goto, label, break
– zbiór zmiennych
jedna lub więcej para nazwa_zm =
“wartosc”. Umieszczane tu dane są zależne od kontekstu
polecenia.
– -->
obowiązkowy identyfiaktor zamykający.
18
SSI – dostępne polecenia
• config - Określa sposoby parsowania plików:
– errmsg – postać komunikatu o błędzie.
– timefmt – format wyświetlania czasu.
– sizefmt – Sposób wyświetlania rozmiaru plików (bytes lub
abbrev).
• include – wstawienie do bieżącego dokumentu innej wersji:
– virtual – ścieżka wirtualna na serwerze.
– file – ścieżka względna w głąb bieżącego katalogu.
•
•
•
•
echo – wyświetlenie wartości podanej zmiennej.
fsize – wyświelta rozmiar pliku.
flastmod – data ostatniej modyfikacji.
exec – wykonanie zadanej komendy systemowej lub skryptu
CGI:
– cmd – uruchomienie podanego stringu jako komendy.
– cgi – uruchomienie zadanego skryptu CGI.
19
SSI – dostępne zmienne
• Zmienne zdefiniowane przez specyfikację CGI.
• Ponadto:
– DOCUMENT_NAME: Nazwa bieżącego pliku.
– DOCUMENT_URI: Ścieżka wirtualna do dokumentu (np.
/docs/howto/abc.shtml).
– QUERY_STRING_UNESCAPED: Parametry żądania.
– DATE_LOCAL: Data i strefa czasowa, formatowane
poleceniem konfiguracyjnym (timefmt).
– DATE_GMT: Data w postaci Greenwich Mean Time.
– LAST_MODIFIED: Data ostatniej modyfikacji. Formatowana
poleceniem konfiguracyjnym (timefmt).
20
SSI - rozszerzenia
• Serwer Apache udostępnia poza standardowymi
poleceniami (określanymi jako NCSA-compatible)
następujące rozszerzenia:
– Użycie zmiennych w komendach SSI. Np. data modyfikacji
bieżącego dokumentu:
<!--#flastmod file="$DOCUMENT_NAME" -->
– Definiowanie i aktualizacja własnych zmiennych – instrukcja set.
– Instrukcje warunkowe: if, else, elif and endif.
<!--#if expr="warunek_logiczny" --> Zawartość jeśli prawda
<!--#else --> Zawartość jeśli fałsz <!--#endif -->
(Np. użycie zmiennej $HTTP_USER_AGENT może pomóc
dostosować zwracaną treść do możliwości przeglądarki.)
=> Węższe możliwości w porównaniu z CGI, jednak stanowi
dość użyteczne „lżejsze” rozwiązanie.
21
Active Server Pages (ASP)
• Klasyfikowane jako technologia gatunku SSI:
Plik ASP może zawierać HTML, XML, tekst oraz skrypty;
• Działa w ramach IIS i PWS (Personal Web Server).
Technologia firmy Microsoft. Istnieją jednak także
implementacje stworzone dla innych platform.
• Zalety:
–
–
–
–
–
–
Dynamiczna zawartość webowa;
Obsługa danych przekazanych poprzez formularze;
Udostępnianie źródeł danych znajdujących się na serwerze;
W stosunku do CGI przewagą jest prostota i szybkość tworzenia;
Kod ASP nie jest widoczny po stronie przeglądarki;
Udostępnia zwykły HTML -> brak specjalnych wymogów wobec
przeglądarki;
– Przy odpowiednim programowaniu stron pozwala ograniczyć ruch
w sieci.
22
ASP - składnia
• Elementy skryptu serwera oznaczane tagiem: <% … %>
• Domyślnym językiem skryptów jest VBScript. Jeśli zdecydujemy się
na JavaScript (ściśle rzecz biorąc będzie to JScript – implementacja
JavaScript w wydaniu Microsoft), należy zmienić domyślny język na
początku dokumentu (przed tagiem HTML):
<%@ language="javascript"%>
• Podobnie jak w rozszerzonym SSI, elementy instrukcji warunkowej
mogą się przeplatać z kodem HTML.
• Przykład (zmienna Response – dostęp do przetwarzanego
dokuementu):
<html><body>
<% response.write("Hello World!") %>
</body></html>
• Dyrektywa #include:
– Umieszczana w tagach komentarza, powoduje sprowadzenie zawartości innego
pliku przed ewaluacją bieżącego dokumentu: <!--#include file="inny.inc"-->
– Do wskazania lokalizacji możemy użyć atrybutów file lub virtual (znaczenie
analogiczne jak w SSI).
23
ASP – rodzaje zmiennych
• Lokalne (wewnątrz procedur).
• Globalne strony (poza ciałem procedury):
dostępne dla każdego skryptu na danej stronie.
• Sesji: Dostępne ze wszystkich stron danej aplikacji –
tworzone i wypełniane na potrzeby współpracy z
konkretnym użytkownikiem. Przechowują np. imię,
identyfikator, preferencje.
• Aplikacyjne: Również dostępne dla wszystkich stron.
Przechowują jednak właściwości obowiązujące wszystkich
użytkowników.
24
ASP – predefiniowane obiekty
• Request: m. in. udostępnia parametry żądania oraz odczyt
ciasteczek;
• Response:
– pisanie do wygenerowanego dokumentu – zwyczajne lub binarne
(tj. bez konwersji znaków),
– buforowanie treści;
– przekierowanie do innej strony (Redirect);
– określanie terminu ważności strony – właściwość Expires
(bezwzględnie lub relatywnie);
– sprawdzanie, czy klient jest podłączony: IsClientConnected;
– określanie typu zwracanej zawartości oraz strony kodowej
25
ASP – predefiniowane obiekty
• Application: Dostęp do globalnych właściwości i obiektów
statycznych, uwzględniający nakładanie zamków.
• Session: Określenie ustawień regionalnych, terminu
ważności sesji oraz sprawdzenie identyfikatora sesji.
• Server: Opcje konfiguracyjne, odczyt ostatniego błędu,
tworzenie obiektów.
• Error: Szczegółowy opis błędu.
• Inne istotne typy:
–
–
–
–
ASP FileSystem – operacje na lokalnych plikach.
ASP TextStream – poruszanie się w pliku tekstowym.
ASP Drive – dostęp do informacji na temat napędów dyskowych.
ASP File – informacje o pliku; kopiowanie, usunięcie,
przenoszenie.
– ASP Folder – podobnie – dla folderu.
– ASP Dictionary – obiekt słownikowy.
26
ASP – konfiguracja aplikacji
• Plik Global.asa przechowywany w głównym katalogu
danej aplikacji. Określa:
– Obsługę zdarzeń aplikacji i sesji (Session_OnStart
Application_OnStart Session_OnEnd Application_OnEnd).
– Osadzanie obiektów dostępnych w całej aplikacji wspólnie lub
dla poszczególnych sesji:
<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
progID -> dostawca, komponent, wersja;
classID -> identyfikator COM;
Atrybut id pozwoli na odwoływania się do takiego obiektu w
kodzie innych stron.
– Deklaracja bibliotek typów (TypeLibrary) używanych przez
komponenty aplikacji).
27
Obsługa cookies na stronach ASP
• Typowe dla tej i podobnych technologii są udogodnienia
ułatwiające dostęp do cookies.
• Ustawiane / pobierane metodami
Response.Cookies(„nazwaCiasteczka”) i
Request.Cookies(„nazwaCiasteczka”).
Zawartość dostępna bezpośrednio w rezultacie, zaś termin
ważności – w atrybucie Expires.
• Istnieje również wsparcie dla przechowywania wartości
złożonych:
– właściwość HasKeys określa, czy ciasteczko przechowuje złożoną
strukturę;
– dostęp do poszczególnych pozycji możliwy poprzez dodatkowe
indeksowanie:
Request.Cookies(”nazwaCiasteczka”)(”nazwaKlucza”);
• Brak obsługi cookies wymaga przekazywania niezbędnych
parametrów w kolejnych wywołaniach określonych stron (w
ramach URL albo w ukrytych polach formularza).
28
PHP Hypertext Preprocessor
• Jest zagnieżdżonym w HTML jezykiem skryptowym
działającym po stronie serwera tworzonym na zasadach
open-source.
Autor: Rasmus Lerdorf (1994).
• Również zaliczany do gatunku SSI.
• Bardzo szeroko dostępny; Obsługa PHP na danej platformie
dostępna jako moduł serwera albo jako program CGI.
• Zastosowania:
– skrypty po stronie serwera;
– skrypty uruchamiane z linii komend;
– okienkowe programy działające po stronie użytkownika;
29
Język PHP – krótka charakterystyka
• Jak w większości języków skryptowych – tzw. luźne
typowanie:
– Dostępne typy: Integer, Double, String, Array, Object
– Typ danej zmiennej można zmieniać w czasie działania skryptu.
Możliwe są również rzutowania (składnia jak w Javie).
• Składnia instrukcji warunkowych, operatorów
arytmetycznych oraz pętli a także komentarzy jest
wzorowana na C++ i Javie.
• Istnieje możliwość deklarowania zmiennych i stałych.
Identyfikatory są czułe na wielkość znaków.
30
Język PHP – krótka charakterystyka – c.d.
• Inne specyficzne operatory:
– Operator zignorowania błędu -> „@” przed wyrażeniem mogącym
wygenerować błąd.
– Operator wykonania – symbol podobny do cudzysłowu,
zlokalizowany zwykle na tym samym klawiszu co tylda „~”.
Np. `ls -l`.
– Podwójny symbol zmiennej „$$zmiennaA”: odwołanie do
zmiennej o nazwie przechowywanej w tekstowej zmiennejA.
• Zmienne specjalne – tzw. superglobals. Przechowują
parametry środowiska, np. następujące tablice:
– Parametry przekazane w wywołaniu: $_POST oraz $_GET. Np.
$_POST[‘imie’];
– Zmienne środowiskowe: $_ENV; np.
$_ENV[‘REMOTE_HOST’]
– Zmienne serwera: $_SERVER; np. $_SERVER['PHP_SELF']
31
Servlety
• Technologia Javy (Java 2 Enterprise Edition).
• Servlet funkcjonuje jako element oprogramowania
odpowiadający na żądania (zwykle) HTTP.
Model działania nawiązuje więc po części do CGI, ma
jednak w stosunku do niego istotne zalety:
– Przystosowane do wykonania wielowątkowego.
– Dzięki rozbudowanemu API Javy zwykle nie ma potrzeby
wywoływania poleceń systemu operacyjnego – lepsze
bezpieczeństwo.
– Możliwość określenia precyzyjnej kontroli dostępu do zasobów
(ACL – Java Access Control List).
– Mechanizm obsługi wyjątków – potencjalnie lepsza stabilność.
32
Servlet – cykl życiowy
• Klasa Javy, wykonywaną w środowisku maszyny
wirtualnej przez usługę zwaną silnikiem servletów (servlet
engine). Klasa ta implementuje interfejs
javax.servlet.Servlet.
• Servlet jest ładowany przy pierwszym odwołaniu doń lub
przy starcie engine-u. Pozostaje w pamięci do momentu
jawnego usunięcia lub zatrzymania serwera.
• Można wskazać trzy metody sevletu wyznaczające jego
cykl życiowy:
– void init(ServletConfig config) - Uruchamiana przy
załadowaniu servletu.
– void service(ServletRequest request, ServletResponse
response) - Metoda uruchamiana przy każdym żądaniu
skierowanym do servletu. Implementacja musi uwzględniać
wielowątkowe wykonanie.
– void destroy() - Uruchamiana przy wyłączaniu servletu.
33
Servlet – implementacja zachowania
• Klasa abstrakcyjna javax.servlet.http.HttpServlet
implementuje następujące metody (jako chronione –
protected, wywoływane przez metodę service(…)).
Obsługują one poszczególne rodzaje żądań w protokole
HTTP:
void doDelete(HttpServletRequest req, HttpServletResponse resp)
void doGet(HttpServletRequest req, HttpServletResponse resp)
void doHead(HttpServletRequest req, HttpServletResponse resp)
void doOptions(HttpServletRequest req, HttpServletResponse resp)
void doPost(HttpServletRequest req, HttpServletResponse resp)
void doPut(HttpServletRequest req, HttpServletResponse resp)
void doTrace(HttpServletRequest req, HttpServletResponse resp)
34
Java Server Pages (JSP)
• Również element platformy J2EE; kolejne rozwiązanie
służące implementacji dynamicznych dokumentów
webowych.
• Umożliwiają osadzanie kodu wewnątrz struktury HTML.
Wewnątrz struktury dokumentu HTML kod Javy jest
umieszczany wewnątrz znaczników: <% … %>.
• Kod strony, opatrzony rozszerzeniem .jsp jest następnie
przetwarzany przez silnik JSP do postaci servletu i
kompilowany. Wytworzony kod opiera się na pakiecie
javax.servlet.jsp i stanowi rozszerzenie klasy
javax.servlet.http.HttpServlet, implementujące interfejs
javax.servlet.jsp.HttpJspPage. Klasa wygenerowana ze
strony Nazwa.jsp otrzymuje nazwę Nazwa$jsp.
35
JSP – implementacja strony
• Implementowane są następujące metody:
– jspInit()
– jspDestroy()
– _jspService(HttpServletRequest
request,HttpServletResponse response)
• Można odpowiednio zdefiniować zachowanie
metod jspInit() i jspDestroy(), zaś
_jspService(HttpServletRequest
request,HttpServletResponse response)
jest generowana przez silnik JSP, na podstawie
postaci pierwotnej strony .jsp.
36
JSP – składnia: 4 rodzaje tagów
•
•
•
•
Dyrektywy: Import pakietów, ustawienia sesji i sposobu
informowania o błędach.
Podawane w tagach: <%@nazwaDyrektywy
nazwaAtrybutu="wartość" %>
np. : %@page language="java" import="java.sql.*,
naszPakiet.Klasa1" %
Deklaracje: Defincje funkcji i używanych zmiennych.
Podawane w tagach: <%! … %>
Skryplety (scriplets):
Poprawny kod Java, do umieszczenia w metodzie _jspService(…).
Umieszczane w „zwykłych” znacznikach <% … %>. Zmiennymi
predefiniowanymi, do których mogą odwoływać się skryplety są:
request, response, session, out,
oraz pageContext, application,config i exception.
Wyrażenia:
Dowolne dane tekstowe, przeznaczone do umieszczenia na
docelowej stronie. Przekazywane wewnątrz znaczników <%= … %>.
Np. <%= new java.util.Date() %>
37
ASP .NET
• Strony są kompilowane przez kompilator zgodny z CLR;
dostępne kompilatory dla VB, VC++, Java, C# i inne.
• Zastosowanie cache;
• Wyższy poziom abstrakcji:
Styl tworzenia bardzo przypominający budowę tradycyjnych
aplikacji w Windows. Ukryte przed programistą zostają szczegóły
związane z interakcją wywołań i odpowiadająca im dystrybucja
kodu pomiędzy wykonywany po stronie klienta oraz po stronie
serwera.
• Separacja kodu pomiędzy interfejs użytkownika: strony
.aspx oraz kod serwerowy (tzw. code-behind pages):
.aspx.cs, .aspx.vb lub inne.
• Rozbudowane udogodnienia bazodanowe.
38