ćwiczenia 11 - Instytutu Informatyki UJ
Transkrypt
ćwiczenia 11 - Instytutu Informatyki UJ
Programowanie w Sieci Internet — Java - zaczynamy (JSP) Kraków, 2 / 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić • Zaczynamy od serwera, • a następnie piszemy prosty kod jsp, • dyrektywy i deklaracje w JSP, • sesje i parametry zapytania, • Java Beans, • budowa Beana, • Bean scopes. Serwery JSP Aby klient mógł się cieszyć tym co tam naklepiemy w kodzie JSP, wpierw musimy umieścić nasze wypociny na kompatybilnym serwerze, który będzie potrafił obsłużyć nasz kod. Serwery obsługujące JSP: • Blazix, • TomCat, • WebLogix, • WebSphere. Istnieje jeszcze z pewnością cała masa innych. Pamiętaj, nie otwieraj swoich stron jsp poprzez file:// a przez http:// (to znaczy, że pliki z rozszerzeniem .jsp powinny się znajdować w odpowiednim katalogu. Pisanie kodu JSP Instrukcje JSP piszemy wewnątrz kodu html, podobnie jak w przypadku PHP, z tym, że tym razem blok kodu (scriptlet) zaczyna się od <% a kończy %> Wstawienie ewaluowanej wartości JSP zaczyna się od <%= Przykład: <HTML> <BODY> Hello World! The time is now <%= new java.util.Date() %> </BODY> </HTML> lub z użyciem scriptlet’u: <HTML> <BODY> <% java.util.Date date = new java.util.Date(); %> Hello World! The time is now <%= date %> </BODY> </HTML> Pisanie kodu JSP Pisząc w Scriptlet’cie możemy wypisywać do logu serwera (konsoli) lub na wyjście HTML (dzięki predefiniowanej zmiennej out). System.out.println(“wypisze ten tekst w logu”); out.println(“wypisze ten tekst w HTMLu”); Kod scriptlet można także mieszać z kodem HTML bez użycia out.println(); <% for(int i = 0; i < 100; ++i) %> liczba <%= i %><br> Wypisze 100 linijek od liczba 0<br> do liczba 99<br> Innymi przydatnymi zmiennymi predefiniowanymi są request i response. Dają one nam dostęp do zapytań i odpowiedzi HTMLowych. Dzięki zmiennej request możemy się dostać chociażby do takich pól jak IP adres klienta: out.println(request.getRemoteHost()); a dzięki response możemy modyfikować wysyłaną odpowiedź do klienta. Na przykład wysłanie prośby o przekierowanie: response.sendRedirect(adresPrzekierowania); Dyrektywy i deklaracje w JSP Dyrektywy używamy aby zaimportować paczki kodu. Dyrektywa zaczyna się od znacznika <%@ istnieją dyrektywy strony <%@ page import=”java.util.*” %> lub zwykłe dyrektywy impotujące, które wstrzykują kod danego pliku, np.: <%@ import=”tam_oj_tam_oj.jsp” %> Wiele importów można umieścić po przecinkach np.: <%@ page import=”java.util.*,java.math.*” %> Deklaracje w JSP rozpoczynają się od <%! <%! Date getCzas(){ return new Date(); } %> a następnie możemy użyć funkcji przez zapis: Hello World! The time is now <%= getCzas() %> Sesje i parametry zapytania Sesje w JSP możemy tworzyć i odczytywać poprzez predefiniowany zmienną session. session.setAttribute(“attrName”,attrVar); session.getAttribute(“attrName”); Aby wydobyć dane przesyłane w zapytaniu (np. dane z formularza) można użyć funkcji request.getParameter(“paramName”); Funkcja zwraca String. Fasolka po bretońsku - czyli Java Beans Fasolki to instancje klasy oddzielające logikę biznesową od logiki prezentacji. Deklaracja Beana: <jsp:useBean id=beanName class=beanClass scope=”page | request | session |application” /> • beanName - nazwa referencyjna do Beana. • beanClass - klasa która zawiera instancję Beana. Użycie Beana: <jsp:setProperty name=id property=someProperty value=someValue /> • id - nazwa Beana (taka jaką podaliśmy w tagu jsp:useBean). • property - nazwa wartości, którą przekazujemy do Beana. • value - wartość tego property. Małe co nieco - czyli budowa Beana Beany mają strukturę jak zwykłe klasy w Javie. Mają one jednak metody dostępowe (accessors) w postaci getterów i setterów. Jeśli mamy pola, w formularzu, o nazwach: • name, • login. To accessory w Beanie będą miały nazwy: • getName(); • setName(...); • getLogin(); • setLogin(...); Nazwy metod mają konwencję get/set+NazwaPolaOdDużejLitery() Metody te powinny być publiczne. Dzięki zachowaniu tej konwencji możliwym staje się automatyczne ustawianie i odczytywanie danych z atrybutów Beana. Zasięg ‘fasolki’ - Bean scope Beany mogą mieć różne zasięgi działania: • Page - każdy obiekt utworzony w tym Beanie zostanie usunięty jak tylko strona zostanie zamknięta, (jest to wartość domyślna dla każdego nowego Beana) • Request - obiekty istnieją tak długo jak istnieje zapytanie (request), jeśli chcemy więc użyć forwardowania, to będziemy musieli dołączyć Beana do nowego zapytania, • Session - obiekty istnieją tak długo jak sesja, to znaczy tak długo jak zostało to ustawione w sesji (nie należy utożsamiać sesji jedynie z logowaniem użytkownika, gdyż sesja może istnieć niezależnie od logowania i użytkownika), czyli od momentu otworzenia sesji do momentu jej zamknięcia lub zamknięcia przeglądarki i unieważnienia sesji. Dziękuję za uwagę!