Internet (słowo pisane wielką literą jako nazwa własna!) to globalna sieć komputerowa korzystająca ze stosu protokołów TCP/IP.



Podobne dokumenty
Programowanie w Internecie

1. Protokoły. Co programy wykorzystują do komunikacji przez sieć? wykorzystują protokoły komunikacyjne

PSI Protokół HTTP + wstęp do przedmiotu. Kraków, 10 październik 2014 mgr Piotr Rytko Wydział Matematyki i Informatyki UJ

mgr inż. Michał Paluch

Technologie internetowe

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (


1 Wprowadzenie do J2EE

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Wybrane działy Informatyki Stosowanej

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Protokoły sieciowe - TCP/IP

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Języki programowania wysokiego poziomu WWW

Architektury Usług Internetowych. Laboratorium 1 Servlety

SIP: Session Initiation Protocol. Krzysztof Kryniecki 16 marca 2010

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

prepared by: Programowanie WWW Servlety

Programowanie Komponentowe WebAPI

Serwery aplikacji. dr Radosław Matusik. radmat

Model sieci OSI, protokoły sieciowe, adresy IP

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

nope. Co oznacza kod odpowiedzi 200? Co oznacza kod odpowiedzi 401? Jaka jest różnica między HEAD i GET? Na ilu bitach kodowany jest IPv6?

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Nowe mechanizmy w wersji 3 Java Card. Mateusz LESZEK (138775)

Wybrane działy Informatyki Stosowanej

Aplikacje Internetowe, Servlety, JSP i JDBC

Java wybrane technologie spotkanie nr 5. Java Server Pages

Java wybrane technologie spotkanie nr 3. Serwlety

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Enterprise JavaBeans (EJB)

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Wzorce prezentacji internetowych

Forum Client - Spring in Swing

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Serwery aplikacji. dr Radosław Matusik. radmat

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Programowanie współbieżne i rozproszone

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Wybrane działy Informatyki Stosowanej

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Programowanie współbieżne i rozproszone

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

prepared by: Programowanie WWW Model-View-Controller

Kurs WWW 1. Paweł Rajba

Aplikacje internetowe i rozproszone - laboratorium

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

TIN Techniki Internetowe zima

Protokół HTTP 1.1 *) Wprowadzenie. Jarek Durak. rfc2616 źródło

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Programowanie Sieciowe 1

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Dr Michał Tanaś(

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

OpenLaszlo. OpenLaszlo

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Modele danych walidacja widoki zorientowane na model


Ministerstwo Finansów

Sieci komputerowe i bazy danych

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Typowane zagadnienia jakie mogą pojawić się na egzaminie: wykład 1

Aplikacje internetowe - laboratorium

Aplikacje WWW Wprowadzenie

REFERAT O PRACY DYPLOMOWEJ

Model warstwowy Warstwa fizyczna Warstwa łacza danych Warstwa sieciowa Warstwa transportowa Warstwa aplikacj. Protokoły sieciowe

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Aplikacje RMI

Instrukcja laboratoryjna

Serwery aplikacji. dr Radosław Matusik. radmat

Protokoły Internetowe

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Baza danych sql. 1. Wprowadzenie

Rejestracja użytkownika Bentley Często zadawane pytania techniczne

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Piotr Laskowski Krzysztof Stefański. Java Servlets

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

Gatesms.eu Mobilne Rozwiązania dla biznesu

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Transkrypt:

Internet (słowo pisane wielką literą jako nazwa własna!) to globalna sieć komputerowa korzystająca ze stosu protokołów TCP/IP. protokół komunikacyjny zestawy ustalonych reguł dotyczących komunikacji HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol ) POP3 (Post Office Protocol v 3) Model OSI, kolejne warstwy: [APSTSŁF] [ATID] Aplikacji, Prezentacji, Sesji, Transportowa[TCP/IP], Sieciowa[IP], Łącza danych, Fizyczna Aplikacji, Transportowa[TCP/IP], Internetu[IP], Dostępu do sieci RIA (Rich Intermet Application) HTTP po co komunikacja między przeglądarką a serwerem WWW, celem jest udostępnianie funkcjonalności aplikacji znajdującej na serwerze, oraz komunikacja między fragmentami oprogramowania po stronie serwera Protokół IP warstwa sieciowa/internetu odpowiada za za stworzenie (znalezienie) pojedynczego kanału komunikacyjnego z połączeń miedzy hostami i routerami, dla każdego pakietu danych i dostarczenie go. IP nie gwarantuje dostarczenia pakietu to protokół "best effort" może zduplikować, zgubić, dostarczyć dane w zmienionej kolejności. IP jest protokołem 'host to host' TCP i UDP pozwalają na adresowanie na portach, do identyfikacji aplikacji na hoście. Są to protokoły 'end to end', przenoszą dane od programu do programu TCP implementuje mechanizmy wykrywania zgubionych pakietów i duplikacji pakietów (i innych błędów) dlatego o połączeniu TCP mówimy ze jest niezawodne (ang reliable). UDP jest przeniesieniem IP na 'end to end. Programista chcący korzystać z UDP musi liczyć się z duplikacją, stratami pakietów informacji, zmianą kolejności,udp jest protokołem best effort. IPv4 2^5 = 32 bity, 4 grupy po 8 bitów [1 Bajt], zapis dziesiętny oddzielany. IPv6 2^7 = 128 bitów, 8 grup po 16 bitów [2 Bajty], zapis szesnastkowy oddzielany : loopback: adres 127.0.0.1 & 0:0:0:0:0:0:0:1 DNS (Domain Name Server) serwer tłumaczący (resolve) nazwy na adresy IP Port to 16 bitowa [2 Bajtowa] liczba binarna, bez znaku, z zakresu 1 do 65535 (0 jest zarezerwowane na broadcast). Osobno dla TCP i UDP.

IANA (Internet Assigned Number Authority) przydziela porty do protokołów 20 FTP, 21 FTP, 22 SSH, 80 HTTP Socket to abstrakcja przez którą aplikacja może komunikować się z siecią Sockety strumieniowe (ang. stream sockets) TCP. Sockety datagramowe (ang. datagram sockets) UDP. Socket jest jednoznacznie identyfikowany przez adres IP, protokół end to end (TCP/UDP) i port HTTP (request response) urzywa obu typów framingu, delimiter based i explicit length request od klienta składa się z linii żądania zakończonej CRLF dowolnej ilości nagłówków, z których każdy jest zakończony CRLF pustej linii CRLF (czasem tu jest koniec żądania, ale może ono także zawierać treść), ewentualnie treści wtedy jej długość w bajtach musi być dodatkowo podananp w nagłówku Content length. Pipeline Klient może tym samym połączeniem wysłać kilka żądań nie czekając na odpowiedź. Serwer wówczas musi wysyłać odpowiedzi w takiej samej kolejności w jakiej przyszły żądania response od serwera składa się z linii żądania zakończonej CRLF dowolnej ilości nagłówków, z których każdy jest zakończony CRLF pustej linii CRLF (czasem tu jest koniec żądania, ale może ono także zawierać treść), ewentualnie (częściej niż u klienta) treści tu znów długość w Content length lub Close(); Serwer iteracyjny serwer obsługuje jednego klienta, reszta czeka na zaakceptowanie połączeń Serwer współbieżny każdy klient ma swój wątek który go obsługuje strategie: client per thread nowy klient = nowy wątek thread pool pula wądków do wykorzystania na klientów, recykling wątków JDBC Java DataBase Connectivity Typ 1: JDBC ODBC bridge + Nie wymaga sterownika od producenta bazy Wolne (dodatkowa warstwa) i wymaga oprogramowania po stronie klienta. Nie wspierane. Głównie pod Windows. Nie można korzystać wielowątkowo Typ 2: wywołania natywne sterownika + Kod natywny zoptymalizowany (szybsze) Wymagana dodatkowa biblioteka nie w Javie po stronie klienta (np dll pod Windows) Typ 3: sterownik implementuje API używane przez dodatkową (odpowiednią!) aplikacje middleware, która pośredniczy pomiędzy naszą aplikacją a bazą danych + Warstwa izolacji, 100% Java

Wymagane oprogramowanie middleware, dodatkowa warstwa Typ 4: sterownik dla Javy implementuje API używane przez serwer bazy danych + 100% Java, nie wymaga żadnego dodatkowego oprogramowania DriverManager Klasa do zarządzania sterownikami. Aby łączyć się z bazą trzeba w niej zarejestrować nasz sterownik Sposób 1 DriverManager.registerDriver(Driver drivername); Sposób 2 Class.forName(String drivername) [.newinstance() ] ; // [ opcjonalne ] Sposób 3 D:>java Djdbc.drivers=com.mysql.jdbc.Driver MyJDBCProg DataSource reprezentuje pulę połączeń do zastosowania w aplikacjach wielowątkowych, jeśli robimy aplikację standalone to musimy skorzystać z dodatkowej biblioteki do pul Connection tworzy Statement kture zwraca ResultSet nadal powiązane z Connection Connection tworzy PreparedStatement i podobnie DAO Data Access Object wzorzec projektowy, jest to fasada dla skomplikowanego API jakim jest JDBC. Typowo tworzy się po klasie DAO dla każdej z tabel LittleEndian od tyłu, od młodszego bitu, od mniej znaczącego bitu BigEndian od przodu, od starszego bitu, od bardziej znaczącego bitu URI/URL znaki niezarezerwowane : A Z a z 0 9 _. ~ URI/URL znaki zarezerwowane :! * ( ) ; : @ & = + $, /? % # [ ] URL Encoding kodowanie znaków zarezerwowanych i znaków spoza tąd %XX gdzie XX szesnastkowy kod ASCII znaku URL Encoding stosuj do: URL, wartości w Cokie, wartości w nagłówkach HTTP Eskejpowanie znaków [ ≶ ' itp] stosuj do generowanych zawartości nie dla przeglądarki HTTP jest bezstanowy, co znaczy, że serwer nie jest w stanie bez dodatkowej informacji, zawartej w żądaniu, stwierdzić że poszczególne żądania należą do danej konwersacji między klientem a serwerem URI Uniform Resource Identifier krutka sekwencja znaków jednoznacznie identyfikująca zasób istniejący lub nie budowa SHEMAT:reszta, sheat może zawężać reguły URI ale NIE im zaprzeczać czy rozszerzać, shemat to często nazwa protokołu URL [L locator] podaje sposób na znalezienie zasobu w sieci URN [N Name] globalnie unikatowy i trwały, powiązany na stałe z konkretnym zasobem (niezależnie od tego gdzie w sieci ten zasób jest), URN może się zaczynać od urn:namespaceid:, ale URNem może być także inny URI mający cech URNa operazje na URI/URL Resolution (określenie) określenie sposobu dostępu do zasobu na podstawie URI/URL

(np. java:, http:, rmi:) Dereferencing (wyłuskanie) wykorzystanie mechanizmu dostępu do zasobu Retrieval (pobranie) najczęstszy sposób wyłuskania URI inne np usunięcie URI shemat:[//authority[/]]path [?query][#fragment] przykład foo://example.com:880/over/there?name=ferret#nose shemat (a za Z0 9+.) pierwszy znak to litera authority [user_info@]host[:port] path (a za Z0 9=;) [.] [..], authority[/path] lub shemat:path, kolejne części path oddzielane / query [?dużo_może] fragment [#dużo_może] Tunnel punkt transferowy bez modyfikacji komunikatu, bez cashe owania (tunel nie zna się na protokole http). Proxy forwarduje żądanie na url podany w nim, przepisując je w całości lub częściowo, może cashe ować Gateway to warstwa, która może tłumaczyć komunikaty na inny protokół, może cashe ować http_url http://host[:port][abs_path[?query]] Nagłówki HTTP, co mogą zawierać: znacznik czasu, info o kodowaniu, info o kompresji / podziale na części, typy MIME, produkt, waga, język, entity tag 8 metod HTTP do wsadzenia w nagłuwek http_request options, get, head, post, put, delete, trace, connect nagłówki HTTP general header, request header, entity header i w huj możliwych wartości dla każdego z nich linia statusu w http_response zawiera 3 cyfrowe czasem błędy 1xx info 2xx sukces 3xx przekierowanie 4xx klient error 5xx serwer error 1xx info 100 Continue 101 Switching protocols 102 Processing 2xx sukces 200 OK 201 Created [odo na PUT] 202 Accpepted

203 Non Authoritative Information [inna wersja zasobu (więcej/mniej) zamiast oryginału) 204 No Content 205 Refresh your Content 206 Partial Content 230 Authentication Successful 3xx przekierowanie 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified urzywaj zasobu z cache 305 Use Proxy 306 Switch Proxy 307 Temporary Redirect 308 Permanent Redirect 4xx klient error 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable unable to respond in expected way 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Resource Gone 411 Length Required 412 Precondition Failed 413 Request Entity Too Large 414 Request URI Too Long 415 Unsupported Media [MIME] Type 416 Requested Range Not Satisfiable błędne wartości RANGE 417 Expectation Failed 5xx serwer error 500 Internal Server Error 501 Not Implemented 502 Bad Gateway error recived by gateway 503 Service Unavailable / unreachable 504 Gateway Timeout 505 HTTP Version Not Supported

Bezpieczne (ang safe) nie modyfikują nic na serwerze. GET, HEAD, OPTIONS, TRACE. (GET nie musi ale powinno) Idempotentne takie dla których wykonanie N>0 identycznych żądań będzie miało taki sam efekt jak wykonanie jednego żądania. GET, HEAD, PUT, DELETE, OPTIONS, TRACE [, POST] OPTIONS Pytanie o opcje komunikacji dla hosta lub zasobu (np. dozwolone metody czy operacje) GET Metoda służąca do pobierania zasobu, jeśli rządanie ma nagłówek If XXX to warunkowy GET (oznacza to, że przeglądarka ma zasób w cache i jest gotowa go wykorzystać) HEAD jest takie same jak GET, ale klient nie oczekuje zawartości odpowiedzi, chce przetwarzać tylko nagłówki POST Prośba o zaakceptowanie danych będących treścią żądania, POST nigdy nie jest idempotentne ani bezpieczne tu URI to zasób przetwarzający żądanie PUT Prośba o zapamiętanie zasobu i skojarzenie go z URLem podanym w żądaniu tu PUT to URI które ma identyfikować zasób właśnie przesyłany DELETE Prośna o usunięcie zasobu TRACE Odpowiedzią jest echo żądania. W nagłówku Via jest łańcuch proxy przez które żądanie szło CONNECT Prośba do o połączenie się z innym hostem i odgrywanie roli tunelu. HTML HyperText Markup Language MIME Multipurpose Internet Mail Extension Typy MIME w nagłówku Content Type: html, xhtml, image, pdf, flash, audio, windows media DTD (Document Type Definition) zestaw reguł do walidacji dokumentu, są 3 wersje dla html 4 (HTML 5 NIE ma wersji) Strict nie zezwala na elementy i atrybuty ze starszych wersji Transitional zawiera wszystkie elementy i atrybuty ze starszych wersji Frameset dla struktury dokumentu opartej na ramkach zasady XHTML 1 tagi i atrybuty małymi literami 2 wszystkie elementy muszą być zakończone, w tym znaczniki puste (<br />) 3 atrybuty w cudzysłowach / apostrofach 4 każdy atrybut musi mieć nazwę i wartość (nazwa= wartość ) 5 bardziej surowe zasady zagnieżdżania (<a><a>, <form><form> nie są dozwolone) 6 Znaki < > & muszą być eskejpowane (< > & &apos; ") nawet jeśli są w atrybutach 7 do identyfikacji <a> <form> <img> <map> (i kilku innych) używa się id= a nie name= HTML bardziej zwięzły i mniej rygorystyczny

XHTML bardziej przenośny i łatwiej parsowalny CSS (Cascading Style Sheets) Selektory #ID,.Class, p~a (wszystkie <a> na pierwszym poziomie (zagnieżdrzenia) od tagu <p>) Python interpretery: CPython, JPython, pypy war Web application ARchive taki JAR do przechowywania rużnych plików i zasobów składających się na aplikację webową jetty serwer start.ini tu możesz zmienić plik konfiguracyjny z domyślnie etc/jetty.xml na co chcesz jetty etc/xml plik konfiguracyjny, możesz zmienić port lib/* biblioteki javowe, też w podkatalogach connector akceptowanie połączeń http serwer serwer threadpool pula wądków zarządzana przez serwer handler obsługa rządań wrzucasz jar'y i war'y do folderu jetty'ego i działa :) np dla bazy danych, dla pól połączeń do bazy danych usługa nazwiednicza jndi widziane pod nazwą (przez aplikacje) "java:comp/env" do wiązania zasobów i wpisów środowiskowych chcesz urzyć wpis w etc/jetty.xml i w aplikacji wpis środowiskowy stała dla całego serwera typu prostego (int, long, short, double, float, string, char, bool, byte) jetty NIE ma pul połączeń na bazy danych, potrzebujesz dodatkowej biblioteki chcesz urzyć wpis w etc/jetty.xml i web.xml teraz trzeba korzystać z connection.close(), zwraca połączenie i wątek do ich pól trzeba (dla serwera startowanego z kodu) ręcznie w klasach robić całą konfigurację, albo wczytać ją z jetty.xml trzeba każdego war'a też dodać w kodzie i kurwa pamiętaj, żeby dodać biblioteki w netbeans'ie (w jettym w folderze LIB i podkatalogach) maven narzędzie do zarządzania projektami i bibliotekami (dla javy i nie tylko [?] ) zarządza zależnościami umie sam ściągnąć potrzebne nam biblioteki i sam je podpina gdzie

trzeba netbeans ma domyślnie maven'a, ale my go ściągamy i ustawiamy go w netbeansie TOOLS > OPTIONS > JAVA > MAVEN main/java/ klasy javy webapp/ wszystko co jeszcze ma być w WAR resources/ zasoby widoczne w testach ale nie umieszczane w WAR archetyp struktura projektu w mavenie szkielet projektu archetyp można zrobić z wiersza poleceń mvn archetype:generate buduj projekt mvn clean install w folderze głównym projektu odpal projekt mvn clean install, potem mvn exec:java tworzenie aplikacji webowej maven archetype webapp [zbudowanie tego tworzy WAR i wgrywa go do lokalnego repozytorium] buduj webapp mvn clean install całość odpalam przez mvn jetty:run pom.xml = makefile < warzne? jak tu zamiast maszyny wirtualnej wpiszę jetty'ego a do jetty;ego wgram WAR'a i jak jeszcze zależności poumieszczam w jetty.xml to się fajnie odpali? nosz kurwa, więcej ustawień niż kodzenia Pobranie zasobu push based Aplikacja wyciąga referencję do zasobu z usługi JNDI w kontenerze. Wymagany web.xml Pobranie zasobu pull based Kontener wpycha do obiektu serwletu referencję do zasobu. Nie wymagany wpis w web.xml (ani w ogóle plik web.xml). Możliwe tylko dla pola w klasie i tylko w instancji obiektu tworzonego przez kontener Stany sesji pamiętany przez klienta stan jego konwersacji z serwerem 1 klient pamięta cały stan, zawsze przesyła serwerowi cały / kawałek wada można oszukać 2 serwer pamięta cały stan, klient tylko ID, kture zawsze przesyła do serwera wada podatność na kradzież sesji są 3 techniki pamiętania stanu przepisywanie url limit to długość URL user przejdzie na inną stronę i wruci NIE przez wstecz = traci sesję pola hidden user przejdzie na inną stronę i wruci NIE przez wstecz = traci sesję pliki coockie można wyłączyć cookie w przeglądarce

servlet dziedziczy po HttpServlet ma metody doxxx [np dopost(...)] (wszystkie są protected, możesz zmienić na public gdy nadpisujesz) każda przyjmuje HttpServletRequest i HttpServletResponse, rzucają ServletException i IOException Kontekst zbiór obiektów i zasobów dostępnych dla aplikacji kontekst strony (węższy niż żądania), kontekst żądania (zasoby dostępne jedynie w trakcie obsługi jednego żądania), kontekst sesji (zasoby dostępne w trakcie całej sesji), kontekst aplikacji (zasoby dostępne dla całej aplikacji). Atrybuty żądania pary nazwa/wartość dowolne obiekty dodawane do kontekstu żądania cykl życia servletu Kontener tworzy serwlet przez newinstance() Kontener wywołuje metodę init(servletconfig config) [config zrobiony z web.xml, tej metody NIE nadpisujesz] Kontener wywołuje metodę init() [tą metodę nadpisujesz] Na każde żądanie do serwletu kontener wywołuje protected void service(req, resp) ktura skolei woła odpowiednie doxxx UWAGA service i doxxx będą wywoływane z wielu wątków (chyba, że zrobimy SingleThreadModel ) Jeśli kontener uzna, żeby zakończyć serwlet, wywołuje mu metodę: public void destroy() RequestDispatcher żeby servlet mógł się odwołać do innego servletu parametry kontekstu stringi widoczne dla całej aplkacji np sterowniki do DB (patrz wyżej: wpis środowiskowy) Atrybut kontekstu może być dowolnym obiektem. Można go powiązać z: A) żądaniem czas życia będzie krótki, ale przydatne np. przy forwardowaniu, B) sesją widoczny przez kolejne żądania w tej samej sesji (gdzie cookie lub parametr żądania JSESSIONID o tej samej wartości), C) kontekstem będzie widoczny przez wszystkie serwlety w aplikacji Aplikacja webowa może zawierać: serwlety, pliki JSP, dodatkowe klasy, statyczne zasoby (np. html, css, JavaScript, inne pliki), plik konfiguracyjny (wymagany!) META INF folder niedostępny dla klienta, zawiera manifest.mf i ewentualnie pliki.sf z

podpisami cyfrowymi WEB INF folder niedostępny dla klienta, zawiera plik web.xml oraz klasy i biblioteki WEB INF/plik.xml plik konfiguracyjny WEB INF/classes/ tu klasy (serwlety i inne) WEB INF/lib/ tu jary z których korzysta aplikacja Wara można stworzyć przez jar cvf Aplikacja.war * i rozpakować przez jar xvf Aplikacja.war Filtr obiekt przechowujący rządanie, stoi między przeglądarką a plikacją, w obu kierunkach przetwarza nieco rządania i odpowiedzi, lub nawet nie przekazuje ich dalej (terminates em) (w web.xml?) serwlety antywzorce Including Common Functionality in Every Servlet sprawdzanie czy user zalogowany w każdym serwlecie Rozwiązanie filtr tylko dla zalogowanych Template Text in Servlet za dużo HTMLa w serwlecie (albo może w ogóle HTML w serwlecie). Kod trudny w utrzymaniu i modyfikacji Rozwiązanie JSP albo sposób definiowania szablonu Using Strings for Content Generation Do generacji HTML używaliśmy Stringów. Trudno znajdować i naprawiać błędy. Wydajność jest niska. Kod podatny na błędy HTMLa. Kod trudny w utrzymaniu Rozwiązanie użyć DOM API Not Pooling Connections Słaba wydajność, słaba skalowalność, kod trudny w utrzymaniu Rozwiązanie pula połączeń Customers in the Kitchen W trakcie generowania odpowiedzi wykonane jest kilka operacji zdalnych Rozwiązanie fasada, która będzie miała jedną metodę zwracająca od razu wszystko, co trzeba Serwlet = generowanie fragmentów HTML wewnątrz kodu Java [HTML in JAVA] JSP = fragmenty kodu Java wewnątrz HTML [JAVA in HTML], dwie składnie, nie można ich mieszać (można przez dyrektywę include) Strony JSP (.jsp), Dokumenty JSP (.jspx) Klasa serwletu dla strony (dokumentu) JSP jest generowana przez kontener przy pierwszym

żądaniu odwołującym się do tej strony (first person penalty) (lazy init). W kontenerze jest kompilator JSP przetwarzający stronę JSP na serwlet. Cykl życia 1. Tłumaczenia.jsp do.java 2. Kompilacja.java 3. Wczytanie klasy 4. Stworzenie instancji 5. void jspinit()(jeśli zaimplementujemy jako deklarację) po stworzeniu instancji 6. _jspservice() przy obsłudze każdego żądania 7. void jspdestroy()(jeśli zaimplementujemy jako deklaracje) przy usuwaniu instancji Elementy JSP Ukryte komentarze ( <% treść %>), Deklaracje ( <jsp:declaration> </jsp:declaration> albo <%= %> i <%! %>) Wyrażenia (ang. Expression) ( <jsp:expression> </jsp:expression> albo <%= %> i <%! %>) Skryptlety (ang. Scriptlet) ( <jsp:scriptlet> </jsp:scriptlet> albo <% %> ) Dyrektywy (ang. Directive) ( <jsp:directive.include /> albo <%@include %> ) Dyrektywa @page language użyty język programowania (domyślnie java) extends klasa bazowa dla generowanego serwletu session czy używać sesji (domyslnie true) buffer rozmiar bufora out (dobyślnie 8kb) autoflush automatyczne opróżnianiepo przepełnieniu, false wyjątek (domyślnie true) isthreadsafe (domyślnie true) info string dostępny wewnątrz strony errorpage strona ładowana przy wystąpieniu wyjątku iserrorpage domyslnie false, czy istnieje strona do obsługi błędów, widzi ona obiekt exception Obiekty niejawne application, request, response, session analogiczne jak dla serwletu config informacje związane ze stroną jsp, getattribute(string name) pagecontext metody getout(), getexception(), getpage(), getrequest(), getresponse(), getsession(), getservletconfig(),

getservletcontext(), forward(string url), include(stringurl), handlepageexception(throwable t) out do wypisywania wyjścia do klienta JSP akcje: ( <jsp:akcja> ) jsp:plugin np. applet na stronie jsp jsp:include odpowiada include klasy RequestDispatcher jsp:forward odpowiada forward klasy RequestDispatcher jsp:param jakiś parametr wewnątrz np jsp:forward jsp:usebean info, że będzie wykorzystany na stronie obiekt powiązany ze stroną, żądaniem, sesją lub aplikacją jsp:setproperty do wołania setterów jsp:getproperty do wołania getterów MVC i JSP Kontroler serwlety, które odbierają żądanie, tworzą lub pobierają odpowiednie atrybuty sesji, żądania, kontekstu, uaktualniają je wywołują z nich metody i decydują, którą stronę jsp załadować Model beany do których mają dostęp serwlety (przez atrybuty sesji, żądania, aplikacji) i strony jsp (przez <jsp:usebean>) przechowują dane i umożliwiają dostęp do funkcjonalności aplikacji Widok strony JSP będące szablonami na podstawie których generowana jest zawartość odpowiedzi MVC wariaja Page Controller każda strona lub komponent na stronie ma swój kontroler (serwlet). MVC wariaja Front Controller wysunięty jeden kontroler (serwlet) na całą aplikację, korzysta z komend. AJAX (ang. Asynchronous JavaScript and XML, asynchroniczny JavaScript i XML) technika tworzenia aplikacji internetowych, w której interakcja użytkownika z serwerem odbywa się bez przeładowywania całego dokumentu, w sposób asynchroniczny. Ma to umożliwiać bardziej dynamiczną interakcję z użytkownikiem niż w tradycyjnym modelu, w którym każde żądanie nowych danych wiąże się z przesłaniem całej strony HTML. pytania z kolosa II

do jakich katalogów znajdujących się w pliku war klient nie ma dostępu jaki może być zasięg kontekstu (podaj min 3 rodzaje) wyjaśnij wady Including Common Functionality in Ever Servlet wyjaśnij wady Template Text in Servlet wyjaśnij wady No Pooling Connections co to jest kontekst w aplikacji webowej jaki problem niesie ze sobę stosowanie plików cookie w realizacji sesji jaki problem niesie ze sobę stosowanie przepisywania URL'a w realizacji sesji co powinna, czego nie musi robić funkcja POST wymień dwie funkcje doxxx wymień 3 techniki pamiętania stanu sesji co oznacza, że HTML jest bezstanowy wyjaśnij wady Accessing Entities Directly co musi znajdywać się w folderze WEB INF co znajduje sie w META INF co to jest coś m Kitchen jakie ma wady jakie wady ma Pooling coś tam jaki zasięg może mieć kontekst czym są Filtry co powinna, a czego nie metoda GET jaki problem niesie ze sobą stosowanie pól hidden w realizacji sesji pytania z kolosa I

jaka jest różnica między PUT i POST z ilu bitów składa się adres IPv4 co to jest URI kiedy wykorzystywana jest metoda POST co to jest HTML wypisz elementy składniowe URI co oznacza kod 404 statusu serwera co oznacza kod 401 statusu serwera co oznacza kod 200 statusu serwera co oznacza kod 301 statusu serwera wymień 5 metod HTTP gdzie wykorzystywane jest eskejpowanie znaków podaj 4 zasady składni XHTML co to jest JDBC