Serwlety i JSP na platformie Java EE. Damian Makarow

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

mgr inż. Michał Paluch

1 Wprowadzenie do J2EE

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


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

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

Wybrane działy Informatyki Stosowanej

Java wybrane technologie spotkanie nr 5. Java Server Pages

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

Aplikacje Internetowe, Servlety, JSP i JDBC

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

Serwery aplikacji. dr Radosław Matusik. radmat

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

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

Wybrane działy Informatyki Stosowanej

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

Enterprise JavaBeans (EJB)

Serwery aplikacji. dr Radosław Matusik. radmat

prepared by: Programowanie WWW Servlety

Piotr Laskowski Krzysztof Stefański. Java Servlets

JavaServer Pages. Konrad Kurdej Karol Strzelecki

Architektury Usług Internetowych. Laboratorium 1. Servlety

Wzorce prezentacji internetowych

Wybrane działy Informatyki Stosowanej

Architektury Usług Internetowych. Laboratorium 1 Servlety

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje WWW Wprowadzenie

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

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

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

Kurs WWW 1. Paweł Rajba

Przegląd technologii JSP

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

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

Logika prezentacji III

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

Aplikacje WWW - laboratorium

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

Serwery aplikacji. dr Radosław Matusik. radmat

Programowanie komponentowe 5

Java wybrane technologie spotkanie nr 3. Serwlety

Testowanie aplikacji Java Servlets

Wprowadzenie do J2EE. Maciej Zakrzewicz.

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

CGI, serwlety Java i szablony JSP. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

OpenLaszlo. OpenLaszlo

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

Programowanie w Javie 2. Płock, 26 luty 2014 r.

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

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

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

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

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

Plan. Stan sesji (1/2) Stan sesji (2/2) Stan sesji Tworzenie przycisku Integracja prostego formularza z raportem Tworzenie formularza z raportem

Komunikacja między serwletami

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

Programowanie obiektowe zastosowanie języka Java SE

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

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

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

prepared by: Programowanie WWW Model-View-Controller

EJB 3.0 (Enterprise JavaBeans 3.0)

prepared by: Java Server Pages Sesje, cookies, znaczniki

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

In»ynieria systemów informacyjnych - Adam Krechowicz

Aplikacje RMI

Aplikacje WWW - laboratorium

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

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

Enterprise JavaBeans

2 Przykªad strony JSP. 3 Elementy dokumentu JSP

Java EE: Serwlety i filtry serwletów

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

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

Java Server Faces - wprowadzenie

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

b) Jako nazwę projektu wpisz SerwletyJSPJSTL. Nie zmieniaj wartości pozostałych opcji. Kliknij przycisk Next >.

Zagadnienia projektowania aplikacji J2EE

Programowanie obiektowe

Aplikacje internetowe - laboratorium

Java Servlet i Java Server Pages

Specyfikacja implementacyjna aplikacji serwerowej

Facelets ViewHandler

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

TIN Techniki Internetowe Lato 2005

JAX-RS czyli REST w Javie. Adam Kędziora

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Czym są serwlety Java? Serwlety Java. Zalety serwletów Java (w porównaniu z CGI)

Java Database Connectivity

Tworzenie i wykorzystanie usług

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Aplikacje WWW - laboratorium

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Transkrypt:

Serwlety i JSP na platformie Java EE Damian Makarow

Przebieg prezentacji Serwlety JSP Serwlety a aplikacje Java EE Sesje Ciasteczka Cykl życia Znaczniki Scope JSTL Serwlety+JSP Serwlety i JSP na platformie Java EE 2

Serwlety Wprowadzenie Serwlety i JSP na platformie Java EE 3

Co to jest serwlet? kawałek kodu w Javie po stronie serwera HTTP rozszerza możliwośći serwera CGI, w Javie, wzbogacone o biblioteki ułatwiające życie programiście (np. utrzymywanie sesji, wpólne zasoby serwletów, ciasteczka, obsługa GET/POST/PUT) serwlety mogą korzystać ze standardowych klas Javy (z VM), klas wchodzących w skład Servlet API: javax.servlet.* i javax.servlet.http.* oraz ewentualnie z dodatkowych bibliotek zainstalowanych na serwerze. serwlety nie mają interfejsu użytkownika, komunikują się z przeglądarką (za pośrednictwem serwera WWW wspierającego serwlety) za pomocą protokołu HTTP Serwlety i JSP na platformie Java EE 4

Do czego służy serwlet? Do wyświetlania dynamicznych stron WWW (alternatywa do popularnego PHP) przetwarzanie formularzy forwarding wyświetlania wyników zapytań do b. d. (tu zaleca się strony JSP) Serwlety i JSP na platformie Java EE 5

Serwlety Miejsce serwletów w aplikacjach J2EE Serwlety i JSP na platformie Java EE 6

Miejsce serwletów w aplikacjach J2EE serwlety to rozszerzenie serwera WWW blisko interfejsu użytkownika: zorientowane na żądanie/odpowiedź (request/response) serwlety działają w odpowiedzi na żadania klienta są interfejsem do serwera aplikacyjnego/bazy danych/ejb pełnią rolę kontrolera w schemacie Model-View-Controller, za widok odpowiedzialne są strony JSP, model to EJB w serwletach zaleca się umieszczanie tylko lekkich funkji biznesowych, ale w małych aplikacjach cała logika może być w serwletach i JSP Serwlety i JSP na platformie Java EE 7

Model J2EE Serwlety i JSP na platformie Java EE 8

Kontenery w modelu J2EE Serwlety i JSP na platformie Java EE 9

Komunikacja z serwerem przedefiniowanie metod doget, dopost, doput, dodelete. Te metody są wywoływane przez metodę service zdefiniowaną w Servlet przy każdym żądaniu do serwera dotyczącym serwletu. dane od klienta (przeglądarki) są w obiekcie HttpServletRequest. dane do klienta symbolizuje obiekt HttpServletResponse Serwlety i JSP na platformie Java EE 10

Ważne metody obiektu request: getparameter - zwraca parametr, np. z formularza getcookies - daje ciasteczka getsession - podaje obiekt sesji getreader (dla danych tekstowych) getinputstream (dla danych binarnych) Serwlety i JSP na platformie Java EE 11

Ważne metody obiektu response: getwriter (dane tekstowe) getoutputstream (dane binarne) Serwlety i JSP na platformie Java EE 12

Serwlet Java Serwlet musi: dziedziczyć po klasie HttpServlet obsługiwać jedną z metod: doget(httpservletrequest request, HttpServletResponse response) dopost(httpservletrequest request, HttpServletResponse response) opcjonalnie (wywoływane tylko raz!): public void init(servletconfig config) public void destroy() Serwlety i JSP na platformie Java EE 13

Serwlety Cykl życia serwletu Serwlety i JSP na platformie Java EE 14

Cykl życia serwletu init() doget/dopost() destroy() Serwlety i JSP na platformie Java EE 15

Cykl życia serwletu Cykl życia serwletu Java przebiega według następujących kroków: 1. Klient HTTP przekazuje żądanie HTTP do serwera HTTP. Żądanie jest kierowane do serwera aplikacji Java EE. 2. Serwer aplikacji analizuje adres URL żądania HTTP, pobiera z dysku klasę wskazanego serwletu i tworzy jej obiekt (tzw. obiekt serwletu). 3. Serwer aplikacji wywołuje metodę init() obiektu serwletu. 4. Serwer aplikacji wywołuje metodę doget() obiektu serwletu. Dokument będący wynikiem działania metody doget() jest przekazywany klientowi HTTP. Obsługa żądania została zakończona. Serwlety i JSP na platformie Java EE 16

Cykl życia serwletu na początku system woła metodę init(), w niej można np. połączyć się z bazą danych jeżeli coś pójdzie nie tak to należy rzucić wyjątek UnavailableException można wołać metodę getinitparameter, interpretowaną przez serwer (kontener), np. jako init-param z pliku web.xml w Tomcat'cie. W takim parametrze może być zapisany np. URL do bazy danych. gdy serwer zdecyduje wyrzucić serwlet z pamięci to wywołuje metodę destroy. Uwaga! Jeżeli metoda do[get Post] wykonuje się długo, to trzeba zadbać o jej zakończenie. Jeżeli serwlet uruchamiał wątki, to też trzeba je przerwać. Serwlety i JSP na platformie Java EE 17

Wzmianka o wielowątkowości Serwlety wykonują się w środowisku wielowątkowym, więc może się zdarzyć, że wiele kopii serwletu będzie działać naraz. A może być tak, że będzie jedna instancja serwletu, ale wiele wątków wykonujących metodę service. Jeżeli w serwlecie jest odwołanie do zasobu, który wymaga wyłączności to: trzeba zapewnić wykluczanie ręcznie, np. używając zmiennych/metod synchronized zadeklarować, że serwlet implementuje interfejs SingleThreadModel, wtedy serwer uruchomi jednocześnie tylko jedną instancję metody service, np. public class ReceiptServlet extends HttpServlet implements SingleThreadModel. Ten interfejs nie zawiera żadnych metod, jest tylko znacznikiem dla kontenera. Serwlety i JSP na platformie Java EE 18

Serwlety Sesje i ciasteczka Serwlety i JSP na platformie Java EE 19

Utrzymywanie stanu (session tracking) To jedna z najważniejszych zalet serwletów. Nie ma tego w CGI. Cechy: Obiekty nie są nigdzie składowane, tylko istnieją w pamięci kontenera. Metody operują na referencjach. Po odczytaniu referencji metodą getattribute operujemy już na oryginalnym (jedynym!) obiekcie. Po odczytaniu atrybutu trzeba sprawdzić czy jest równy null, jeżeli tak to trzeba utworzyć nowy obiekt (uwaga na wielowątkowość). Sesje działają standardowo na ciasteczkach. W ciasteczku jest tylko id sesji, reszta siedzi w pamięci kontenera. Jeżeli przeglądarka nie obsługuje ciasteczek to trzeba używać metody encodeurl(). Sesje nie są związane z jednym serwletem, różne serwlety korzystają z tej samej sesji Serwlety i JSP na platformie Java EE 20

Sesje Problem: protokół HTTP jest bezstanowy Emulacja sesji Każda sesja otrzymuje identyfikator Stan sesji przechowywany przez serwer aplikacji Stan sesji usuwany po wygaśnięciu czasu ważności Serwlety i JSP na platformie Java EE 21

Sesje przykład HttpSession session = request.getsession(true); (czytanie/pisanie) Klasa ref_obiektu1 = new Klasa(); (pisanie) session.putattribute("dluga.nazwa_atr", ref_obiektu1); (pisanie) Klasa ref_obiektu2 = (Klasa) session.getattribute("dluga.nazwa_atr"); (czytanie) Serwlety i JSP na platformie Java EE 22

Ciasteczka Zmienne Cookies reprezentowane w postaci obiektów klasy Cookie Wysyłanie zmiennych Cookies: response.addcookie() Odczyt zmiennych Cookies: request.getcookies() Serwlety i JSP na platformie Java EE 23

Ciasteczka Wysyłanie String wartosc = wartosc"; Cookie ciacho = new Cookie("Nazwa", wartosc); response.addcookie(ciacho); Odbieranie Cookie[] cookies = request.getcookies(); String wartosc; for (int i = 0; i < cookies.length; i++) { if (cookies[i].getname().equals("nazwa")) wartosc = thiscookie.getvalue(); } Serwlety i JSP na platformie Java EE 24

HTTPSession czy Cookies? Oba mechanizmy pozwalają przechowywać stan sesji Cookies wymaga przesyłania obiektów stanu w nagłówkach HTTP HTTPSession obsługuje dowolne typy obiektów stanu Bezpieczeństwo Serwlety i JSP na platformie Java EE 25

Java Server Pages Wprowadzenie Serwlety i JSP na platformie Java EE 26

Co to jest JSP? Technologia Java Server Pages (JSP) to technologia szablonów umożliwiających łatwe łączenie statycznego kodu HTML lub XML z dynamiczną zawartościągenerowaną przez kod Java. Rozszerzenie technologii serwletów umożliwia osadzanie kodu Javy w dokumencie html Podstawowe narzędzie tworzenia warstwy prezentacji w architekturze Java EE Skryptlet- kod osadzony w dokumencie html za pomocą znaczników jsp Serwlety i JSP na platformie Java EE 27

JSP-Cykl życia jspinit() załadowanie zasobów _jspservice() Przetwarzanie żądań jspdestroy() Zwolnienie zasobów Serwlety i JSP na platformie Java EE 28

Java Server Pages Znaczniki i ich zastosowanie Serwlety i JSP na platformie Java EE 29

Dyrektywy Kontrolują sposób translacji JSP do serwletu Dyrektywy umieszczone są w znacznikach <%@%> Dostępne są trzy dyrektywy: <%@ include %>: włączenie zewnętrznego pliku <%@ page %>: ustawienia strony <%@ taglib %>: wskazanie na bibliotekę znaczników <%@page contenttype="text/html" pageencoding="utf-8"%> Serwlety i JSP na platformie Java EE 30

Deklaracje Pozwalają na deklarowanie metod i składowych serwletu wynikowego Mogą zawierać inicjalizację Wprowadzane przez znaczniki <%! %> <%! int licznik = 0; %> <%! int a, b, c; %> <%! Array mojatablica = new Array(); %> Serwlety i JSP na platformie Java EE 31

Wyrażenia Znaczniki XML umożliwiające wartościowanie wyrażenia Wartość konwertowana do łańcucha znaków i włączana do wynikowego kodu HTML lub XML Wprowadzane przez znaczniki <%= %> <%! Calendar today = new GregorianCalendar(); %> <P>Dzisiejsza data to <%= today.get(calendar.day_of_month) %>, <%= today.get(calendar.month) %>, roku <%= today.get(calendar.year) %> </p> Serwlety i JSP na platformie Java EE 32

Skryptlety Znaczniki XML umożliwiające osadzanie kodu Java Mogą generować kod HTML lub XML za pomocą predefiniowanego obiektu out Wprowadzane przez znaczniki <% %> <% Calendar dzis = new GregorianCalendar(); int godzina = dzis.get(calendar.hour_of_day); out.println("<b>jest godzina " + godzina + "</B>"); %> Serwlety i JSP na platformie Java EE 33

Znaczniki jsp - akcje Znaczniki XML wywołujące akcje serwera aplikacji Dostępne akcje <jsp:include>: włączenie zewnętrznego kodu <jsp:forward>: przekazanie sterowania <jsp:param>: zdefiniowanie parametru <jsp:plugin>: obsługa apletów Java <jsp:fallback>: gdy klient nie obsługuje apletów i znaczniki do obsługi komponentów JavaBean Serwlety i JSP na platformie Java EE 34

Strona JSP a dokument JSP Strony JSP nie są poprawnymi dokumentami XML Standard JSP 1.2 wprowadza tzw. dokumenty JSP znacznik <jsp:root xmlns:jsp=adres> skryptlety, deklaracje i wyrażenia posiadająodpowiadające im znaczniki XML: <jsp:directive> <jsp:declaration> <jsp:expression> <jsp:scriptlet> <jsp:text> Serwlety i JSP na platformie Java EE 35

Java Server Pages Scope-zasięg obiektów Serwlety i JSP na platformie Java EE 36

Scope scope - zasięg zmiennych przekazywanych między kolejnymi cyklami request-response page, request, session, application Serwlety i JSP na platformie Java EE 37

Scope-omówienie Page Podstawowy, domyślny scope. Oznacza, że obiekt z nim powiązany będzie istniał tylko w obrębie danej instancji strony Request Obiekt istnieje w obrębie jednego zapytania. Jedno zapytanie może być obsługiwane przez wiele stron Session Obiekt istnieje w obrębie całej sesji i jest dostępny z poziomu różnych stron Application Scope globalny dla całej aplikacji Serwlety i JSP na platformie Java EE 38

Java Server Pages JSTL kilka słów o standardzie Serwlety i JSP na platformie Java EE 39

JSTL-co to jest? JSTL (Java Standard Tag Library) to standardowa biblioteka znacznikow Javy ulatwajaca pisanie stron JSP, tj. sprawiajaca ze strona JSP staje się bardziej czysta Korzystajac z JSTL-a bardzo czesto korzystamy rownież z Jezyka Wyrazeń (EL - Expression Language), który to wraz z szablonami był swego czasu alternatywą dla technologii JSP. Serwlety i JSP na platformie Java EE 40

JSTL - znaczniki Podstawowe <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> Formatujące <%@ taglib prefix="fmt uri="http://java.sun.com/jsp/jstl/fmt" %> XML <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> SQL <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> Funkcje <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> Serwlety i JSP na platformie Java EE 41

Serwlet + JSP Zastosowanie Serwlety i JSP na platformie Java EE 42

MVC Model View Controller Serwlety i JSP na platformie Java EE 43

MVC przebieg cyklu request-response 1. Przeglądarka wysyła żądanie. Aplikacja jest tak skonfigurowana, że każde żądanie jest kierowane do serwletu kontrolera. 2. Serwlet kontroler analizuje żądanie i tworzy wymagane przez żądany widok obiekty klas zewnętrznych. Interakcja kontrolera z modelem może pociągać za sobą interakcję z bazą danych. 3. Serwlet przekazuje sterowanie do odpowiedniego widoku - strony JSP. 4. JSP pobiera dane z obiektów modelu przygotowanych przez kontroler. Obiekty te mogą udostępniać dane pobrane z bazy danych. 5. JSP generuje wynikowy dokument HTML przesyłany do przeglądarki. Serwlety i JSP na platformie Java EE 44

Zalety Ogromną zaletą tego podejścia jest wykorzystanie mocnych stron każdej z technologii i uniknięcie ich słabości. W JSP niewygodne jest pisanie bardziej skomplikowanych programów, ale za to łatwo jest generować kod strony. Z kolei w serwletach jest na odwrót. Serwlety i JSP na platformie Java EE 45

Przydatne linki http://docs.oracle.com/javaee/ http://tomcat.apache.org/tomcat-4.0-doc/servletapi/ http://www.tutorialspoint.com/jsp/jsp_standard_tag_li brary.htm Serwlety i JSP na platformie Java EE 46

Dziękuję za uwagę Serwlety i JSP na platformie Java EE 47