Serwery aplikacji. dr Radosław Matusik. radmat

Podobne dokumenty
Serwery aplikacji. dr Radosław Matusik. radmat

Serwery aplikacji. dr Radosław Matusik. radmat

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

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Dokumentacja do API Javy.

Rozdział 4 KLASY, OBIEKTY, METODY

TEMAT : KLASY DZIEDZICZENIE

Wykład 8: klasy cz. 4

Aplikacje w środowisku Java

prepared by: Programowanie WWW Servlety

Sesje i logowanie. 1. Wprowadzenie

Java wybrane technologie

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Czym są właściwości. Poprawne projektowanie klas

Aplikacje w środowisku Java

PHP 5 język obiektowy

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Materiały do zajęć VII

Wprowadzenie do projektu QualitySpy

Programowanie obiektowe

Podstawowe wykorzystanie Hibernate

Programowanie obiektowe

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

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Enkapsulacja, dziedziczenie, polimorfizm

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Podstawy Programowania Obiektowego

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie obiektowe

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Technologie obiektowe

Kurs WWW 1. Paweł Rajba

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

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Kurs WWW. Paweł Rajba.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Java Server Faces narzędzie do implementacji w wy prezentacji

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Programowanie wielowarstwowe i komponentowe JSP, JSF

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Programowanie komponentowe 5

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Klasy i obiekty cz II

Wykład 5: Klasy cz. 3

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Java Enterprise Edition spotkanie nr 4. Java Server Pages c.d.

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Aplikacje WWW - laboratorium

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

VPN CI Instrukcja użytkownika

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Metody dostępu do danych

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Interfejsy i klasy wewnętrzne

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Enterprise JavaBeans (EJB)

UML a kod. C++, Java i C#

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Laboratorium 7 Blog: dodawanie i edycja wpisów

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

Programowanie obiektowe

KatMPBSoft - 1 -

1 Wprowadzenie do J2EE

Wykład 4: Klasy i Metody

Wykład 7: Pakiety i Interfejsy

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY


Wykład 5 Okna MDI i SDI, dziedziczenie

Dziedziczenie. dr Jarosław Skaruz

Gatesms.eu Mobilne Rozwiązania dla biznesu

Java: interfejsy i klasy wewnętrzne

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

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

Technologie i usługi internetowe cz. 2

Multimedia JAVA. Historia

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Podstawy technologii WWW

Forum Client - Spring in Swing

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Definiowanie własnych klas

Podstawy programowania III

Transkrypt:

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 pracownika. Java nie pozwala na następującą konstrukcję: <%=session.getattribute("zalogowany").getpesel() %> W tym przypadku niezbędne jest wykonanie rzutowania: <%=((Pracownik)session.getAttribute("zalogowany")).getPesel() %>

Język EL pozwala na pobieranie różnego rodzaju informacji (pochodzących np. z obiektów żądania, odpowiedzi, sesji) w krótki i prosty sposób. Powyższy przykład wygląda następująco: ${sessionscope.zalogowany.pesel}

Do najważniejszych obiektów zaliczyć można: pagescope - mapa atrybutów o zasięgu strony requestscope - mapa atrybutów o zasięgu żądania sessionscope - mapa atrybutów o zasięgu sesji applicationscope - mapa atrybutów o zasięgu kontekstu aplikacji

cookie - mapa ciasteczek header - mapa nagłowków żądania headervalues - mapa nagłówków żądania, która zwraca tablice łańcuchów. Przydatna w przypadku, gdy wiemy, że dany nagłówek może mieć kilka wartości param - mapa parametrów żądania paramvalues - mapa parametrów żądania, która zwraca tablice łańcuchów. Przydatna w przypadku, gdy wiemy, że dany parametr może mieć kilka wartości initparam - mapa parametrów kontekstu

W wyrażeniach języka EL (poza standardowymi obiektami) można bezpośrednio korzystać z nazw atrybutów. Poprawy jest zapis ${zalogowany.pesel} Takie podejście wiąże się jednak z koniecznością przeszukiwania wszystkich możliwych zasięgów, czyli strony, żądania, sesji i kontekstu aplikacji. Jeśli ta sama nazwa występuje w więcej, niż jednym zasięgu, to wybrany zostanie atrybut o najmniejszym zasięgu.

Dostęp do obiektów języka EL Jak zostało wspomniane wcześniej, do obiektów możemy się odwoływać poprzez kropkę, jak w zwykłym języku Java. Problem pojawia się, gdy nazwa elementu, który chcemy wyświetlić, zawiera znaki specjalne, np. minus (np. Content-Type ). Do tego elementu nie odwołamy się używając konstrukcji ${header.content-type} Poprawne odwołanie jest następujące: ${header["content-type"]}

Ćwiczenie 1 Wykorzystując technologię JSP i język wyrażeń EL proszę napisać aplikację webową umożliwiającą pobieranie z formularza wartości ciasteczka i ustawianie ciasteczka.

Ćwiczenie 2 Proszę stworzyć: interfejs Osoba zawierający metodę pobierającą i ustawiającą nazwisko; klasę Pracownik implementującą interfejs Osoba zawierającą metody pobierające i ustawiające nazwisko oraz pole Adres ustawiające adres; klasę Adres zawierającą metodę pobierającą i ustawiającą adres. Powyższe składowe projektu należy umieścić we wspólnym pakiecie (innym, niż domyślny).

Wykorzystując technologię JSP przy pomocy różnych konstrukcji języka EL proszę wypisać: nazwisko osoby wykorzystując (.) dane użytkownika ustawione metodą set.attribute o zasięgu aplikacji wykorzystując [] adres pracownika pochodzący z sesji nazwisko wpisane do listy wykorzystując listę wyrażeń dowolny nagłówek (np. Accept-Encoding) wartość utworzonego ciasteczka.

Java Bean Java Bean jest jedną z najważniejszych konstrukcji występujących w technologiach javowych, nienależąca do standardu języka. Ziarnem Javy może być każda klasa, która: zawiera publiczny konstruktor bezargumentowy. Klasa ta może zawierać oczywiście inne konstruktory. nie powinna udostępniać pól bezpośrednio. Powinna natomiast zawierać metody set i get, dzięki którym pola mogą być modyfikowane. powinna być serializowana. Zauważmy, że powyższe wytyczne nie są związane ze standardem języka. Ich niestosowanie nie spowoduje błędu kompilacji. Jeśli jednak decydujemy się na utworzenie ziarna, a nie zwykłej klasy, to należy trzymać się powyższych zasad.

Przykład: class Pracownik implements Serializable { private String nazwisko; private String pesel;... public Pracownik(){} public String getnazwisko(){return nazwisko;} public String getpesel(){return pesel;} public void setnazwisko(string v){ this.nazwisko=v; } public void setpesel(string v){ this.pesel=v; }... }

Każde ziarno Javy składa się z trzech elementów: właściwości metod zdarzeń

Właściwości Właściwości są publicznymi atrybutami ziarna, które zwykle są reprezentowane przez niepubliczne parametry instancji. Przykład. Niech ziarnem Javy będzie obiekt graficzny, który może mieć określony kolor, np. domyślnie zielony. Wówczas w klasie ziarna powinna pojawić się deklaracja parametru private Color kolor=color.green Ponieważ kolor jest właściwością ziarna, to należy jeszcze dostarczyć metody do manipulacji tą własnością: public Color getkolor() { return kolor; } public void setkolor(color nowykolor) { kolor=nowykolor; repaint(); }

Akcja jsp:usebean Akcja jsp:usebean znajduje lub tworzy ziarno Javy oraz pozwala załadować JavaBean w celu użycia na stronie JSP. Jest to bardzo użyteczna właściwość, ponieważ pozwala wykorzystywać ponownie klasy Javy bez utraty wygody, którą daje JSP w porównaniu do serwletów. Najprostsza składnia określająca użycie ziarna Javy jest następująca: <jsp:usebean id="nazwa" class="pakiet.klasa"} />

Powyższa akcja ładuje ziarna Javy po to, aby można było użyć akcji jsp:setproperty oraz jsp:getproperty w celu określenia i pobrania właściwości JavaBean. Jednakże istnieją dwie inne opcje. Pierwszą z nich jest możliwość użycia jej w formie kontenera, a mianowicie: <jsp:usebean...> zawartość </jsp:usebean> W tym przypadku zawartość powinna być wykonana tylko wtedy, gdy ziarno Javy jest po raz pierwszy wywoływane, a nie kiedy istniejące JavaBean jest znalezione i użyte. Drugą opcją jest to, że oprócz id i class istnieją jeszcze trzy atrybuty, które mogą być użyte: scope, type oraz beanname.

id - zawiera nazwę zmiennej, która wskazuje ziarno Javy class - wyznacza pełną nazwę pakietu JavaBean type - określa typ zmiennej, która odwołuje się do obiektu beanname - nadaje nazwę ziarnu Javy

scope - określa kontekst, w którym ziarno Javy może być dostępne. Dostępne są cztery wartości: page - udostępnia ziarno Javy na bieżącej stronie request - udostępnia ziarno Javy tylko dla bieżącego wywołania klienta session - udostępnia ziarno Javy dla wszystkich stron, które znajdują się w bieżącej sesji application - udostępnia ziarno Javy dla wszystkich stron, które znajdują się w tym samym kontekście serwletu

Przy tworzeniu, bądź też odwoływaniu się do ziarna Javy, należy się zastosować do kilku reguł: Gdy chcemy jedynie uzyskać referencję do ziarna Javy (bez jego tworzenia), to nie trzeba określać atrybutów type oraz class. Można jedynie podać atrybut type, ale musi on wówczas określać jedną z klas bazowych klasy, z której ziarno zostało utworzone. Gdy chcemy utworzyć ziarno Javy, trzeba określić przynajmniej atrybut class. Określa on bowiem klasę, która posłuży do utworzenia ziarna. Klasa ta musi spełniać warunki klasy JavaBean.

Akcja jsp:setproperty Akcja jsp:setproperty określa właściwość ziarna Javy. Ziarna Javy nie są obiektami oderwanymi od rzeczywistości, co więcej - bardzo często reprezentują istniejące w świecie realnym obiekty, np. mogą zostać użyte do ustawiania własności pól ziarna pobranych z formularza. Składnia może wyglądać następująco: <jsp:setproperty name="nazwa" property="właściwość" value="${requestscope.wartość}" />

Takie rozwiązanie wymaga jednak podania wyrażenia EL. Nie jest to kwestia skomplikowana, jednak powyższe rozwiązanie można zapisać następująco: <jsp:setproperty name="nazwa" property="właściwość" param="wartość" /> Atrybut param określa nazwę parametru żądania, czyli informacji pochodzącej np. z pól formularza, którego wartość ma zostać wstawiona do właściwości wartość ziarna Javy.

Rzadko jednak zdarza się, że chcemy modyfikować jedną właściwość ziarna Javy. Z reguły operacje takie wykonywane są jednocześnie dla wielu (czy nawet wszystkich) właściwości ziarna. W takim przypadku stosuje się konstrukcję: <jsp:setproperty name="nazwa" property="*"/> Serwer próbuje wówczas dopasować wszystkie parametry żądania do właściwości ziaren.

Akcja ta może być użyta w dwóch kontekstach: <jsp:usebean id="nazwa"... />... <jsp:setproperty name="nazwa" property="właściwość"... /> lub <jsp:usebean id="nazwa"... >... <jsp:setproperty name="nazwa" property="właściwość"... /> </jsp:usebean>

Dostępne atrybuty: name - określa nazwę własności property - określa własność własności value - określa wartość własności param - określa parametry własności

Akcja jsp:getproperty Akcja jsp:getproperty pobiera wartość właściwości ziarna Javy, konwertuje do typu łańcuchowego, po czym wysyła właściwość ziarna Javy na wyjście. Posiada dwa wymagane atrybuty: name - czyli nazwę ziarna Javy, która została określona przez jsp:usebean property - czyli własność, której wartość należy pobrać Najprostsza składnia jest następująca: <jsp:getproperty name="nazwa" property="własciwosc" />

Ćwiczenie 1 Wykorzystując akcję jsp:usebean proszę odczytać informację pochodzącą z klasy, natomiast wykorzystując akcje jsp:setproperty oraz jsp:getproperty proszę wypisać informację pochodzącą z ziarna Javy.

Ćwiczenie 2 Wykorzystując ziarna Javy proszę wyświetlić informacje pobrane z formularza (np. login i e-mail).

Ćwiczenie 3 Wykorzystując model MVC (Model-View-Controller) i ziarna Javy proszę napisać aplikację umożliwiającą logowanie. Po poprawnym zalogowaniu należy wyświetlić login użytkownika, natomiast w przypadku błędnych danych należy jedynie wyświetlić stosowny komunikat. W tej aplikacji kontrolerem ma być serwlet, widokiem - JSP, natomiast modelem ziarno Javy.

Ćwiczenie 4 Wykorzystując ziarna Javy proszę napisać aplikację umożliwiającą pobieranie adresu e-mail i loginu oraz zapisywanie tych informacji w bazie danych.