Java Servlet i Java Server Pages
|
|
- Paweł Baranowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH ZAMÓW CENNIK CZYTELNIA SPIS TREŒCI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY KSI EK ONLINE Java Servlet i Java Server Pages Autor: Marty Hall T³umaczenie: Piotr Rajca ISBN: Tytu³ orygina³u: Core Servlets and JavaServer Pages Format: B5, stron: 530 Niniejsza ksi¹ ka przeznaczona jest dla prawdziwych programistów. Jej celem nie jest przedstawienie potencja³u internetowego handlu ani sposobów, w jaki aplikacje internetowe mog¹ zrewolucjonizowaæ przedsiêbiorstwo. Jest to praktyczna ksi¹ ka przeznaczona dla programistów, którzy ju doskonale rozumiej¹, jak istotne jest tworzenie dynamicznych witryn WWW. Zadaniem niniejszej ksi¹ ki jest przedstawienie poprawnego sposobu prowadzenia takiej pracy. Prezentuj¹c metody tworzenia dynamicznych witryn WWW autor stara³ siê uwzglêdniæ najwa niejsze u ywane techniki i opisaæ najczêœciej napotykane problemy. Jednoczeœnie przedstawiono bardzo du o praktycznych zastosowañ (na przyk³ad ponad sto klas Javy). Podano szczegó³owe przyk³ady dla wszystkich najwa niejszych i najczêœciej wykorzystywanych mo liwoœci, a tak e zamieszczono podsumowania przedstawiaj¹ce równie rzadziej wykorzystywane zastosowania i wskazano dostêpne w Internecie Ÿród³a informacji dotycz¹ce interfejsów programistycznych (API) umo liwiaj¹cych wykorzystanie tych najrzadziej stosowanych mo liwoœci. Nie ma tu wielu pobie nych opisów licznych technologii. Nie by³o zamierzeniem autora, aby niniejsza ksi¹ ka sta³a siê ostatecznym Ÿród³em informacji na wszystkie omawiane w niej tematy. S¹ to zagadnienia bardzo obszerne. Przyk³adowo, istnieje kilka ksi¹ ek o porównywalnej objêtoœci poœwiêconych wy³¹cznie JDBC. Nale y podkreœliæ, e poszczególne zagadnienia zosta³y tutaj przedstawione na tyle szczegó³owo, aby Czytelnik móg³ samodzielnie rozpocz¹æ tworzenie programów nadaj¹cych siê do praktycznego zastosowania. Jedynym warunkiem jest znajomoœæ podstaw jêzyka Java: jego zastosowania i wykorzystywania. W razie braku tych umiejêtnoœci Czytelnik powinien zaznajomiæ siê z zasadami programowania w tym jêzyku. Wydawnictwo Helion ul. Chopina Gliwice tel. (32) helion@helion.pl
2 O Autorze...13 Wprowadzenie...15 Część I Serwlety 2.1 i r Rozdział 1. Podstawowe informacje o serwletach i Java Server Pages...25 Serwlety Zalety serwletów w porównaniu ze zwykłymi programami CGI...27 Efektywność Wygoda Duże możliwości Przenośność Bezpieczeństwo Niewielkie koszty Java Server Pages Zalety JSP W porównaniu z Active Server Pages (ASP) W porównaniu z PHP W porównaniu z serwletami W porównaniu z Server-Side Includes (SSI) W porównaniu z językiem JavaScript W porównaniu ze statycznym kodem HTML Instalacja i konfiguracja Zdobywanie oprogramowania do obsługi serwletów i dokumentów JSP...32 Zapamiętaj adres lub zainstaluj dokumentację Java Servlet oraz JSP API...34 Wskazanie klas używanych przez kompilator Javy...34 Umieszczanie klasy w pakietach Konfiguracja serwera Uruchomienie serwera Kompilacja i instalacja własnych serwletów Rozdział 2. Pierwsze serwlety...41 Podstawowa struktura serwletów Prosty serwlet generujący zwykły tekst Kompilacja i instalacja serwletów Wywoływanie serwletów Serwlety generujące kod HTML
3 4 Java Servlet i Java Server Pages Umieszczanie serwletów w pakietach Tworzenie serwletów należących do konkretnego pakietu...48 Kompilacja serwletów należących do pakietów Wywoływanie serwletów należących do pakietów...50 Proste narzędzia pomocne podczas tworzenia dokumentów HTML...51 Cykl istnienia serwletów Metoda init Metoda service Metody doget, dopost oraz doxxx Interfejs SingleThreadModel Metoda destroy Przykład zastosowania parametrów inicjalizacyjnych Przykład wykorzystania inicjalizacji serwletu i daty modyfikacji strony...62 Testowanie serwletów WebClient: interaktywna wymiana informacji z serwerem WebClient HttpClient NetworkClient SocketUtil CloseableFrame LabeledTextField Interruptible Rozdział 3. Obsługa żądań: dane przesyłane za pomocą formularzy...79 Znaczenie informacji przesyłanych za pomocą formularzy...79 Odczytywanie danych formularzy w serwletach Przykład: odczytanie trzech konkretnych parametrów Przykład: odczytanie wszystkich parametrów Serwis rejestracji życiorysów Filtrowanie łańcuchów w poszukiwaniu znaków specjalnych HTML...97 Implementacja filtrowania Przykład Rozdział 4. Obsługa żądań: nagłówki żądań HTTP Odczytywanie wartości nagłówków żądania w serwletach Wyświetlanie wszystkich nagłówków Nagłówki żądań protokołu HTTP Przesyłanie skompresowanych stron Ograniczanie dostępu do stron Rozdział 5. Dostęp do standardowych zmiennych CGI Odpowiedniki zmiennych CGI dostępne w serwletach Serwlet wyświetlający wartości zmiennych CGI Rozdział 6. Generowanie odpowiedzi: kody statusu Określanie kodów statusu Kody statusu protokołu HTTP 1.1 oraz ich przeznaczenie Interfejs użytkownika obsługujący różne serwisy wyszukujące Rozdział 7. Generowanie odpowiedzi: nagłówki odpowiedzi HTTP Określanie nagłówków odpowiedzi z poziomu serwletów Nagłówki odpowiedzi protokołu HTTP 1.1 oraz ich znaczenie Trwałe przechowywanie stanu serwletu i automatyczne odświeżanie stron Stosowanie trwałych połączeń HTTP Wykorzystanie serwletów do generowania obrazów GIF...168
4 Spis treści 5 Rozdział 8. Obsługa cookies Korzyści płynące ze stosowania cookies Identyfikacja użytkowników podczas trwania sesji na witrynach komercyjnych..177 Unikanie konieczności podawania nazwy użytkownika i hasła Dostosowywanie witryny Dobór reklam Niektóre problemy związane ze stosowaniem cookies Narzędzia obsługi cookies dostępne w serwletach Tworzenie cookies Atrybuty cookies Umieszczanie cookies w nagłówkach odpowiedzi Odczytywanie cookies nadesłanych przez przeglądarkę Przykłady generowania i odczytywania cookies Proste narzędzia do obsługi cookies Odnajdywanie cookie o określonej nazwie Tworzenie cookies o długim czasie istnienia Interfejs wyszukujący z możliwością zapamiętywania ustawień Rozdział 9. Śledzenie sesji Potrzeba śledzenia sesji Cookies Przepisywanie adresów URL Ukryte pola formularzy Śledzenie sesji w serwletach Narzędzia programistyczne do śledzenia sesji Pobieranie obiektu HttpSession skojarzonego z bieżącym żądaniem Pobieranie informacji skojarzonych z sesją Kojarzenie informacji z sesją Kończenie sesji Przepisywanie adresów URL przesyłanych do przeglądarki Serwlet generujący indywidualny licznik odwiedzin dla każdego użytkownika Internetowy sklep wykorzystujący koszyki i śledzenie sesji Tworzenie interfejsu użytkownika Obsługa zamówień To czego nie widać: implementacja koszyka i katalogu produktów Część II Java Server Pages...r Rozdział 10. Elementy skryptowe JSP Elementy skryptowe Tekst szablonu Wyrażenia JSP Predefiniowane zmienne Składnia XML stosowana w wyrażeniach Zastosowanie wyrażeń jako wartości atrybutów Przykład Skryptlety JSP Wykorzystanie skryptletów do warunkowego wykonania fragmentu strony JSP.230 Specjalna składnia skryptletów Deklaracje JSP Specjalna składnia zapisu deklaracji Predefiniowane zmienne
5 6 Java Servlet i Java Server Pages Rozdział 11. Dyrektywa page: strukturalizacja generowanych serwletów Atrybut import Katalogi służące do przechowywania własnych klas Przykład Atrybut contenttype Generowanie zwykłych dokumentów tekstowych Generowanie arkuszy kalkulacyjnych programu Microsoft Excel Atrybut isthreadsafe Atrybut session Atrybut buffer Atrybut autoflush Atrybut extends Atrybut info Atrybut errorpage Atrybut iserrorpage Atrybut language Składnia XML zapisu dyrektyw Rozdział 12. Dołączanie plików i apletów do dokumentów JSP Dołączanie plików w czasie przekształcania strony Dołączanie plików podczas obsługi żądań Dołączanie apletów związanych z Java Plug-In Znacznik akcji jsp:plugin Znaczniki akcji jsp:param oraz jsp:params Znacznik akcji jsp:fallback Przykład: Generowanie tekstu z cieniem Rozdział 13. Wykorzystanie komponentów JavaBeans w dokumentach JSP Podstawowe sposoby użycia komponentów Dostęp do właściwości komponentów Określanie właściwości komponentów prosty przypadek Instalacja klas komponentów Przykład: StringBean Określanie wartości właściwości komponentów Kojarzenie właściwości z parametrami wejściowymi Automatyczna konwersja typów Kojarzenie wszystkich właściwości z parametrami wejściowymi Wspólne wykorzystywanie komponentów Warunkowe tworzenie komponentów Rozdział 14. Tworzenie bibliotek znaczników Elementy tworzące bibliotekę znaczników Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Definiowanie prostych znaczników Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Przypisywanie atrybutów znacznikom Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP
6 Spis treści 7 Dołączanie zawartości znacznika Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Opcjonalne dołączanie zawartości znacznika Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Manipulowanie zawartością znacznika Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Wielokrotne dołączanie lub obsługa zawartości znacznika Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Stosowanie znaczników zagnieżdżonych Klasy obsługi znaczników Plik deskryptora biblioteki znaczników Plik JSP Rozdział 15. Integracja serwletów i dokumentów JSP Przekazywanie żądań Stosowanie zasobów statycznych Przekazywanie informacji do strony docelowej Interpretacja względnych adresów URL przez stronę docelową Inne sposoby pobierania obiektu RequestDispatcher Przykład: internetowe biuro podróży Dołączanie danych statycznych lub dynamicznych Przykład: prezentacja nieprzetworzonych wyników zwracanych przez serwlety lub strony JSP Przekazywanie żądań ze stron JSP Część III Technologie pomocnicze...r Rozdział 16. Formularze HTML Jak przesyłane są dane z formularzy HTML Element FORM Tekstowe elementy kontrolne Pola tekstowe Pola hasła Wielowierszowe pola tekstowe Przyciski Przycisk SUBMIT Przyciski RESET Przyciski JavaScript Pola wyboru i przyciski opcji Pola wyboru Przyciski opcji Listy i listy rozwijane Element kontrolny służący do przesyłania plików Mapy odnośników obsługiwane na serwerze IMAGE standardowe mapy odnośników obsługiwane po stronie serwera ISMAP alternatywny sposób tworzenia map odnośników obsługiwanych po stronie serwera
7 8 Java Servlet i Java Server Pages Rozdział 17. Pola ukryte Grupowanie elementów kontrolnych Określanie kolejności poruszania się pomiędzy elementami formularzy Testowy serwer EchoServer ThreadedEchoServer NetworkServer Zastosowanie apletów jako interfejsu użytkownika dla serwletów Przesyłanie danych metodą GET i wyświetlanie wynikowej strony Narzędzie korzystające z wielu serwisów wyszukujących Przesyłanie danych metodą GET i bezpośrednie przetwarzanie5 wyników (tunelowanie HTTP) Odczyt danych binarnych lub danych ASCII Odczyt serializowanych struktur danych Przeglądarka zapytań wykorzystująca serializację obiektów i tunelowanie Przesyłanie danych metodą POST i bezpośrednie przetwarzanie5 danych (tunelowanie HTTP) Aplet przesyłający dane metodą POST Pomijanie serwera HTTP Rozdział 18. JDBC oraz zarządzanie pulami połączeń Podstawowe etapy wykorzystania JDBC Załadowanie sterownika Określenie adresu URL połączenia Nawiązanie połączenia Utworzenie polecenia Wykonanie zapytania Przetworzenie wyników Zamknięcie połączenia Prosty przykład wykorzystania JDBC Narzędzia ułatwiające korzystanie z JDBC Wykorzystanie narzędzi ułatwiających obsługę JDBC Interaktywna przeglądarka zapytań Kod przeglądarki zapytań Przygotowane polecenia (prekompilowane zapytania) Zarządzanie pulami połączeń Zarządzanie pulami połączeń: studium zagadnienia Współużytkowanie pul połączeń Współużytkowanie pul połączeń z zastosowaniem kontekstu serwletu Współużytkowanie pul połączeń z zastosowaniem klas singleton Dodatki...r Dodatek A Krótki przewodnik po serwletach i JSP Prezentacja serwletów i JSP Zalety serwletów Zalety JSP Bezpłatnie dostępne oprogramowanie do obsługi serwletów i JSP Dokumentacja Kompilacja serwletów informacje podawane w zmiennej środowiskowej CLASSPATH Standardowe katalogi serwera Tomcat Standardowe katalogi serwera Tomcat
8 Spis treści 9 Standardowe katalogi serwera JSWDK Standardowe katalogi serwera Java Web Server Pierwsze serwlety Prosty serwlet Instalacja serwletów Uruchamianie serwletów Cykl istnienia serwletów Obsługa żądań dane przesyłane z formularzy Odczyt parametrów Przykład serwletu Przykład formularza Filtrowanie znaków specjalnych HTML Obsługa żądań nagłówki żądań HTTP Metody odczytujące nagłówki żądania Inne informacje o żądaniu Najczęściej używane nagłówki żądań protokołu HTTP Dostęp do standardowych zmiennych CGI Możliwości, które nie zostały opisane gdzie indziej Odpowiedniki zmiennych CGI dostępne w serwletach Generowanie odpowiedzi: Kody statusu HTTP Format odpowiedzi HTTP Metody określające kod statusu Kategorie kodów statusu Najczęściej wykorzystywane kody statusu protokołu HTTP Generowanie odpowiedzi nagłówki odpowiedzi protokołu HTTP Generowanie dowolnych nagłówków Generowanie najczęściej używanych nagłówków Najczęściej używane nagłówki odpowiedzi protokołu HTTP Generowanie obrazów GIF przez serwlety Obsługa cookies Typowe zastosowania cookies Problemy napotykane przy stosowaniu cookies Ogólny sposób użycia cookies Metody obsługi cookies Śledzenie sesji Pobieranie informacji o sesji getvalue Kojarzenie informacji z sesją putvalue Metody interfejsu HttpSession Kodowanie adresów URL Elementy skryptowe JSP Typy elementów skryptowych Tekst szablonu Predefiniowane zmienne Dyrektywa page określanie postaci generowanych serwletów Atrybut import Atrybut contenttype Przykład użycia atrybutu contenttype Przykład wykorzystania metody setcontenttype Atrybut isthreadsafe Atrybut session Atrybut buffer Atrybut autoflush Atrybut extends Atrybut info
9 10 Java Servlet i Java Server Pages Atrybut errorpage Atrybut iserrorpage Atrybut language Zapis zgodny z XML Dołączanie plików i apletów do dokumentów JSP Dołączanie plików w czasie przekształcania strony Dołączanie plików w czasie obsługi żądania Aplety obsługiwane przy użyciu Java Plug-In: Prosty przypadek Atrybuty znacznika jsp:plugin Parametry określane w kodzie HTML: jsp:param Tekst alternatywny Wykorzystanie komponentów JavaBeans w dokumentach JSP Podstawowe wymagania jakie należy spełnić, aby klasa mogła być uznana za komponent Podstawowe sposoby użycia komponentów Kojarzenie właściwości z parametrami przesłanymi w żądaniu Wspólne wykorzystywanie komponentów: atrybut scope znacznika akcji jsp:usebean Warunkowe tworzenie komponentów Tworzenie bibliotek znaczników Klasa obsługi znacznika Plik deskryptora biblioteki znaczników Plik JSP Przypisywanie atrybutów znacznikom Dołączanie zawartości znacznika Opcjonalne dołączanie zawartości znacznika Przetwarzanie zawartości znacznika Wielokrotne dołączanie lub przetwarzanie zawartości znacznika Stosowanie zagnieżdżonych znaczników Integracja serwletów i dokumentów JSP Opis ogólny Składnia służąca do przekazania żądania Przekazywanie żądań do zwykłych dokumentów HTML Tworzenie globalnie dostępnych komponentów JavaBeans Tworzenie komponentów JavaBeans dostępnych w sesji Interpretacja względnych adresów URL na stronie docelowej Alternatywne sposoby pobierania obiektu RequestDispatcher5 (wyłącznie Java Servlet 2.2) Dołączenie danych statycznych lub dynamicznych Przekazywanie żądań ze stron JSP Stosowanie formularzy HTML Element FORM Pola tekstowe Pola hasła Obszary tekstowe Przyciski SUBMIT Alternatywna postać przycisków SUBMIT Przyciski RESET Alternatywna postać przycisków RESET Przyciski JavaScript Alternatywna postać przycisków JavaScript Pola wyboru Przyciski opcji Listy rozwijane
10 Spis treści 11 Elementy kontrolne umożliwiające przesyłanie plików na serwer Mapy odnośników obsługiwane na serwerze Pola ukryte Możliwości dostępne w przeglądarce Internet Explorer Wykorzystanie apletów jako interfejsu użytkownika dla serwletów Przesyłanie danych metodą GET i wyświetlanie strony wynikowej Przesyłanie danych metodą GET i bezpośrednie przetwarzanie5 wyników (tunelowanie HTTP) Przesyłanie serializowanych danych kod apletu Przesyłanie serializowanych danych kod serwletu Przesyłanie danych metodą POST i bezpośrednie przetwarzanie5 wyników (tunelowanie HTTP) Pomijanie serwera HTTP JDBC i zarządzanie pulami połączeń z bazami danych Podstawowe etapy wykorzystania JDBC Narzędzia obsługi baz danych Przygotowane polecenia (prekompilowane zapytania) Etapy implementacji puli połączeń Skorowidz...515
11 Rozdział 9. W niniejszym rozdziale przedstawiono sposób, w jaki można wykorzystać mechanizmy śledzenia sesji dostępne w serwletach w celu przechowywania informacji o użytkownikach poruszających się po witrynie WWW. Potrzeba lledzenia sesji Cookies HTTP jest protokołem bezstanowym oznacza to, że za każdym razem, gdy przeglądarka pobiera stronę WWW, tworzone jest niezależne połączenie z serwerem. Serwer nie przechowuje automatycznie żadnych kontekstowych informacji skojarzonych z przeglądarką, która to połączenie nawiązała. Nawet w przypadku serwerów, które wykorzystują trwałe połączenia HTTP i za pomocą jednego połączenia obsługują wiele żądań zgłaszanych w niewielkich odstępach czasu, nie ma żadnych wbudowanych mechanizmów ułatwiających przechowywanie takich kontekstowych informacji. Brak takiego mechanizmu może powodować liczne problemy. Szczególnie widoczne są one w przypadku sklepów internetowych, gdzie istnieje oczywista potrzeba śledzenia sesji użytkownika. Znane są trzy podstawowe sposoby rozwiązywania problemów tego typu cookies, przepisywanie adresów URL oraz zastosowanie ukrytych mpól formularzy. Istnieje możliwość wykorzystywania cookies w celu przechowywania informacji o sesji w sklepie internetowym, a każde kolejne połączenie z tym sklepem może powodować odszukanie danej sesji i pobranie przechowywanych na serwerze informacji o niej. Na przykład, utworzony w tym celu serwlet mógłby przeprowadzać następujące czynności: #8621.#/798;36%2+2./ # ,/203#/72/;+78+,/ +78+,/8+,-+3, $+,-/+2#/77
12 194 Część I Serwlety 2.1 i ,-+3, #/7Г203#/7 33/-33/#/72/;33/###Г.#/7 7/773233/7/8 +8 6/74327/+..33/-33/#/7 Dzięki temu podczas obsługi kolejnych żądań, na podstawie wartości cookie ###, serwer może pobierać z tablicy 8+,-+3,+2+ tablicę asocjacyjną 203#/7 zawierającą informacje o konkretnej sesji. Jest to bardzo dobre rozwiązanie, które często jest wykorzystywane przy obsłudze sesji. Niemniej jednak wciąż istnieje potrzeba posiadania narzędzi programistycznych wyższego poziomu, które pozwoliłyby na implementację bardziej wyrafinowanych rozwiązań. Choć serwlety dysponują łatwymi w obsłudze narzędziami wysokiego poziomu przeznaczonymi do obsługi cookies (opisano je w rozdziale 8.), wciąż jednak istnieje stosunkowo dużo drobnych czynności, które należy przeprowadzić samodzielnie. Do czymnności tych można zaliczyć: J pobieranie cookie przechowującego identyfikator sesjmi (możliwe jest nadesłanie kilku cookies z jednej przeglądarki); J określenie odpowiedniego czasu wygaśnięcia ważności mcookie (sesje, które są nieaktywne przez ponad 24 godziny prawdopodobnie powimnny zostać zamknięte); J skojarzenie tablic asocjacyjnych z każdym żądaniem; J generowanie unikalnego identyfikatora sesji. Należy podkreślić, że ze względu na doskonale znane i oczywiste zagrożenia prywatności, jakie wiążą się z wykorzystywaniem cookies (patrz podrozdział rozdziału 8. Niektóre problemy związane ze stosowaniem cookies ), niektórzy użytkownicy wyłączają ich obsługę. Wynika z tego potrzeba posiadania, oprócz protokołu wysokiego poziomu, także alternatywnego rozwiązania tego problmemu. Przepisywanie adresów URL Rozwiązanie to polega na dopisywaniu na końcu adresu URL pewnych dodatkowych, identyfikujących sesję danych, które pozwalają serwerowi na skojarzenie przekazanego identyfikatora z przechowywanymi informacjami dotyczącymi danej sesji. Na przykład, w adresie URL dołączone informacje o sesji mają postać sessionid=1234. Rozwiązanie to jest bardzo funkcjonalne, a przy tym posiada tę dodatkową zaletę, że można z niego korzystać nawet w przypadku przeglądarek nie obsługujących cookies oraz wtedy, gdy użytkownik wyłączył obsługę cookies. Jednak także i to rozwiązanie zmusza program działający na serwerze do wykonywania wielu prostych, lecz uciążliwych czynności. Poza tym należy zwracać szczególną uwagę, aby każdy adres URL odwołujący się do danej witryny i przekazywany do przeglądarki użytkownika (nawet w sposób niejawny, przykładowo, za pomocą nagłówka ), został uzupełniony do dodatkowe informacje. Inną niedogodnością rozwiązania polegającego na przepisywaniu adresów URL jest fakt, że w po zakończeniu sesji i późniejszym nawiązania kolejnej sesji na danej witrynie za pomocą zapamiętanego adresu lub połączenia, wszystkie dotyczące jej informacje są tracone.
13 Rozdział 9. Śledzenie sesji 195 Ukryte pola formularzy W formularzach HTML można umieszczać pola o następującmej postaci: %$$ 7/7+&% Wykorzystanie takiego elementu oznacza, że podczas przesyłania formularza podana nazwa elementu oraz jego wartość są dołączane do pozostałych informacji przekazywanych na serwer. Więcej informacji na temat ukrytych pól formularzy znajduje się w podrozdziale rozdziału 16. Pola ukryte. W takich ukrytych polach formularzy można przechowywać informacje na temat sesji. Jednak wykorzystywanie tej metody ma jedną podstawową wadę każda strona witryny musi byćm generowana dynamicznie. kledzenie sesji w serwletach Serwlety udostępniają bardzo dobre rozwiązanie problemu śledzenia sesji interfejs 884#/7732. Możliwości funkcjonalne tego interfejsu bazują na wykorzystywaniu cookies lub przepisywania adresów URL. W rzeczywistości większość serwerów wykorzystuje cookies, pod warunkiem, że są one obsługiwane przez przeglądarkę użytkownika. Jeśli przeglądarka nie obsługuje cookies lub gdy ich obsługa została jawnie wyłączona, często automatycznie stosowane jest przepisywanie adresów URL. W ten sposób autorzy serwletów nie muszą jawnie obsługiwać cookies ani informacji dołączanych do adresów URL, a zyskują bardzo wygodny sposób przechowywania dowolnych obiektów skojarzonych z każdą sesją. Narzdzia programistyczne do lledzenia sesji Wykorzystanie śledzenia sesji w serwletach jest bardzo proste i wiąże się z pobieraniem obiektu sesji skojarzonego z obsługiwanym żądaniem, w razie konieczności z tworzeniem nowego obiektu sesji, pobieraniem informacji skojarzonych z sesją, zapisywaniem informacji w obiekcie sesji oraz z usuwaniem przerwanych lub zakończonych sesji. Dodatkowo, jeśli do użytkownika przekazywane są jakiekolwiek adresy URL odwołujące się do danej witryny i jeśli jest stosowane przepisywanie adresów URL, to do każdego adresu URL należy dołączać informacje mo sesji. Pobieranie obiektu HttpSession skojarzonego z biercym rdaniem Obiekt 884#/7732 można pobierać za pomocą metody 1/8#/7732 interfejsu 884 #/6:/8"/59/78. System pobiera identyfikator użytkownika z cookie lub z informacji dołączonych do adresu URL w niewidoczny sposób, a następnie używa go jako klucza przy pobieraniu odpowiedniego elementu z tablicy utworzonych wcześniej obiektów
14 196 Część I Serwlety 2.1 i #/7732. Wszystkie te czynności są wykonywane w sposób niezauważalny dla programisty, który jedynie wywołuje metodę 1/8#/7732. Jeśli wywołanie tej metody zwraca wartość 29, oznacza to, że z danym użytkownikiem jeszcze nie skojarzono żadnej sesji, a zatem można ją utworzyć. Sesje są tworzone bardzo często, zatem dostępna jest specjalna opcja pozwalająca na utworzenie nowej sesji, jeśli sesja dla danego użytkownika jeszcze nie istnieje. W tym celu wystarczy przekazać wartość 869/ w wywołaniu metody 1/8#/7732. A zatem, pierwszy krok przy rozpoczynaniu sesji zazwyczaj wygląda w następujący sposób: 884#/77327/7+6/59/781/8#/ / Sprawdzenie, czy dana sesja istniała już wcześniej, lub czy też została właśnie utworzona, jest możliwe za pomocą metody 7/;. Pobieranie informacji skojarzonych z sesj Obiekty 884#/7732 są przechowywane na serwerze. Są one automatycznie kojarzone z żądaniami podczas wykorzystywania niewidocznych mechanizmów, takich jak cookies lub przepisywanie adresów URL. Obiekty te posiadają wbudowaną strukturę danych, która umożliwia im przechowywanie dowolnej liczby kluczy oraz skojarzonych z nimi wartości. W specyfikacjach Java Servlet 2.1 oraz wcześniejszych do pobrania wartości uprzednio zapisanej w sesji stosuje się wywołanie 7/77321/8&+9/ 2+;+86,989. Metoda 1/8&+9/ zwraca obiekt typu,/-8, a zatem przywrócenie oryginalnego typu danej zapisanej w sesji jest możliwe poprzez zastosowanie odpowiedniego rzutowania typów. Metoda zwraca wartość 29, jeśli nie ma atrybutu o podanej nazwie. Oznacza to, że przed wywołaniem jakichkolwiek metod obiektu skojarzonego z sesją należy sprawdzić, czy nie jest mto wartość 29. W specyfikacji Java Servlet 2.2 metoda 1/8&+9/ została uznana za przestarzałą i zastąpiono ją metodą 1/8886,98/. Nazwa tej metody lepiej odpowiada metodzie 7/8886,98/ (w specyfikacji 2.1 metodzie 1/8&+9/ odpowiadała metoda 498&+9/, a nie 7/8&+9/). W przykładach przedstawionych w niniejszej książce zastosowano metodę 1/8&+9/, gdyż nie wszystkie dostępne na rynku komercyjne mechanizmy obsługi serwletów są zgodne ze specyfikacją 2.2. Poniżej podano przykład wykorzystania mechanizmu śledzenia sesji. Założono, że # jest klasą zdefiniowaną w celu przechowywania informacji o zamawianych produktach (implementację tej klasy zamieszczono w podrozdziale Internetowy sklep wykorzystujący koszyki i śledzenie sesji ). 884#/77327/7+6/59/781/8#/ / # # /7+1/8&+9/ ;7/72/+/7-/ /;# /7+498&+9/ Г37 63,3737/37 W większości przypadków nazwa atrybutu jest znana, a celem działania jest pobranie wartości skojarzonej z tą nazwą. Istnieje także możliwość pobrania nazw wszystkich atrybutów skojarzonych z daną sesją służy do tego metoda 1/8&+9/+/7 zwracająca
15 Rozdział 9. Śledzenie sesji 197 tablicę łańcuchów znaków. Ta metoda jest jedynym sposobem określenia nazw atrybutów w przypadku korzystania z mechanizmów obsługi serwletów zgodnych ze specyfikacją Java Servlet 2.1. W przypadku mechanizmów zgodnych ze specyfikacją 2.2 nazwy atrybutów można pobierać za pomocą metody 1/8886,98/+/7. Metoda ta działa w bardziej spójny sposób, gdyż zwraca obiekt 29/6+832, podobnie jak metody 1/8/+./6+/7 oraz 1/8 +6+/8/6+/7 interfejsu 884#/6:/8"/59/78. Najczęściej wykorzystywanymi danymi są dane bezpośrednio skojarzone z sesją, niemniej jednak dostępne są także inne, użyteczne informacje dotyczące sesji. Poniżej przedstawiono metody interfejsu 884#/7732: public Object getvalue(string nazwa) public Object getattribute(string nazwa) Metody te pobierają z obiektu sesji wartość, która umprzednio została w nim zapisana. Obydwie metody zwracają wartość 29, jeśli z podaną nazwą nie jest skojarzona żadna wartość. W mechanizmach obsługi serwmletów zgodnych ze specyfikacją Java Servlet 2.1 należy używać metody 1/8&+9/. W mechanizmach zgodnych ze specyfikacją 2.2 można używać obydwu metodm, jednak zalecane jest stosowanie metody 1/8886,98/, gdyż metoda 1/8&+9/ została uznana za przestarzałą. public void putvalue(string nazwa, Object wartolć) public void setattribute(string nazwa, Object wartoelć) Te metody kojarzą wartość atrybutu z jego nazwą. W mecmhanizmach obsługi serwletów zgodnych ze specyfikacją Java Servlet 2.1 należmy używać metody 498&+9/, natomiast w mechanizmach zgodnych ze specyfikacją m2.2 można stosować obydwie metody (rekomendowana jest metoda m7/8886,98/, gdyż metoda 498&+9/ została uznana za przestarzałą). Jeśli obiekt przekazamny w wywołaniu metody 498&+9/ lub 7/8886,98/ implementuje interfejs 884#/ /2/6, to po zapisaniu tego obiektu w sesji jest wywoływana jego metoda :+9/392.. Podobnie, jeśli obiekt implementuje interfejs 884#/ /2/6, po jego usunięciu z sesji jest wywoływana metoda :+9/%2,392. tego obiektu. public void removevalue(string nazwa) public void removeattribute(string nazwa) Obydwie te metody powodują usunięcie wartości skojarmzonych z podaną nazwą. Jeśli usuwana wartość implementuje interfejs 884#/ /2/6, wywoływana jest jej metoda :+9/%2,392.. W mechanizmach obsługi serwletów zgodnych ze specyfikacją Java Servlet 2.1 należy używać mmetody 6/3:/&+9/. W mechanizmach zgodnych ze specyfikacją 2.2 preferowanme jest użycie metody 6/3:/886,98/, choć w celu zapewnienia zgodności z poprzednimi wersjami oprogramowania można także używać metody 6/3:/&+9/ (uznawanej za przestarzałą).
16 198 Część I Serwlety 2.1 i 2.2 public String[] getvaluenames() public Enumeration getattributenames() Te metody zwracają nazwy wszystkich atrybutów w danemj sesji. W przypadku mechanizmów obsługi serwletów zgodnych ze specyfikacmją Java Servlet 2.1 należy używać metody 1/8&+9/+/7. W przypadku mechanizmów zgodnych ze specyfikacją 2.2 metoda ta jest wciąż dostępna, lecmz uznana za przestarzałą i z tego względu należy stosować metodę 1/8886,98/+/7. public String getid() Jest to metoda zwracająca unikalny identyfikator generowany dla każdej z sesji. Identyfikator ten jest czasami używany jako nazwa kmlucza. Dotyczy to sytuacji, gdy z sesją jest skojarzona tylko jedna wartość lub mgdy informacje o sesji są rejestrowane. public boolean isnew() Jest to metoda zwracająca wartość 869/, jeśli klient jeszcze nigdy nie korzystał z sesji (zazwyczaj dlatego, że sesja została właśnie mutworzona, a odbierane żądania jeszcze się do niej nie odwoływały). Jeśli danam sesja już istnieje od jakiegoś czasu, metoda ta zwraca wartość 0+7/. public long getcreationtime() Ta metoda zwraca czas utworzenia sesji wyrażony jakmo liczba milisekund, jakie upłynęły od początku 1970 roku (GMT). Aby przekształcić mtę wartość do powszechnie stosowanej formy, należy przekazać jmą do konstruktora klasy +8/ lub posłużyć się metodą 7/8$/27 klasy 6/136+2+/2.+6. public long getlastaccesstime() Metoda ta zwraca czas ostatniego przesłania sesji z pmrzeglądarki na serwer. Czas ten jest wyrażony jako liczba milisekund, jakime upłynęły od początku 1970 roku (GMT). public int getmaxinactiveinterval() public void setmaxinactiveinterval(int ilolćsekund) Pierwsza z tych metod pobiera, a druga określa czas m(wyrażony w sekundach), w którym klient musi nadesłać żądanie, aby sesja niem została automatycznie unieważniona. Jeśli w wywołaniu metody 7/8+2+-8:/28/6:+ jest podana wartość mniejsza od zera, dana sesja nigdy nie zostmanie automatycznie unieważniona. Należy pamiętać, iż limit czasu oczekimwania sesji jest przechowywany na serwerze i nie odpowiada dacie wygmaśnięcia ważności cookies, która jest przesyłana do przeglądarki. public void invalidate() Wywołanie tej metody powoduje unieważnienie sesji im usunięcie z niej wszystkich skojarzonych z nią obiektów.
17 Rozdział 9. Śledzenie sesji 199 Kojarzenie informacji z sesj Zgodnie z tym, co podano w poprzednim podrozdziale, informacje skojarzone z sesją można odczytywać za pomocą metody 1/8&+9/ (stosowanej w mechanizmach obsługi serwletów zgodnych ze specyfikacją Java Servlet 2.1) oraz 1/8886,98/ (stosowanej w mechanizmach obsługi serwletów zgodnych ze specyfikacją 2.2). Aby podać te informacje w przypadku korzystania z mechanizmów obsługi serwletów zgodnych ze specyfikacją 2.1, należy posłużyć się metodą 498&+9/, podając w jej wywołaniu klucz oraz wartość. W przypadku wykorzystywania mechanizmów zgodnych ze specyfikacją Java Servlet 2.2, należy zastosować metodę 7/8886,98/. Nazwa tej metody jest bardziej spójna z ogólnie stosowanym nazewnictwem, gdyż występują tu notacje 7/81/8 stosowane w komponentach JavaBeans. Aby wartości przechowywane w sesji mogły dawać jakieś efekty w chwili ich zapisywania w sesji, używane obiekty muszą implementować interfejs 884#/ /2/6. Dzięki temu za każdym razem, gdy za pomocą metody 498&+9/ lub 7/8886,98/ nastąpi skojarzenie jakiegoś obiektu z sesją, zostanie wywołana jego metomda :+9/392.. Trzeba pamiętać, że metody 498&+9/ oraz 7/8886,98/ zastępują wszelkie wartości skojarzone z podaną nazwą. Jeśli trzeba usunąć tę wartość bez podawania zamiennika, należy posłużyć się metodą 6/3:/&+9/ (w przypadku korzystania z mechanizmów obsługi serwletów zgodnych ze specyfikacją Java Servlet 2.1) lub 6/3:/886,98/ (w przypadku korzystania z mechanizmów obsługi serwletów zgodnych ze specyfikacją 2.2). Jeśli usuwane obiekty implementują interfejs 884#/ /2/6, wywołanie którejkolwiek z tych metod spowoduje wywołanie metody :+9/%2,392. usuwanego obiektu. Czasami zachodzi potrzeba jedynie zastąpienia istniejącej wartości atrybutu. W takim przypadku można zastosować metodę przedstawioną w drugim wierszu poniższego przykładu (określającego wartość atrybutu 6/0/ /). Jeżeli należy pobrać aktualną wartość atrybutu i zmodyfikować ją można posłużyć się przedstawionym w poniższym przykładzie sposobem (operacje wykonywane na atrybucie 46/:3978/). Założono, że w poniższym przykładzie wykorzystywane są dwie klasy klasa # dysponująca metodą +..8/, obiekty której służą do przechowywania informacji o wybranych produktach, oraz klasa udostępniająca statyczną metodę 1/88/ zwracającą produkt na podstawie podanego identyfikatora. Implementacje tych klas zamieszczono w podrozdziale Internetowy sklep wykorzystujący koszyki i śledzenie sesji. 884#/77327/7+6/59/781/8#/ / 7/7+498&+9/6/0/ /Г6/59/781/8/+./6"/0/6/6 # # /7+1/8&+9/46/:3978/ 03729;7/72/+/7-/+.2/ /;# /7+498&+9/46/:3978/Г37 # /59/781/8 +6+/8/68/ /+8+311/88/
18 200 Część I Serwlety 2.1 i 2.2 Koczenie sesji Sesja automatycznie staje się nieaktywna, jeśli odstęp pomiędzy kolejnymi żądaniami przekroczy czas określony przez metodę 1/8+2+-8:/28/6:+. W tym momencie automatycznie są usuwane wszelkie skojarzenia obiektów z tą sesją. To z kolei sprawia, że obiekty implementujące interfejs 884#/ /2/6 są zawiadomiane o fakcie usunięcia ich z sesji. Istnieje również sposób jawnego kończenia sesji służmy do tego metoda 2:+.+8/. Przepisywanie adresów URL przesyłanych do przegldarki Jeśli przy śledzeniu sesji wykorzystywana jest metoda przepisywania adresów URL i jeśli do przeglądarki przesyłane są adresy URL odwołujące się do danej witryny, konieczne jest jawne dodawanie do nich informacje o sesji. Wspomniano, że serwlety mogą automatycznie stosować metodę przepisywania adresów URL, jeśli przeglądarka nie obsługuje cookies. Dlatego też należy zawsze kodować wszystkie adresy URL odwołujące się do witryny. Adresy URL odwołujące się do tej samej witryny mogą być stosowane w dwóch przypadkach. Pierwszym z nich są strony WWW generowane przez serwlety. Adresy umieszczane na takich stronach powinny być odpowiednio zakodowane za pomocą metody /2-3./%" interfejsu 884#/6:/8"/74327/. Metoda ta automatycznie stwierdza, czy przepisywanie adresów jest aktualnie wykorzystywane i w razie konieczności dopisuje do adresu informacje o sesji. W przeciwnym razie metoda zwraca adresu URL w oryginalnej postaci. Oto przykład: # %"+7%");1/.29,/;1/.2 #8621+3;3;+2%"6/74327//2-3./%"3612+2%" "+3.3;+2%" Drugim przypadkiem, gdzie podaje się adresy URL odwołujące się do tej samej witryny, jest wywołanie metody 7/2."/.6/-8 (oznacza to, że adresy te są umieszczane w nagłówku odpowiedzi ). W tym przypadku obowiązują inne sposoby określania, czy do adresu należy dodać informacje o sesji czy nie, a zatem nie można posłużyć się metodą /2-3./%". Interfejs 884#/6:/8"/74327/ udostępnia metodę /2-3./ "/.6/-8%", którą można zastosować w takich sytuacjach. Oto przykład zastosowania tej metody: # %"+7%"74/ ;++2+9;+2/ ; /7;7%" # ;+2%"6/74327//2-3./"/.6/-8%" %" 6/74327/7/2."/.6/-8+3.3;+2%" Często się zdarza, że w chwili tworzenia serwletu nie można przewidzieć, czy w przyszłości stanie się on częścią grupy strony wykorzystujących śledzenie sesji. Warto zatem uwzględnić taką możliwość i zapewnić kodowanie w serwlecie wszystkich adresów URL odwołujących się do tej samej witryny.
19 Rozdział 9. Śledzenie sesji 201 Wskazane jest, aby wszystkie adresy URL odwołujce si do tej samej witryny przekształcać za pomoc metod 6/74327//2-3./%" lub 6/74327//2-3./"/.6/-8%", niezalernie od tego, czy serwlet wykorzystuje mechantizmy lledzenia sesji. Serwlet generujcy indywidualny licznik odwiedzin dla kardego urytkownika Listing 9.1 przedstawia prosty serwlet wyświetlający podstawowe informacje dotyczące sesji. Po nawiązaniu połączenia serwlet pobiera istniejącą sesję lub, jeśli sesji jeszcze nie ma, tworzy ją. Obydwie te czynności realizowane są za pomocą jednego wywołania 6/59/781/8#/ /. Następnie serwlet sprawdza, czy w sesji zapisano atrybut typu 28/1/6 o nazwie +--/ Jeśli atrybut ten nie jest odnaleziony, zakłada się, że liczba wcześniejszych odwiedzin danej strony wynosi. Jeśli atrybut +--/ zostanie odnaleziony, serwlet pobiera jego wartość. Wartość ta jest następnie inkrementowana i ponownie kojarzona z sesją poprzez wywołanie metody 498&+9/. Następnie serwlet generuje niewielką tabelę HTML zawierającą informacje o sesji. Rysunek 9.1 przedstawia stronę wygenerowaną przez serwlet podczas pierwszej wizyty użytkownika na witrynie, a rysunek 9.2 po jej kilkukrotnym odświeżeniu. Listing 9.1. ShowSession.java 4+-+1/-36/7/6:/ : :+7/6:/ :+7/6:/ :+2/ : o+././2+7/7+6./ ++;+273;+246o+.//784// ; # :+ 49,--+77#3;#/7732/8/2.7884#/6:/8 49,-:3..3/8884#/6:/8"/59/786/59/78Г 884#/6:/8"/74327/6/74327/ 863;7#/6:/8-/4832Г-/4832 6/74327/7/8328/28$4/8/88-+67/8# 628'68/63986/74327/1/8'68/6 #862188/ 6o+././2+7/7 884#/77327/77326/59/781/8#/ / #8621/+.21 '/-+2+-3,7o917/6;/8;13.2-/74/-0+- +:+#/6:/8++78/83.1/8&+9/2+/78373;+
20 202 Część I Serwlety 2.1 i 2.2 /83.1/8886,98/ 28/1/6+--/ /1/67/77321/8&+9/+--/ / / /;28/1/6 /+.21'8+Г23;/2-/ /7/ /+.21'8+4323;2/ +--/ /;28/1/6+--/ &+9/ '/-+2+-3,7o917/6;/8;13.2-/74/-0+- +:+#/6:/8++78/83.498&+9/2+/78373;+ /83.7/8886,98/ 7/ &+9/+--/773928Г+--/ #/6:/8%88/7/+.'8$8/88/ "2 $"/ /3$;3/7/72 $""$"2 $""2 $$4$'+6832 $"2 $2 $7/77321/8.2 $"2 $+798;36/2+2 $ 2/;+8/7/77321/86/+832$/2 $"2 $ / $ 2/;+8/7/77321/8+78--/77/.$/2 $"2 $33.;/.22 $+--/ $2 $.+2+$ #$+,3,7o91;+2//.2+3;3 49,-: #/6:/8"/59/786/59/78Г 884#/6:/8"/74327/6/74327/ 863;7#/6:/8-/4832Г-/4832.3/86/59/78Г6/74327/
21 Rozdział 9. Śledzenie sesji 203 Rysunek 9.1. Strona wygenerowana po pierwszym wykonaniu serwletu ShowSession Rysunek 9.2. Strona wygenerowana po jedenastym wykonaniu serwletu ShowSession Internetowy sklep wykorzystujcy koszyki i lledzenie sesji W tym podrozdziale przedstawiono rozbudowany przykład opisujący sposób tworzenia internetowego sklepu wykorzystującego mechanizmy śledzenia sesji. W pierwszej części podrozdziału przedstawiono sposób tworzenia stron wyświetlających informacje o sprzedawanych produktach. Kod każdej ze stron prezentujących sprzedawane produkty zawiera wyłącznie tytuł strony oraz identyfimkatory produktów, jakie mają się na niej pojawić. Sam kod HTML każdej z tych stron jest generowany automatycznie przez metody klasy bazowej na podstawie opisów produktów przechowywanych w katalogu. W drugiej części podrozdziału opisano stronę obsługującą zamawianie produktów. Strona ta kojarzy każdego z użytkowników z koszykiem i pozwala użytkownikowi na zmodyfikowanie liczby każdego z zamówionych produktów. W celu prawidłowego kojarzenia użytkowników z koszykami strona ta wykorzystuje mechanizmy
22 204 Część I Serwlety 2.1 i 2.2 śledzenia sesji. W trzeciej części niniejszego podrozdziału przedstawiono implementację koszyka struktury danych reprezentującej poszczególne produkty oraz zamówienia oraz katalogu produktów. Tworzenie interfejsu urytkownika Listing 9.2 przedstawia abstrakcyjną klasę bazową używaną podczas tworzenia serwletów, które mają prezentować sprzedawane produkty. Serwlet ten pobiera identyfikatory produktów, odszukuje je w katalogu, a następnie pobiera z niego nazwy i ceny produktów i wyświetla je na stronie umożliwiającej zamawianie. Listingi 9.3 oraz 9.4 przedstawiają łatwy sposób tworzenia stron zawierających informacje o produktach za pomocą klasy bazowej z listingu 9.2. Wygląd stron zdefiniowanych na listingach 9.3 oraz 9.4 został przedstawiony na rysunkach 9.3 oraz 9.4. Listing 9.2. CatalogPage.java 4+-+1/-36/7/6:/ : :+7/6:/ :+7/6:/ : ,+3; // #/6;/8./.--/438/+7,+3;/97 36/;;/8+2//// o /6;/8378+2/;32+2 '8-/9;/83./288+/137/6;/892+/7 ;;3o+/83.7/88/736+7/8$8/+7,+3;/7 49,-+, //8/2.7884#/6:/8 46:+8/8/8/7 46:+8/#86218/7 46:+8/#862188/ ,-./ ;463.98; /; ;+.+-/7 3,/88/.38+,-8/7,/88/+;/ Г4/o / Г //78./ #/6;/8./.--/43+7/ /,97,;;3o;+8/83.+;-+ ;/83./28+27/6;/8378+2/;;3o /-8/.:3.7/88/7#86218/7 878/78/7 8/72/;8/8/7/ /7/218 8/ /88/8/7
23 Rozdział 9. Śledzenie sesji 205 6/+889o78632Г86/78;;/ /;23;/;2+1o;9 #/6;/8./.--/43+7/ /,97,;;3o;+8/83.+;-+ ;/83./28+27/6;/8378+2/;;3o /-8/.:3.7/8$8/#862188/ 8788/88/ /83.+;4/6;7/3/23-;;/8+889oГ /.++./ Г86+,46/.778+; /78632/Г;;/8+/ ;72+1o;9 Г-/2;2+; /o / 32/3479+./ ;;/8+2/ ;+- o3/2/+;/ /13.+2/ / 46/7o+2/7.37/6;/896./6 +1/,3,+-3.$1/2/63;+246/8/83.Г2+/ ;32+7/6;/ /9,$/ /3,7.;/ 8/+7./.-43+,786+-2/+7/ / ;,6+34-';/83.6.o3;9,/3.43;7/.2 ;46/1.+6-/ 49,-:3..3/8884#/6:/8"/59/786/59/78Г 884#/6:/8"/74327/6/74327/ 863;7#/6:/8-/4832Г-/4832 6/74327/7/8328/28$4/8/88-+67/8# 08/729 6/74327/7/ /74327/#)$)%Г ; 6/ '68/63986/74327/1/8'68/ #/6:/8%88/7/+.'8$8/88/ "2 $"88/ 8/8/ /7/ " 8/8/7 ';/ /3,o./Г/ o+./ Г86/132/+; / $"" /2+2./ /7 $ /7/ # %" 7/6:/8-36/7/6:/876./6 +1/.6/7%"3.;3o9-/7.38/7+/;86272+/ 46/78+o /83./2-3./%" 036%"6/74327//2-3./%"036%"
24 206 Część I Serwlety 2.1 i 2.2 "$036%"2 %$$ 8/ &%8/1/88/2 8/1/8#368/ /1/ /1/8321/ $"2 %$$ #%$ &% $"2 2" "2$.+2+ #$$+,3,7o91;+2/ ,-: #/6:/8"/59/786/59/78Г 884#/6:/8"/74327/6/74327/ 863;7#/6:/8-/4832Г-/4832.3/86/59/78Г6/74327/ Listing 9.3. KidsBooksPage.java 4+-+1/-36/7/6:/ /6;/ /;;/ '''93;+-+;/2/86/-2+2-7/67/.+./- +;/2+746/7o+2/.37/6;/896./6 +1/ 49, //8/ / 49,-:3.28 #8621.7/;7Г+/+2./6Г63;21 7/88/7.7 7/8$8/'-2+/47/ /-7 Listing 9.4. TechBooksPage.java 4+-+1/-36/7/6:/ /6;/ /;;/ '''93;+-+;/2/.; o-7/3498/63;- +;/2+746/7o+2/.37/6;/896./6 +1/ 49,--+77$/ //8/ / 49,-:3.28 # Г+ 7/88/7.7
25 Rozdział 9. Śledzenie sesji 207 7/8$8/'-2+/47/73498/63;/ Rysunek 9.3. Wyniki wykonania serwletu KidsBooksPage Obsługa zamówie Listing 9.5 przedstawia kod serwletu służącego do obsługi zamówień nadsyłanych przez różne strony katalogowe (przedstawione w poprzedniej części podrozdziału). Serwlet ten kojarzy każdego użytkownika z koszykiem wykorzystując przy tym mechanizmy śledzenia sesji. Ponieważ każdy użytkownik dysponuje osobnym koszykiem, jest mało prawdopodobne, że wiele wątków będzie jednocześnie próbowało uzyskać dostęp do tego samego koszyka. Niemniej jednak można wyobrazić sobie sytuację, w których mógłby nastąpić jednoczesny dostęp do tego samego koszyka.
26 208 Część I Serwlety 2.1 i 2.2 Rysunek 9.4. Wyniki wykonania serwletu TechBooksPage Zatem w celu zapewnienia wysokiego poziomu bezpieczeństwa kod serwletu synchronizuje dostęp do koszyków na podstawie obiektu sesji. W ten sposób inne wątki korzystające z tej samej sesji nie będą mogły równocześnie uzyskiwać dostępu do przechowywanych w niej informacji, choć wciąż będzie możliwa równoczesna obsługa żądań nadsyłanych przez różnych użytkowników. Typowe wyniki wykonania tego serwletu zostały przedstawione na rysunkach 9.5 oraz 9m.6. Listing 9.5. OrderPage.java 4+-+1/-36/7/6:/ : :+7/6:/ :+7/6:/ : :+8/89,/636+8 ';/ / Г86/+89+2/ 2+.97;379# / ;3/;o+72/7/7/Г ;/86-36/+2//78462+/2337;/83 /784/6;7+; /93;+-/ 7o+.+2/+;/qГ/788;363223;37 %83;2-+;-+46/ / // Г86/32+++;+Г.+8/13
27 Rozdział 9. Śledzenie sesji 209 8/ /23;/// / ; /78/78632;;/ o , / ; ;/2/7 43+2/-,/1/4+6/.2/13++; ; 49, /6 +1//8/2.7884#/6:/8 49,-:3..3/8884#/6:/8"/59/786/59/78Г 884#/6:/8"/74327/6/74327/ 863;7#/6:/8-/4832Г-/ #/77327/77326/59/781/8#/ / # /.7/ # /77321/8&+9/ ;-983;2;8;3632/723;/37 %83;2-Г ;+8-Г86/378+o.+2-;-/2/98;3632/ /;# / &+9/ Г-+68 #86218/6/59/781/8 +6+/8/68/ 08/29 # /7#8621 6/59/781/8 +6+/8/6298/7 0298/7# /; o43.+2./ / 2/-,+Г Г/983;2876+0o /.2/ / //289-/ /8/ /7/ /; o ;23./ ,+Г Г/9837;2 86+0o ;/2/43+2/-,/1/4+6/7.2/13 ++; ;+/;6-9;+1Г743.+2/ ; ,/1/4+6++;+27/ ;Г/ / / /728/1/64+67/28298/7# ,/636+8-/483220/ 298/ /896./6/.8/Г298/ ;/2+2/+/2/3.8/13Г-983;2 /3.03;+o-2/ 6/74327/7/8328/28$4/8/88-+67/8# 628'68/63986/74327/1/8'68/6 #862188/#8+897+;/ #/6:/8%88/7/+.'8$8/88/
28 210 Część I Serwlety 2.1 i 2.2 "2 $"88/ /.7/7732 &/-8368/76./6/.-+681/88/76./6/. 08/76./6/.7/ ;;379 /7/ /;379/ //./ Г ;;/88+,/ $""$"2 $""2 $./ $472 $/2+/.23783;+$3$'+683 8/6./636./ ;-/7-4346/-29Г ;78+; ,22/;+98Г78. ; /,/-978+;/ ,/ /6 9,/636+81/8966/ / # %" 7/6:/8-36/7/6:/876./6 +1/.6/7%"3.;3o9-/ /7+/; /78+o /83./2-3./%" 036%"6/74327//2-3./%"036%" ++./ /7-32/13;3797 8;36;/678+,/+;/6+-./ Г347Г/13-/2/.23783;Г -,+;32-/1/4+636+o-2-/2 -,++;+2-/1/4+6;;/8+ ;4398/783;Г8++,983;21o7/ ;3Г3,343+Г;;/ ;/2/Г8643;3.9/4323;2/7 46/7o+2/8/7+/ /6;/6Г46-7 /2+2+/78-,+++;+2-/1/ / /76./6/.7/ 36./68/6./68/76./6/./// $"2 $36./61/88/2 $36./61/8#368/ $ / /61/8% $ "$036%"2 %$$ 8/2 &%36./61/88/2 %$$ $$298/72 #&% 36./61/898/72 #2 %$$ #%$2 &%89+9+;/2/2
Wybrane działy Informatyki Stosowanej
Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja
Bardziej szczegółowoSmarty PHP. Leksykon kieszonkowy
IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK
Bardziej szczegółowoAplikacje WWW - laboratorium
Aplikacje WWW - laboratorium Serwlety Celem ćwiczenia jest przygotowanie kilku prostych serwletów ilustrujących możliwości tej technologii. Poszczególne ćwiczenia prezentują sposób przygotowania środowiska,
Bardziej szczegółowoSPIS TREŚCI...1 PODZIĘKOWANIA...11
Spis Treści SPIS TREŚCI...1 PODZIĘKOWANIA...11 O AUTORZE...11 WPROWADZENIE...12 PRAWDZIWY KOD DLA PRAWDZIWYCH PROGRAMISTÓW...13 W JAKI SPOSÓB ZORGANIZOWANA JEST TA KSIĄŻKA...13 Część 1.: Serwlety...14
Bardziej szczegółowo1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)
1 90 min. Aplikacje WWW Harmonogram ń, semestr zimowy -2017 (studia stacjonarne) 6 października Wprowadzenie do aplikacji WWW Rys historyczny Składniki architektury WWW o klient HTTP o serwer HTTP o protokół
Bardziej szczegółowoSerwery aplikacji. dr Radosław Matusik. radmat
www.math.uni.lodz.pl/ radmat Ciasteczka trwałe i sesyjne Ciasteczka trwałe - pozostają na komputerze użytkownika po zamknięciu strony, z której zostały pobrane / przeglądarki. Ciasteczka sesyjne - są związane
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Bardziej szczegółowoWstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008
Adam 1 grudnia 2008 Wstęp Opis Historia Apache kontener serwletów rozwijany w ramach projektu Apache jeden z bardziej popularnych kontenerów Web open source, Apache Software License rozwijany przez ASF
Bardziej szczegółowomgr inż. Michał Paluch
Komunikacja w Internecie Użytkownik klika w odpowiednie łącze. Przeglądarka formatuje żądanie i wysyła Serwer odnajduje zasób, formatuje odpowiedź i przesyła do przeglądarki. Protokół HTTP Zadania klienta
Bardziej szczegółowoAplikacje Internetowe, Servlety, JSP i JDBC
Aplikacje Internetowe, Servlety, JSP i JDBC Opis Java 2 Enterprise Edition (JEE) jest potężną platformą do tworzenia aplikacji webowych. PLatforma JEE oferuje wszystkie zalety tworzenia w Javie plus wszechstronny
Bardziej szczegółowoTworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)
Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,
Bardziej szczegółowoMateriały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione
Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf Materiały poprawione Rozwiązanie zadania w NetBeans IDE 7.4: Jarosław Ksybek, Adam Miazio Celem ćwiczenia jest przygotowanie prostej aplikacji
Bardziej szczegółowoWprowadzenie do projektu QualitySpy
Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować
Bardziej szczegółowoZakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi
Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi 1 Rozdział 1 Wprowadzenie do PHP i MySQL Opis: W tym rozdziale kursanci poznają szczegółową charakterystykę
Bardziej szczegółowoĆwiczenie: JavaScript Cookies (3x45 minut)
Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.
Bardziej szczegółowoTypy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone
Typy przetwarzania Przetwarzanie zcentralizowane Systemy typu mainfame Przetwarzanie rozproszone Architektura klient serwer Architektura jednowarstwowa Architektura dwuwarstwowa Architektura trójwarstwowa
Bardziej szczegółowo1 Wprowadzenie do J2EE
Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2
Bardziej szczegółowoSerwery aplikacji. dr Radosław Matusik. radmat
www.math.uni.lodz.pl/ radmat EL - Expression Language Załóżmy, że mamy klasę Pracownik, której atrybutem jest PESEL. Załóżmy dalej, że w atrybucie sesji zalogowany przechowujemy obiekt aktualnie zalogowanego
Bardziej szczegółowoKontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do
Sesje i ciasteczka Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do śledzenia użytkownika podczas jednej sesji
Bardziej szczegółowoTemat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
Bardziej szczegółowoCzęść I Rozpoczęcie pracy z usługami Reporting Services
Spis treści Podziękowania... xi Wprowadzenie... xiii Część I Rozpoczęcie pracy z usługami Reporting Services 1 Wprowadzenie do usług Reporting Services... 3 Platforma raportowania... 3 Cykl życia raportu...
Bardziej szczegółowoPlan. Stan sesji (1/2) Stan sesji (2/2) Stan sesji Tworzenie przycisku Integracja prostego formularza z raportem Tworzenie formularza z raportem
5 Integracja stron aplikacji, tworzenie zintegrowanych formularzy i raportów Plan Stan sesji Tworzenie przycisku Integracja prostego formularza z raportem Tworzenie formularza z raportem 2 Stan sesji (1/2)
Bardziej szczegółowoTOPIT Załącznik nr 3 Programowanie aplikacji internetowych
Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć
Bardziej szczegółowopawel.rajba@gmail.com, http://kursy24.eu/
pawel.rajba@gmail.com, http://kursy24.eu/ Servlets Charakterystyka Główne metody Obiekty request i response JSP Dyrektywy Elementy skryptowe Elementy akcji Generowanie treści Obiekty niejawne Obiekty request
Bardziej szczegółowoP³atnik. Przewodnik IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA SPIS TREŒCI KATALOG ONLINE
IDZ DO PRZYK ADOWY ROZDZIA SPIS TREŒCI KATALOG KSI EK KATALOG ONLINE P³atnik. Przewodnik Autor: Adam Józefiok ISBN: 83-246-0404-9 Format: A5, stron: 288 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK DODAJ DO KOSZYKA
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoPrzygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)
Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:
Bardziej szczegółowoPrzykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie
Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Przykłady na podstawie zadań lab. z przedmiotu Technologie internetowe
Bardziej szczegółowoSklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi
Stosowanie ciasteczek (cookies) Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi przeglądanie strony i składanie zamówień. Dlatego w trosce
Bardziej szczegółowoZasady Wykorzystywania Plików Cookies
Zasady Wykorzystywania Plików Cookies Definicje i objaśnienia używanych pojęć Ilekroć w niniejszym zbiorze Zasad wykorzystywania plików Cookies pojawia się któreś z poniższych określeń, należy rozumieć
Bardziej szczegółowoPodręcznik Integracji
Podręcznik Integracji Spis treści 1. Integracja oferty... 3 1.1. Samodzielne wprowadzanie oferty sklepu... 3 1.2. Automatyczne wprowadzanie oferty z pliku XML... 3 1.3. Cyklicznie pobieranie oferty ze
Bardziej szczegółowoWorld Wide Web? rkijanka
World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest
Bardziej szczegółowoPlan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza
4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza
Bardziej szczegółowoPOLITYKA PRYWATNOŚCI SERWIS:
POLITYKA PRYWATNOŚCI - SERWIS: WWW.HIPOTEKA-GOTOWKA.PL Polityka Prywatności jest zbiorem reguł, które mają na celu poinformowanie Użytkowników tego Serwisu o wszelkich aspektach pozyskiwania, przetwarzania
Bardziej szczegółowoInstrukcja do programu Przypominacz 1.5
Instrukcja do programu Przypominacz 1.5 Program Przypominacz 1.5 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do prowadzenia tzw. miękkiej windykacji poprzez wysyłanie kontrahentom
Bardziej szczegółowoPolityka prywatności 1. Definicje Administrator Cookies - Cookies Administratora - Cookies Zewnętrzne - Serwis - Urządzenie - Ustawa Użytkownik -
Polityka prywatności Niniejsza Polityka Prywatności określa zasady przechowywania i dostępu do informacji na urządzeniach Użytkownika za pomocą plików Cookies, służących do realizacji usług świadczonych
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoE-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.
E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. Autor: Larry Ullman Poznaj zasady wirtualnego handlu i zarabiaj prawdziwe pieniądze Jak stworzyć doskonałą witrynę sklepu internetowego? Jak
Bardziej szczegółowoProgramowanie Komponentowe WebAPI
Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,
Bardziej szczegółowoInstrukcja do programu DoUPS 1.0
Instrukcja do programu DoUPS 1.0 Program DoUPS 1.0 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do generowania listów przewozowych dla firmy kurierskiej UPS w połączeniu z bezpłatnym
Bardziej szczegółowoProgramowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 8 PHP, czyli poczatki nowej, dynamicznej znajomosci Na dzisiejszych zajęciach rozpoczniemy programowanie po stronie serwera w języku PHP. Po otrzymaniu żądania serwer
Bardziej szczegółowoPOLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse
POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse I. Definicje Niżej wymienione pojęcia użyte w Polityce prywatności lub Polityce Plików cookies należy rozumieć następująco: Administrator
Bardziej szczegółowoProgramowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki
Programowanie w Sieci Internet JSP ciąg dalszy Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić JSP tags, Używanie tagów, Custom tags, JSP objests, Obiekty
Bardziej szczegółowoPHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści
PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop. 2017 Spis treści Wstęp 11 Część I Skrypty PHP dynamiczne generowanie stron internetowych 15 Rozdział 1. Podstawy 17 Czym jest PHP? 17 Krótka
Bardziej szczegółowoPolityka prywatności Spółdzielni Mieszkaniowej Słoneczny Stok
Polityka prywatności Spółdzielni Mieszkaniowej Słoneczny Stok Spółdzielnia Mieszkaniowa Słoneczny Stok szanuje prawo do prywatności Użytkowników serwisu sm-slonecznystok.pl. W szczególności dba o ochronę
Bardziej szczegółowoSpecyfikacja techniczna. mprofi Interfejs API
Warszawa 09.04.2015. Specyfikacja techniczna mprofi Interfejs API wersja 1.0.2 1 Specyfikacja techniczna mprofi Interfejs API wersja 1.0.2 WERSJA DATA STATUTS AUTOR 1.0.0 10.03.2015 UTWORZENIE DOKUMENTU
Bardziej szczegółowoINTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII
Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ : Cookies Sesje Inne możliwości
Bardziej szczegółowoZmienne i stałe w PHP
Zmienne i stałe w PHP Zmienne Zmienne to konstrukcje programistyczne, które pozwalają na przechowywanie danych. Każda zmienna posiada swoją nazwę oraz typ. Nazwa to jednoznaczny identyfikator, dzięki któremu
Bardziej szczegółowoSerwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz.
Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego www.math.uni.lodz.pl/ radmat radmat@math.uni.lodz.pl Serwer aplikacji Serwer aplikacji to: Serwer wchodzący w skład sieci komputerowej, przeznaczony
Bardziej szczegółowoSerwery aplikacji. dr Radosław Matusik. radmat
www.math.uni.lodz.pl/ radmat Ćwiczenie 1 Proszę napisać aplikację wykorzystującą serwlety i bazy danych, która umożliwi wyszukiwanie tytułów książek po nazwisku autora oraz autorów po tytule książki. Ćwiczenie
Bardziej szczegółowoCGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji
Wykład prowadzi Mikołaj Morzy CGI i serwlety Plan wykładu Metody konstrukcji logiki prezentacji Programy CGI Serwlety Java implementacja korzystanie z nagłówków obsługa zmiennych Cookies obsługa sesji
Bardziej szczegółowoJava w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA
Java w 21 dni / Rogers Cadenhead. Gliwice, cop. 2016 Spis treści O autorze 11 Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA Dzień 1. Rozpoczynamy przygodę z Javą 21 Język Java 21 Programowanie obiektowe 24 Obiekty
Bardziej szczegółowoSposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby
Bardziej szczegółowoProgramowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Bardziej szczegółowoStosowanie ciasteczek (cookies)
Stosowanie ciasteczek (cookies) Nasza strona używa plików cookies. Informujemy, że poruszając się po stronie wyrażasz zgodę na wykorzystywanie przez nas plików cookies. Istnieje możliwość korzystania ze
Bardziej szczegółowoProgramowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]
JAVA wprowadzenie do programowania (3/3) [1] Czym jest aplikacja Java Web Start? Aplikacje JAWS są formą pośrednią pomiędzy apletami a aplikacjami Javy. Nie wymagają do pracy przeglądarki WWW, jednak mogą
Bardziej szczegółowoInstrukcja do programu DoDHL 1.5
Instrukcja do programu DoDHL 1.5 Program DoDHL 1.5 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do generowania listów przewozowych dla firmy kurierskiej DHL w połączeniu z bezpłatnym
Bardziej szczegółowo76.Struktura oprogramowania rozproszonego.
76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie
Bardziej szczegółowoCemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.
Polityka prywatności (pliki cookies) 1. Informacje ogólne. Cemarol Sp. z o.o. 1. Operatorem Serwisu www.powiat-lebork.com jest Cemarol sp. z o.o. z siedzibą w Kobylnicy (76-251), Kobylnica, ul. Główna
Bardziej szczegółowoInstrukcja do programu Przypominacz 1.6
Instrukcja do programu Przypominacz 1.6 Program Przypominacz 1.6 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do prowadzenia tzw. miękkiej windykacji poprzez wysyłanie kontrahentom
Bardziej szczegółowoZaawansowane aplikacje internetowe - laboratorium Web Services (część 1).
Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię usług sieciowych (ang. Web Services).
Bardziej szczegółowoLaboratorium 7 Blog: dodawanie i edycja wpisów
Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą
Bardziej szczegółowoWybrane działy Informatyki Stosowanej
Wybrane działy Informatyki Stosowanej Java Enterprise Edition WebServices Serwer aplikacji GlassFish Dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki Aplikacje
Bardziej szczegółowoC++. Æwiczenia zaawansowane
IDZ DO PRZYK ADOWY ROZDZIA SPIS TRECI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG C++. Æwiczenia zaawansowane Autor: Andrzej Stasiewicz ISBN: 83-7361-766-3 Format: B5, stron: 120 TWÓJ KOSZYK
Bardziej szczegółowoBudowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE
Budowa i oprogramowanie komputerowych systemów sterowania Laboratorium 4 Metody wymiany danych w systemach automatyki DDE 1 Wprowadzenie do DDE DDE (ang. Dynamic Data Exchange) - protokół wprowadzony w
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoAplikacje WWW Wprowadzenie
Aplikacje WWW Wprowadzenie Beata Pańczyk na podstawie http://www.e-informatyka.edu.pl/ http://wazniak.mimuw.edu.pl/index.php?title=aplikacje_www Plan wykładu Składniki architektury WWW: klient HTTP, serwer
Bardziej szczegółowoZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja
ZPKSoft WDoradca 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja 1. Wstęp ZPKSoft WDoradca jest technologią dostępu przeglądarkowego do zasobów systemu ZPKSoft Doradca.
Bardziej szczegółowoJęzyki programowania wysokiego poziomu. PHP cz.3. Formularze
Języki programowania wysokiego poziomu PHP cz.3. Formularze Formularze Sposób przesyłania danych formularza do serwera zależy od wybranej metody HTTP: Metoda GET
Bardziej szczegółowoProgramowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści
Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop. 2017 Spis treści O autorach 11 Podziękowania 12 Wprowadzenie 13 CZĘŚĆ I ZACZNIJ PROGRAMOWAĆ JUŻ DZIŚ Godzina 1. Praktyczne
Bardziej szczegółowoKomunikacja i wymiana danych
Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX
Bardziej szczegółowoPortal SRG BFG. Instrukcja korzystania z Portalu SRG BFG
Portal SRG BFG Instrukcja korzystania z Portalu SRG BFG Opracowano w Departamencie Informatyki i Administracji Bankowego Funduszu Gwarancyjnego Październik 2013 Spis treści: 1. Dostęp do strony portalu...
Bardziej szczegółowoAplikacje internetowe i rozproszone - laboratorium
Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,
Bardziej szczegółowoTomasz Boiński: 1. Pozycjonowanie stron i zastosowanie mod_rewrite
Tomasz Boiński: 1 Pozycjonowanie stron i zastosowanie mod_rewrite Pozycjonowanie stron Promocja strony odbywa się poprzez umiejscowienie jej jak najwyżej w wynikach wyszukiwania Wyszukiwarki indeksują
Bardziej szczegółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoPolityka prywatności serwisu www.aran.com.pl
Przedsiębiorstwo BudowlanoHandlowe Z.Niziński Polityka prywatności serwisu www.aran.com.pl 1. Informacje ogólne. Operatorem Serwisu [adres serwisu, np. www.blink.pl] jest [pełne dane rejestrowe] Serwis
Bardziej szczegółowoPawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07
PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się
Bardziej szczegółowoPOLITYKA COOKIES. Definicje. Rodzaje wykorzystywanych Cookies
POLITYKA COOKIES Niniejsza Polityka Cookies określa zasady przechowywania i dostępu do informacji na urządzeniach Użytkownika za pomocą plików Cookies, służących realizacji usług świadczonych drogą elektroniczną
Bardziej szczegółowoGatesms.eu Mobilne Rozwiązania dla biznesu
Mobilne Rozwiązania dla biznesu SPECYFIKACJA TECHNICZNA WEB API-USSD GATESMS.EU wersja 0.9 Opracował: Gatesms.eu Spis Historia wersji dokumentu...3 Bezpieczeństwo...3 Wymagania ogólne...3 Mechanizm zabezpieczenia
Bardziej szczegółowoSerwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniach w następujący sposób:
Informacje ogólne. Operatorem Serwisu www.gops.gmina.swidnica.pl jest Gminny Ośrodek Pomocy Społecznej w Świdnicy, ul. B.Głowackiego 4, 58-100 Świdnica NIP: 884-18-46-403 REGON:005811915 Serwis realizuje
Bardziej szczegółowoWykład dla studentów Informatyki Stosowanej UJ 2012/2013
e-biznes Wykład dla studentów Informatyki Stosowanej UJ 2012/2013 Michał Cieśla pok. 440a, email: michal.ciesla@uj.edu.pl konsultacje: środy 10-12 http://users.uj.edu.pl/~ciesla/ 1 Literatura B. Burke,
Bardziej szczegółowoPortal SRG BFG Instrukcja korzystania z Portalu SRG BFG
Portal SRG BFG Instrukcja korzystania z Portalu SRG BFG Opracowano w Departamencie Informatyki Bankowego Funduszu Gwarancyjnego Październik 2016 Spis treści: 1. Dostęp do strony Portalu... 3 1.1. Adres
Bardziej szczegółowoXQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Bardziej szczegółowo4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152
Wstęp...xv 1 Rozpoczynamy...1 Co to jest ASP.NET?...3 W jaki sposób ASP.NET pasuje do.net Framework...4 Co to jest.net Framework?...4 Czym są Active Server Pages (ASP)?...5 Ustawienia dla ASP.NET...7 Systemy
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
Bardziej szczegółowoWybrane działy Informatyki Stosowanej
Wybrane działy Informatyki Stosowanej Java Enterprise Edition. WebServices. Język XML. Serwer aplikacji GlassFish. Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki
Bardziej szczegółowoInstrukcja do programu Do7ki 1.0
Instrukcja do programu Do7ki 1.0 Program Do7ki 1.0 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do generowania listów przewozowych dla firmy kurierskiej SIÓDEMKA w połączeniu
Bardziej szczegółowoInstrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12
Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12 Wersja 3.0 02-03-2017 Spis treści Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów
Bardziej szczegółowoINSTRUKCJA obsługi certyfikatów
INSTRUKCJA obsługi certyfikatów dla użytkownika bankowości internetowej Pocztowy24 z wybraną metodą autoryzacji Certyfikat Spis treści 1. Wstęp... 3 1.1 Wymagania techniczne... 3 2. Certyfikat jako jedna
Bardziej szczegółowoJak ustawić cele kampanii?
Jak ustawić cele kampanii? Czym są cele? Jest to funkcjonalność pozwalająca w łatwy sposób śledzić konwersje wygenerowane na Twojej stronie www poprzez wiadomości email wysłane z systemu GetResponse. Mierzenie
Bardziej szczegółowoZakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów
Aplikacje internetowe KL. III Rok szkolny: 011/01 Nr programu: 31[01]/T,SP/MENIS/004.06.14 Okres kształcenia: łącznie ok. 180 godz. lekcyjne Wojciech Borzyszkowski Zenon Kreft Moduł Bok wprowadzający Podstawy
Bardziej szczegółowoZygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Programowanie aplikacji sieci Ethernet Przykład 1 Na podstawie: Monk S.: Arduino dla początkujących, HELION, Gliwice 2014 2 Arduino z nakładką
Bardziej szczegółowoMySQL. Æwiczenia praktyczne
IDZ DO PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG MySQL. Æwiczenia praktyczne Autor: Marek Nowakowski ISBN: 83-7197-884-7 Format: B5, stron: 114 TWÓJ KOSZYK DODAJ
Bardziej szczegółowoArchitektury Usług Internetowych. Laboratorium 1 Servlety
Architektury Usług Internetowych Laboratorium 1 Servlety Wstęp Celem laboratorium jest zapoznanie się z modelem klient-serwer (żądanieodpowiedź) na przykładzie serwletów. Kontener webowy Kontener webowy
Bardziej szczegółowoSpis wzorców. Działania użytkownika Strona 147 Obsługa większości Działań użytkownika za pomocą kodu JavaScript przy użyciu metod obsługi zdarzeń.
Spis wzorców Aplikacja Ajax Strona 73 Tworzenie Aplikacji Ajax złożonych aplikacji, które można uruchomić w dowolnej współczesnej przeglądarce internetowej. Bezpośrednie logowanie Strona 509 Uwierzytelnianie
Bardziej szczegółowo