Java jako j zyk programowania serwerów WWW / aplikacji Webowych servlety

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

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

In»ynieria systemów informacyjnych - Adam Krechowicz

prepared by: Programowanie WWW Servlety

Java wybrane technologie spotkanie nr 3. Serwlety

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

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 09

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

Architektury Usług Internetowych. Laboratorium 1. Servlety

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

Serwlety. Co to jest serwlet? Przykładowy kod serwletu. Po co są serwlety?

Architektury Usług Internetowych. Laboratorium 1 Servlety

1 Wprowadzenie do J2EE

Piotr Laskowski Krzysztof Stefański. Java Servlets

Wzorce prezentacji internetowych

Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów

Programowanie w języku Java

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Serwlety Java: zagadnienia zaawansowane. Data Sources. Data Sources. Przykład pliku data-sources.xml

Komunikacja między serwletami

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

TIN Techniki Internetowe Lato 2005

Java a dost p do Internetu.

Serwlety i JSP. Autor: Marek Zawadka deekay@gazeta.pl

mgr inż. Michał Paluch

Wzorce projektowe strukturalne cz. 1

Aplikacje internetowe i rozproszone - laboratorium

Przegląd technologii JSP

Wprowadzenie do JSP. Marcin Apostoluk, Tadeusz Pawlus, Wojciech Walczak. Technologie Biznesu Elektronicznego, 7 marzec 2006

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Java Database Connectivity

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

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


Java w Internecie - czy to ma sens? ;)

Java jako zdalny interfejs aplikacji Webowych aplety

JavaServer Pages. Konrad Kurdej Karol Strzelecki

Zaawansowane aplikacje internetowe laboratorium

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

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

Tworzenie aplikacji webowych w oparciu o framework ObjectLedge

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Wybrane działy Informatyki Stosowanej

Java EE: Serwlety i filtry serwletów

Spring MVC Andrzej Klusiewicz 1/18

Wybrane działy Informatyki Stosowanej

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

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

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

Serwlety i JSP na platformie Java EE. Damian Makarow

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Wzorce projektowe kreacyjne

Aplikacja wielow tkowa prosty komunikator

Wzorce projektowe warstwy aplikacji

1 Intefejsy graczne. 1.1 Okienka. 1.2 Komponenty

Automatyzacja procesu publikowania w bibliotece cyfrowej

Java wybrane technologie spotkanie nr 5. Java Server Pages

prepared by: Programowanie WWW Model-View-Controller

Enterprise JavaBeans (EJB)

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Podstawy modelowania w j zyku UML

Testowanie aplikacji Java Servlets

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

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Enterprise JavaBeans

1. Wprowadzenie do C/C++

Model obiektu w JavaScript

Aplikacje Internetowe termin dodatkowy

API transakcyjne BitMarket.pl

Java Enterprise Edition spotkanie nr 3. Serwlety c.d.

WYKŁAD 1 SYSTEMY CMS CZĘŚĆ 1

Aplikacje WWW - laboratorium

KLASY, INTERFEJSY, ITP

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

SOAP. Autor: Piotr Sobczak

1. Wprowadzenie do C/C++

Zaawansowane aplikacje WWW - laboratorium

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Serwery aplikacji. dr Radosław Matusik. radmat

Wst p do j zyka HTML. Krzysztof Szafran (IInf UW) Warszawa, 18 pa¹dziernika Warszawa, 18 pa¹dziernika / 20

Aktywne i dynamiczne strony WWW. Elementy projektowania stron WWW. Część 3. Formularze HTML przykład. Formularze HTML. dr inŝ.

Aplikacje Internetowe, Servlety, JSP i JDBC

System kontroli wersji SVN

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

Programowanie Komponentowe WebAPI

Aplikacje RMI Lab4

Praca Dyplomowa Magisterska

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

Wybrane Działy Informatyki Stosowanej LABORATORIUM 1.

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Programowanie obiektowe w C++ Wykªad 4

OpenLaszlo. OpenLaszlo

Tworzenie i wykorzystanie usług

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom podstawowy)

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Software Architecture Document wersja 2.0-nal

Transkrypt:

Java jako j zyk programowania serwerów WWW / aplikacji Webowych servlety Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 25.05.2017

Java Servlet Technologia serwletu sªu»y do tworzenia aplikacji internetowych (znajduje si po stronie serwera i generuje dynamiczn stron internetow ). Technologia serwletu jest solidna i skalowalna z powodu j zyka java. Przed Servletami, j zyk skryptowy CGI (Common Gateway Interface) byª popularny jako j zyk programowania po stronie serwera. Byªo jednak wiele wad tej technologii. W interfejsie API serwletu istnieje wiele klas i interfejsów, takich jak Servlet, GenericServlet, HttpServlet, ServletRequest, ServletResponse itp. 2 / 56

Co to jest Servlet? Servlet jest technologi np. wykorzystywan do tworzenia aplikacji sieci web. Servlet jest interfejsem API zawieraj cym wiele interfejsów i klas, w tym dokumentacji. Servlet jest interfejsem, który musi by zaimplementowany w celu utworzenia dowolnego serwletu. Servlet jest klas, która rozszerza mo»liwo±ci serwerów i odpowiada na przychodz ce» danie. Mo»e odpowiada na ka»dy rodzaj» da«. Servlet to skªadnik sieci Web, który jest instalowany na serwerze w celu utworzenia dynamicznej strony internetowej. 3 / 56

Co to jest aplikacja webowa/internetowa? Aplikacja internetowa to aplikacja dost pna w internecie. Aplikacja internetowa skªada si z komponentów internetowych, takich jak Servlet, JSP, Filter itp. oraz innych komponentów takich jak HTML. Komponenty webowe zazwyczaj s uruchamiane w serwerze sieci Web i odpowiadaj na» danie HTTP. 4 / 56

CGI (Commmon Gateway Interface) Technologia CGI umo»liwia serwerowi WWW wywoªanie zewn trznego programu i przekazanie informacji o» daniu HTTP do zewn trznego programu w celu przetworzenia» dania. Dla ka»dego» dania rozpoczyna nowy proces. Wady: Je±li liczba klientów wzrasta, zajmuje wi cej czasu na wysªanie odpowiedzi. Dla ka»dego» dania rozpoczyna proces, a serwer sieci Web jest ograniczony do uruchamiania procesów. U»ywa j zyka zale»nego od platformy, np. C, C ++, perl 5 / 56

CGI - przetwarzanie» da«6 / 56

Java Servlet - przetwarzanie» da«7 / 56

Zalety servletu Istnieje wiele zalet serwletu nad CGI. Kontener internetowy tworzy w tki dla obsªugi wielu» da«serwletu. W tki maj wiele zalet w porównaniu z procesami, takie jak wspólne dzielenie pami ci, lekki, kosztu komunikacji mi dzy w tkami s niskie. Podstawowe zalety serwletu s nast puj ce: Lepsza wydajno± : poniewa» tworzy w tek dla ka»dego» dania nie przetwarza Przeno±no± : poniewa» u»ywa j zyka java. Solidne: serwlety s zarz dzane przez JVM, wi c nie musimy si martwi o wycieki pami ci, od±miecanie itp. Bezpieczne: poniewa» u»ywa j zyka Java. 8 / 56

Strona statyczna vs dynamiczna 1 Zawarto± wst pna jest taka sama za ka»dym razem, gdy strona jest zaªadowana. 2 U»ywa kodu HTML do opracowania witryny. 3 Wysyªa dokªadnie tak sam odpowied¹ dla ka»dego» dania. 4 Zawarto± zmienia si tylko wtedy, gdy kto± publikuje i aktualizuje plik (wysyªa go do serwera WWW). 5 Elastyczno± jest gªówn zalet statycznej witryny sieci Web. 1 Tre± jest generowana szybko i regularnie si zmienia. 2 Do tworzenia witryny u»ywa po stronie serwera j zyków takich jak PHP, SERVLET, JSP i ASP.NET itp. 3 Mo»e generowa inny kod HTML dla ka»dego z» da«. 4 Strona zawiera kod "po stronie serwera", który pozwala serwerowi generowa niepowtarzaln tre± po zaªadowaniu strony. 5 System zarz dzania tre±ci (Content Management System - CMS) jest gªówn zalet strony dynamicznej. 9 / 56

Podstawowe cechy HTTP (Hyper Text Transfer Protocol) HTTP jest niezale»ne od mediów: odnosi si do dowolnego typu tre±ci multimedialnej przez HTTP, o ile zarówno serwer, jak i klient mog obsªugiwa zawarto± danych. HTTP jest bezpoª czniowy (connectionless): jest to podej±cie bez poª czenia, w którym klient HTTP, czyli przegl darka inicjuje» danie HTTP, a po wysªaniu» dania klient odª cza si od serwera i oczekuje na odpowied¹. HTTP jest bezstanowe: klient i serwer s ±wiadomi siebie tylko w bie» cym» daniu. Potem oboje zapominaj si nawzajem. Ze wzgl du na bezstanowo± protokoªu ani klient, ani serwer nie mog przechowywa informacji o ró»nych» daniach na stronach internetowych. 10 / 56

dania HTTP GET - Pozwala uzyska zasób w» danym adresie URL. POST - Pozwala serwerowi zaakceptowa doª czone informacje o ciele. To jest podobne do» dania GET z dodatkowymi informacjami wysªanymi z» daniem. HEAD - Zapytanie tylko o nagªówek, niezale»nie od tego, czy GET wróci. To jest podobne do» dania GET, ale bez ciaªa. TRACE - Zapytanie o p tl zwrotn komunikatu» dania, do testowania lub rozwi zywania problemów. PUT - mówi, aby umie±ci zaª czone informacje (ciaªo) na» dany adres URL. DELETE - mówi, aby usun zasób pod» danym adresem URL. OPTIONS - Pozwala wy±wietli list metod HTTP, do których obiekt mo»e odpowiada na» danie adresu URL 11 / 56

Idempotentno± W informatyce idempotentno± jest wªasno±ci operacji pozwalaj c na jej wielokrotne powtarzanie bez zmiany wyniku lub powodowania bª du Programista aplikacji internetowych powinien zadba o idempotentno± wykonywanych przez serwer operacji, nie dopuszczaj c np. do kolejnego zakupu identycznego wyrobu w sklepie internetowym po od±wie»eniu strony (token synchronizuj cy) Standardowo uwa»a si metody GET i HEAD protokoªu HTTP za idempotentne, wi c przegl darki internetowe nie wy±wietlaj»adnego ostrze»enia w przypadku od±wie»ania strony za pomoc metody GET. St d poleca si implementacj operacji zmieniaj cych stan sesji klienta za pomoc metody POST. 12 / 56

GET vs POST 1 W przypadku» dania GET, jedynie ograniczona ilo± danych mo»e zosta wysªana, poniewa» dane s przesyªane w nagªówku. 2 danie GET nie jest zabezpieczone, poniewa» dane s wy±wietlane w pasku adresu URL. 3 danie GET mo»na zapisa w zakªadce. 4 danie GET jest idempotentne. Oznacza to,»e drugie» danie zostanie zignorowane do czasu dostarczenia odpowiedzi na pierwsze» danie. 5 danie GET jest bardziej wydajne i stosowane cz ±ciej ni» POST. 1 W przypadku» dania POST, du»a ilo± danych mo»e zosta wysªany, poniewa» dane s przesyªane w ciele. 2 danie POST jest zabezpieczone, poniewa» dane nie s wy±wietlane w pasku adresu URL. 3 danie POST nie mo»e by zakªadk. 4 danie POST nie jest idempotentne. 5 danie POST jest mniej wydajne i rzadziej u»ywane ni» GET. 13 / 56

GET - przykªad 14 / 56

POST - przykªad 15 / 56

Kontener serwletów Zapewnia ±rodowisko wykonawcze aplikacji JavaEE (j2ee) Kontener serwletu jest u»ywany w Java do dynamicznego generowania stron internetowych po stronie serwera. Kontener serwletu jest cz ±ci serwera sieciowego, który wspóªdziaªa z serwletem w celu obsªugi dynamicznych stron internetowych od klienta. 16 / 56

Stany kontenera serwletów Standalone: Typowe serwery Java, w których kontener serwletu i serwery WWW stanowi integraln cz ± jednego programu. Na przykªad: - Tomcat dziaªa sam In-process: jest oddzielony od serwera WWW, poniewa» inny program dziaªa w przestrzeni adresowej gªównego serwera jako wtyczka. Na przykªad: - Tomcat dziaªaj cy wewn trz JBossa. Out-of-process: serwer WWW i kontenerem serwletów s ró»nymi programami, które s w ró»nych procesach. Aby komunikacja mi dzy nimi byªa mo»liwa, serwer WWW u»ywa wtyczki dostarczonego przez kontener serwletów. 17 / 56

Serwer webowy vs serwer aplikacji Serwer sieci Web ma sªu»y do obsªugi zawarto±ci HTTP. Serwer aplikacji mo»e równie» obsªugiwa zawarto± HTTP, ale nie jest ograniczony do tylko HTTP. Mo»e by dostarczony z innym protokoªem, takim jak RMI / RPC Serwer sieci Web jest przeznaczony gªównie do obsªugi zawarto±ci statycznych, chocia» wi kszo± serwerów sieci Web ma wtyczki obsªuguj ce j zyki skryptowe, takie jak Perl, PHP, ASP, JSP itp. Dzi ki temu serwery mog generowa dynamiczn zawarto± HTTP. Wi kszo± serwerów aplikacji ma serwer WWW jako integraln cz ±, co oznacza,»e serwer aplikacji mo»e wykonywa dowolny serwer WWW. Wi kszo± serwerów aplikacji zawiera komponenty i funkcje umo»liwiaj ce obsªug usªug na poziomie aplikacji, takich jak pul poª cze«, pul obiektów, obsªuga transakcji, usªugi obsªugi wiadomo±ci itp. 18 / 56

Integracja serwerów 19 / 56

Oracle Application Server Containers 20 / 56

Servlet API Pakiety javax.servlet i javax.servlet.http reprezentuj interfejsy i klasy dla api serwletu. Pakiet javax.servlet zawiera wiele interfejsów i klas u»ywanych przez serwlet lub kontener WWW. Nie s specyczne dla»adnego protokoªu. Pakiet javax.servlet.http zawiera interfejsy i klasy, które s odpowiedzialne tylko za» dania http. 21 / 56

Pakiet javax.servlet Pakiet javax.servlet stanowi podstaw API Servlet. Zawiera podstawowy interfejs Servlet, który wszystkie serwlety musz implementowa w jednej lub innej formie, oraz abstrakcyjn klas GenericServlet w celu opracowania podstawowych serwletów. Pakiet zawiera równie» klasy do komunikacji z serwerem hosta i klientem (ServletRequest i ServletResponse) i komunikowania si z klientem (ServletInputStream i ServletOutputStream). Serwlety powinny ograniczy si do klas tego pakietu w sytuacjach, w których nieznany jest protokóª bazowy. 22 / 56

Hierarchia javax.servlet 23 / 56

Pakiet javax.servlet.http Pakiet javax.servlet.http umo»liwia tworzenie serwletów obsªuguj cych protokóª HTTP. Chocia» podstawowa funkcjonalno± pakietu javax.servlet zapewnia wszystko, co niezb dne do tworzenia stron WWW, wyspecjalizowane klasy w tym pakiecie automatyzuj wiele innych zada«. Abstrakcyjna klasa HttpServlet obejmuje obsªug ró»nych metod» dania HTTP i nagªówków. Interfejsy HttpServletRequest i HttpServletResponse umo»liwiaj dodatkow interakcj z serwerem internetowym, podczas gdy HttpSession zapewnia wbudowan funkcj ±ledzenia sesji. Klasa Cookie umo»liwia szybkie kongurowanie i przetwarzanie plików cookie HTTP, a klasa HttpUtils robi to samo dla ªa«cuchów zapyta«. 24 / 56

Hierarchia javax.servlet.http 25 / 56

Cykl»ycia serwletu 1 Klasa serwletu jest ªadowana - Classloader jest odpowiedzialny, aby zaªadowa klas serwletu. Klasa serwletu jest ªadowana, gdy pierwsze» danie serwletu jest odbierane przez kontener internetowy. 2 Instancja serwletu jest tworzona - Kontener internetowy tworzy instancj serwletu po zaªadowaniu klasy serwletu. Instancja serwletu jest tworzona tylko raz w cyklu»ycia serwletu. 3 Metoda init() jest wywoªywana - Kontener internetowy wywoªuje metod public void init(servletcong cong) tylko raz po utworzeniu instancji serwletu. Metoda init jest u»ywana do inicjowania serwletu. 4 Metoda service() jest wywoªywana - Kontener internetowy wywoªuje metod public void service(servletrequest request, ServletResponse response) przy ka»dym odebraniu» dania dotycz cego serwletu 5 Metoda destroy() jest wywoªywana - Kontener internetowy wywoªuje metod public void destroy() przed usuni ciem instancji serwletu z usªugi. Daje serwletowi mo»liwo± oczyszczenia dowolnego zasobu na przykªad pami ci, w tku itp. 26 / 56

Jak dziaªa serwlet? Serwer sprawdza, czy serwlet jest» dany po raz pierwszy. Je±li tak, kontener internetowy wykonuje nast puj ce zadania: Šaduje klas serwletu. Instancjuje klas serwletu. Wywoªuje metod init przekazuj c obiekt ServletCong W przeciwnym wypadku: Wywoªuje metod obsªugi» dania i obiektów odpowiedzi Kontener internetowy wywoªuje metod destroy(), gdy jest potrzebuje usun serwlet, na przykªad w momencie zatrzymania serwera lub rozwini cia projektu. 27 / 56

Servlet - prosty przykªad import java. io.*; import javax. servlet.*; public class FirstServlet implements Servlet { ServletConfig config = null ; public void init ( ServletConfig config ){ this. config = config ; System. out. println (" servlet is initialized " ); } public void service ( ServletRequest req, ServletResponse res ) throws IOException, ServletException { res. setcontenttype (" text / html " ); PrintWriter out = res. getwriter (); out. print (" <html >< body >" ); out. print (" <b > hello simple servlet </b >" ); out. print (" </ body > </ html >" ); } public void destroy (){ System. out. println (" servlet is destroyed " ); public ServletConfig getservletconfig (){ return config ;} public String getservletinfo (){ return " copyright 2017 " ;} } 28 / 56

Servlet - przykªad klasy uruchamiaj cej import org. eclipse. jetty. server. Server ; import org. eclipse. jetty. servlet. ServletContextHandler ; import org. eclipse. jetty. servlet. ServletHolder ; public class FirstServletRunner { public static void main ( String [] args ) throws Exception { Server server = new Server (8080); ServletContextHandler context = new ServletContextHandler ( ServletContextHandler. SESSIONS ); context. setcontextpath ("/" ); server. sethandler ( context ); context. addservlet ( new ServletHolder ( new FirstServlet ()), " /* " ); } } server. start (); server. join (); 29 / 56

HttpServlet - prosty przykªad import java. io.*; import javax. servlet.*; public class HelloServlet extends HttpServlet { private String greeting =" Hello World "; public HelloServlet (){} } public HelloServlet ( String greeting ){ this. greeting = greeting ; } protected void doget ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response. setcontenttype (" text / html " ); response. setstatus ( HttpServletResponse. SC_OK ); response. getwriter (). println (" <h1 >"+ greeting +" </h1 >" ); response. getwriter (). println (" session =" + request. getsession ( true ). getid ()); } 30 / 56

HttpServlet - przykªad klasy uruchamiaj cej import org. eclipse. jetty. server. Server ; import org. eclipse. jetty. servlet. ServletContextHandler ; import org. eclipse. jetty. servlet. ServletHolder ; public class OneServletContext { public static void main ( String [] args ) throws Exception { Server server = new Server (8080); ServletContextHandler context = new ServletContextHandler ( ServletContextHandler. SESSIONS ); context. setcontextpath ("/" ); server. sethandler ( context ); context. addservlet ( new ServletHolder ( new HelloServlet ()), " /* " ); context. addservlet ( new ServletHolder ( new HelloServlet (" Buongiorno Mondo " )), "/ it /* " ); context. addservlet ( new ServletHolder ( new HelloServlet (" Bonjour le Monde " )), "/ fr /* " ); server. start (); server. join (); } 31 / 56 }

Serwlety - tworzenie od podstaw Utwórz struktur katalogów Utwórz serwlet Skompiluj serwlet Utwórz deskryptor wdra»ania Uruchom serwer i wdró» projekt Uzyskaj dost p do serwletu 32 / 56

Struktura katalogów 33 / 56

Tworzenie i kompilacja serwletu Istniej trzy sposoby tworzenia serwletu. Poprzez implementacj interfejsu Servlet Poprzez dziedziczenie klasy GenericServlet Poprzez dziedziczenie klasy HttpServlet Klasa HttpServlet jest powszechnie u»ywana do tworzenia serwletu, poniewa» udost pnia metody obsªugiwania» da«http, takich jak doget (), dopost, dohead () itp. Aby skompilowa serwlet nale»y zaª czy plik JAR dla odpowiedniej platformy uruchomieniowej (serwera aplikacji), np. servlet-api.jar dla Apache Tomcat 34 / 56

HttpServlet - zaawansowany przykªad import javax. servlet. http.*; import javax. servlet.*; import java. io.*; public class DemoServ extends HttpServlet { public void doget ( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { } } res. setcontenttype (" text / html " ); PrintWriter pw= res. getwriter (); String name = req. getparameter (" name " ); pw. println (" Welcome "+ name ); 35 / 56

index.html - przykªad <html ><body > < form action =" welcome " method =" get " > Enter your name <input type =" text " name =" name " ><br > < input type =" submit " value =" login " > 36 / 56

Tworzenie deskryptora wdra»ania (plik web.xml ) Deskryptor wdra»ania jest plikiem xml, z którego Web Container uzyskuje informacje dotycz ce wywoªywanego serwletu. Kontener internetowy u»ywa parsera, aby uzyska informacje z pliku web.xml. Istnieje wiele parserów XML, takich jak SAX, DOM i Pull. Elementy pliku web.xml: <web-app> reprezentuje caª aplikacj. <servlet> to podcz ± <web-app> i reprezentuje serwlet. <servlet-name> jest podrz dnym elementem <servlet> reprezentuje nazw serwletu. <servlet-class> jest podrz dnym elementem <servlet> reprezentuje klas serwletu. <servlet-mapping> to podrz dny element <web-app>. Sªu»y do mapowania serwletu. <url-pattern> jest elementem podrz dnym <servlet-mapping>. Ten wzorzec jest u»ywany po stronie klienta do wywoªania serwletu. 37 / 56

Plik web.xml - przykªad <? xml version =" 1.0 " encoding =" UTF -8 "? > <web - app > < servlet > <servlet - name > MojeDemo </ servlet - name > <servlet - class > DemoServ </ servlet - class > </ servlet > <servlet - mapping > <servlet - name > MojeDemo </ servlet - name > <url - pattern >/ welcome </ url - pattern > </ servlet - mapping > </ web - app > 38 / 56

Wdra»anie projektu - tworzenie pliku WAR Plik WAR (web archive) zawiera pliki projektu sieciowego. Mo»e mie pliki servletu, xml, jsp, obrazki, html, css, js itp. Oszcz dza czas: plik WAR ª czy wszystkie pliki w jedn jednostk, przez co transfer plików z klienta na serwer zajmuje mniej czasu. Jak stworzy plik WAR? jar -cvf projectname.war * za pomoc Eclipse EE (Export->War le) 39 / 56

Wdra»anie na serwer i jego uruchomienie import org. eclipse. jetty. webapp. WebAppContext ; import org. eclipse. jetty. server. Server ; public class OneWebApp { public static void main ( String [] args ) throws Exception { String jetty_home = System. getproperty (" jetty. home ","." ); Server server = new Server (8080); WebAppContext webapp = new WebAppContext (); webapp. setcontextpath ("/ test " ); webapp. setwar ( jetty_home +"/ webapps / ServletDemo. war " ); server. sethandler ( webapp ); } } server. start (); server. join (); 40 / 56

RequestDispatcher - forward() public void forward(servletrequest request,servletresponse response) throws ServletException, java.io.ioexception 41 / 56

RequestDispatcher - include() public void include(servletrequest request,servletresponse response) throws ServletException, java.io.ioexception 42 / 56

RequestDispatcher - przykªad 43 / 56

RequestDispatcher - przykªad index.html <form action =" servlet1 " method =" post " > Name : < input type =" text " name =" username "/ ><br / > Password : < input type =" password " name =" userpass "/ ><br / > < input type =" submit " value =" login "/ > </ form > 44 / 56

RequestDispatcher - przykªad Login.java (1/2) import java. io.*; import javax. servlet.*; import javax. servlet. http.*; public class Login extends HttpServlet { public void dopost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response. setcontenttype (" text / html " ); PrintWriter out = response. getwriter (); String n= request. getparameter (" username " ); String p= request. getparameter (" userpass " ); } }... 45 / 56

RequestDispatcher - przykªad Login.java (2/2) public class Login extends HttpServlet { public void dopost (...){... if (p. equals (" servlet " )){ RequestDispatcher rd = request. getrequestdispatcher (" servlet2 " ); rd. forward ( request, response ); } else { out. print (" Sorry UserName or Password Error!" ); RequestDispatcher rd = request. getrequestdispatcher ("/ index. html " ); rd. include ( request, response ); } } } 46 / 56

RequestDispatcher - przykªad WelcomeServlet.java import java. io.*; import javax. servlet.*; import javax. servlet. http.*; public class WelcomeServlet extends HttpServlet { public void dopost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response. setcontenttype (" text / html " ); PrintWriter out = response. getwriter (); String n= request. getparameter (" username " ); out. print (" Welcome "+n ); } } 47 / 56

RequestDispatcher - przykªad web.xml (1/2) <web - app > < servlet > <servlet - name >Login </ servlet - name > <servlet - class >Login </ servlet - class > </ servlet > < servlet > <servlet - name > WelcomeServlet </ servlet - name > <servlet - class > WelcomeServlet </ servlet - class > </ servlet > <servlet - mapping > <servlet - name >Login </ servlet - name > <url - pattern >/ servlet1 </ url - pattern > </ servlet - mapping > <servlet - mapping > <servlet - name > WelcomeServlet </ servlet - name > <url - pattern >/ servlet2 </ url - pattern > </ servlet - mapping >... </ web - app > 48 / 56

RequestDispatcher - przykªad web.xml (2/2) <web - app >... < welcome - file - list > < welcome - file > index. html </ welcome - file > </ welcome - file - list > </ web - app > 49 / 56

Wdra»anie na serwer i jego uruchomienie import org. eclipse. jetty. webapp. WebAppContext ; import org. eclipse. jetty. server. Server ; public class LoginRunner { public static void main ( String [] args ) throws Exception { String jetty_home = System. getproperty (" jetty. home ","." ); Server server = new Server (8080); WebAppContext webapp = new WebAppContext (); webapp. setcontextpath ("/ login " ); webapp. setwar ( jetty_home +"/ webapps / LoginServlet. war " ); server. sethandler ( webapp ); } } server. start (); server. join (); 50 / 56

Przechowywanie i ±ledzenie sesji Sesja - to pewien przedziaª czasowy ledzenie sesji to przechowywanie stanu (danych) u»ytkownika W ±wiecie serwletów mamy managera sesji Protokóª HTTP jest bezstanowy, wi c potrzebujemy ro»nych technik ±ledzenia, aby móc rozpoznawa u»ytkowników, np. zalogowanych S 4 podstawowe techniki, które posiadaj wsparcie w serwletach Cookies Hidden Form Field URL Rewriting HttpSession 51 / 56

Cookies Plik cookie to niewielka cz ± informacji, która wyst puje mi dzy wieloma» daniami klienta. Plik cookie zawiera nazw, pojedyncz warto± i atrybuty opcjonalne, takie jak komentarze, ±cie»ki i domeny, maksymalny wiek i numer wersji. Domy±lnie ka»de» danie jest uwa»any za nowe» danie. W technologii plików cookie dodajemy plik cookie z odpowiedzi z serwletu. Plik cookie jest przechowywany w pami ci podr cznej przegl darki. Nast pnie, je±li» danie jest wysyªane przez u»ytkownika, plik cookie jest dodawany z» daniem domy±lnie. Mo»emy w ten sposób rozpozna u»ytkownika. 52 / 56

Hidden Form Field Niewidziale pole tekstowe jest u»ywane, aby przechowywa stan <input type="hidden" name="uname" value="warto± _stanu"> W takim przypadku przechowujemy informacje w ukrytym polu i pobieramy je z innego serwletu. Takie podej±cie jest lepsze, je±li musimy przesªa formularz na wszystkich stronach i nie chcemy polega na przegl darce. Zalety: Zawsze b dzie dziaªa, niezale»nie czy plik cookie jest wyª czony, czy nie. Wady: 53 / 56 Jest utrzymywany po stronie serwera. Na ka»dej ze stron wymagane jest poªo»enie dodatkowych pól ukrytych. Mo»na u»ywa tylko informacji tekstowych.

URL Rewriting W przepisywaniu adresu URL dodajemy token lub identykator do adresu URL nast pnego serwletu lub nast pnego zasobu. Mo»emy wysyªa par nazw / warto±ci parametru przy u»yciu nast puj cego formatu: url?name1=value1&name2=value2&?? Zalety: Zawsze b dzie dziaªa, niezale»nie czy plik cookie jest wyª czony, czy nie. Nie jest wymagane»adne dodatkowe ukryte pole Wady: B dzie dziaªa tylko z linkami. Mo»e przekazywa tylko informacje tekstowe. 54 / 56

HttpSession Kontener tworzy identykator sesji dla ka»dego u»ytkownika. Kontener u»ywa tego identykatora, aby zidentykowa danego u»ytkownika. Mo»na u»y obiektu HttpSession do: powi zania obiektów przegl dania i manipulowania informacjami o sesji, np. identykator sesji, czas utworzenia i ostatni dost p. Jak uzyska dost p do obiektu sesji: public HttpSession getsession() public HttpSession getsession(boolean create) 55 / 56

56 / 56 Pytania?