Kurs WWW 1. Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/



Podobne dokumenty

Serwery aplikacji. dr Radosław Matusik. radmat

Technologie internetowe

mgr inż. Michał Paluch

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

1 Wprowadzenie do J2EE

Java wybrane technologie spotkanie nr 5. Java Server Pages

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

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

Wybrane działy Informatyki Stosowanej

Aplikacje Internetowe, Servlety, JSP i JDBC

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

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

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

JavaServer Pages. Konrad Kurdej Karol Strzelecki


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

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

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 komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

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

Enterprise JavaBeans (EJB)

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

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

Zmienne i stałe w PHP

Programowanie obiektowe

Aplikacje internetowe i rozproszone - laboratorium

Języki programowania wysokiego poziomu WWW

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Java wybrane technologie spotkanie nr 3. Serwlety

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Podstawowe wykorzystanie Hibernate

Serwlety i JSP na platformie Java EE. Damian Makarow

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Piotr Laskowski Krzysztof Stefański. Java Servlets

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

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

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

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Java jako język programowania

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

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

Java Server Faces - wprowadzenie

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

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

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

Enterprise JavaBeans

Gatesms.eu Mobilne Rozwiązania dla biznesu

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

Należy ściągnąć oprogramowanie Apache na platformę

prepared by: Programowanie WWW Servlety

Facelets ViewHandler

Serwery aplikacji. dr Radosław Matusik. radmat

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Programowanie komponentowe 5

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

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

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

Tworzenie Stron Internetowych. odcinek 10

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Java Server Faces narzędzie do implementacji w wy prezentacji

Multimedia JAVA. Historia

2 Przykªad strony JSP. 3 Elementy dokumentu JSP

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

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

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

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

Aplikacje WWW - laboratorium

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

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

Kurs WWW. Paweł Rajba.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Programowanie i projektowanie obiektowe

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

Programowanie wielowarstwowe i komponentowe JSP, JSF

Zastosowanie komponentów EJB typu Session

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Metody dostępu do danych

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie w Internecie

Wykład 8: klasy cz. 4

XML-RPC: Zdalne wykonywanie procedur

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

Zaawansowane aplikacje internetowe

1 Atrybuty i metody klasowe

Zadanie programistyczne nr 3 z Sieci komputerowych

Platformy Programistyczne Podstawy języka Java

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Transkrypt:

Kurs WWW 1 Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ 1 Na podstawie: Hougland, D. i Tavistock A., JSP. Tworzenie stron WWW, RM, Warszawa 2002

Wprowadzenie Technologia po stronie serwera Strony JSP są kompilowane JSP to specyfikacja, a nie produkt jest kilka implementacji (Tomcat,...) Jest to jeden z elementów J2EE, czyli jest dostępne wiele elementów z Javy Bezpieczeństwo gwarantowane przez silny system typów Obsługa wyjątków

Tomcat Jedna z implementacji JSP, projekt apache.org Struktura katalogów /bin programy i skrypty (.sh lub.bat) /conf pliki konfiguracyjne (najważniejszy: server.xml) /logs pliki dziennika /webapps, /webapps/root aplikacje, domyślna lokalizacja

Składnia typu JSP (rekomendowana) <% skrypt %> typu XML <jsp:element >skrypt</jsp:element>

Elementy w JSP Wyróżniamy trzy typy elementów Elementy skryptowe fragmenty kodu w Javie, które generuja kod HTML, XHTML, itd. Elementy akcji predefiniowane funkcje; specyfikacja JSP zawiera kilka takich funkcji, a dzięki specyfikacji JSP 1.1 można tworzyć własne znaczniki Dyrektywy określają informacje dodatkową, ogólną, dotyczacą całej strony

Elementy skryptowe Elementy skryptletu Składnia <% kod %> <jsp:scriptlet>kod</jsp:scriptlet> Przykład data.jsp Elementy wyrażenia Składnia <%= kod %> <jsp:expression>kod</jsp:expression> Przykład data2.jsp

Elementy skryptowe Elementy deklaracji Uwagi: Elementy deklaracji nie generują żadnych napisów Zmienne i metody utworzone w elemencie deklaracji są globalne Składnia <%! kod %> <jsp:declaration>kod</jsp:declaration> Przykład data3.jsp

Elementy skryptowe Sterowanie przepływem Instrukcje jak w Javie: if..then..else, while..do, for, try..catch Można,,wyskakiwać'' z kodu JSP Przykład: dnitygodnia.jsp Komentarze wewnątrz kodu: //... /*... */ zewnętrzne: <%--... --%> <!--... -->

Elementy akcji Składnia <jsp:nazwa_akcji atrybut="wartosc" /> Atrybuty: Dla wszystkich elementów akcji dostępne są dwa atrybuty: id jednoznacznie identyfikuje elementy akcji, a w przypadku, gdy taki element tworzy obiekt, to poprzez id można sie do niego później odwoływać scope określa czas życia elementu akcji. Moze on przyjmowac nastepujace wartosci:

Elementy akcji Atrybuty c.d. scope page obiekty o tym zasiegu sa dostępne jako część strony i są usuwane po wysłaniu odpowiedzi do klienta lub po przekierowaniu, request obiekty o tym zasięgu są dostępne ze stron przetwarzających to samo żądanie; podobne do page, ale obiekt bedzie dalej dostepny po przekazaniu żądania do innej strony JSP session obiekty o tym zasięgu będą dostępne ze stron przetwarzających żądania w takiej samej sesji jak ta, w której zostały utworzone application obiekty będą dostępne ze stron przetwarzających żądania z tej samej aplikacji jak ta, w której zostały utworzone

Elementy akcji Standardowe akcje Zasobów include dołącza plik forward przekierowuje do nowej lokalizacji plugin wstawia na stronę komponent Javy JavaBeans

Elementy akcji Akcja include Składnia <jsp:include page="adres" flush="true" /> <jsp:include page="adres" flush="true"> <jsp:param name="param" value="wartosc" />... </jsp:include> page="adres" względny adres zasobu, który ma zostać dołączony flush="true" określa buforowanie; należy koniecznie ustawić na true Przykłady akcja_include.jsp, tytul.jsp

Elementy akcji Akcja forward Składnia <jsp:forward page="adres" /> <jsp:forward page="adres"> <jsp:param name="param" value="wartosc" />... </jsp:forward> page="adres" względny adres zasobu, na który zostaniemy przekierowani Uwaga: w pasku adresu URL pozostanie bez zmian Przykłady: akcja_forward.jsp

Elementy akcji Akcja plugin Składnia <jsp:plugin type="bean applet" code="objectcode" codebase="objectcodebase" align="alignment" height="height" width="width" hspace="hspace" vspace="vspace" title= title name="componentname"> <jsp:params> <jsp:param name="name" value= value" />... </jsp:params> <jsp:fallback>na wypadek awarii</jsp:fallback> </jsp:plugin>

Elementy akcji Akcja plugin Przykład <jsp:plugin type="applet" code="gierka.class" codebase="/aplety" width="200" height="200"> <jsp:param name="parametr" value="wartosc jego" /> <jsp:fallback>nie mozna uruchomic Java Plugin</jsp:fallback> </jsp:plugin>

Elementy akcji Model komponentowy, krótkie wprowadzenie do Enterprise JavaBeans (EJB) Komponenty, czyli JavaBeans JavaBean ma zdefiniowane tzw. właściwosci i metody dostępowe, poprzez które komunikuje sie z otoczeniem. JavaBean to zwykła klasa utworzona przy stosowaniu kilku zasad.

Elementy akcji Zasady tworzenia bean-a Konstruktor nie moze przyjmowac zadnych argumentów. Własciwosci i metody dostępowe. Dla każdej właściwosci istnieją metody dostępowe i dostęp do nich jest tylko przez te metody. Dla każdej właściwosci powinny być zdefiniowane nastepujące 3 (ewentualnie 2) metody public {Typ obiektu} get{własciwosc} () public void set{własciwosc} ({Typ obiektu}) public boolean is{własciwosc} ()

Elementy akcji Zasady tworzenia bean-a c.d. Właściwości indeksowane public {Typ obiektu}[] get{własciwosc} () public void set{własciwosc} ({Typ obiektu}[]) public {Typ obiektu} get{własciwosc} (int) public void set{własciwosc} (int, {Typ obiektu}) Widoczność: poza konstruktorem i metodami dostępowymi nic nie powinno być widoczne. Przykład: ProstyBean.java

Elementy akcji Akcja JavaBeans Warte zainteresowania, gdyż całość implementacji może być zawarta JavaBeans, a JSP tylko jej wykorzystanie Wyszukuje obiektu (za pomoca id i scope) lub tworzy jego egzemplarz oraz związuje ten obiekt z niejawnym obiektem utworzonym poprzez atrybut scope. Znacznik usebean może, ale nie musi miec ciała.

Elementy akcji Akcja JavaBeans Atrybuty id identyfikuje obiekt; atrybut wymagany, scope okresla zasięg, class definiuje implementację obiektu; jeśli nie podamy class lub beanname, to obiekt musi dostępny w podanym zasięgu, type typ tworzonej zmiennej skryptowej; domyślnie jest to typ określony w class, beanname nazwa obiektu bean.

Elementy akcji Akcja JavaBeans Składnia, przykład <jsp:usebean id="databean" class="org.java.databean" /> <jsp:usebean id="newbean" class="org.java.databean"> <jsp:setproperty name="newbean" property="border" value="0"> </jsp:usebean>

Elementy akcji Akcja JavaBeans, akcja <jsp:setproperty> Ustawia właściwości Bean-a Atrybuty name nazwa beana, którego wartość ustawiamy, property nazwa właściwosci, którą chcemy ustawić; jeżeli pominiemy atrybuty value i param, to zostanie przypisana wartość z parametru zadania o tej samej nazwie, param nazwa parametru zadania, której wartość chcemy przypisac własciwości, value wartość, która zostanie przypisana danej właściwości; wyklucza sie z param.

Elementy akcji Akcja JavaBeans, akcja <jsp:setproperty> Przykłady użycia <jsp:setproperty id="databean" property="border" value="30" /> <jsp:setproperty id="databean" property="border" param="borderwidth" /> <jsp:setproperty id="databean" property="border" /> <jsp:setproperty id="databean" property="*" />

Elementy akcji Akcja JavaBeans, akcja <jsp:getproperty> Pobiera wartosc własciwosci bean a. Atrybuty: name nazwa ziarnka, którego wartość pobieramy; atrybut wymagany, property nazwa właściwosci, którą pobieramy; atrybut wymagany.

Dyrektywy Składnia Dostępne są dwa rodzaje składni <%@ nazwa_dyrektywy %> <jsp:directive.nazwa_dyrektywy /> Zależy od rodzaju dyrektywy Omówimy dyrektywy page include taglib

Dyrektywy Dyrektywa page Określa parametry strony Para atrybut/wartosc może wystąpić tylko raz Atrybuty contenttype określa typ zawartości; domyślnie jest to text/html z kodowaniem ISO-8859-1 errorpage określamy stronę, która bedzie wyświetlana przy pojawieniu sie wyjątku iserrorpage strona, która ma być wyświetlana przy pojawianiu się wyjatków musi ten atrybut mieć ustawiony na true; domyślnie jest on oczywiście ustawiany na false

Dyrektywy Dyrektywa page Atrybuty c.d. import umożliwia import pakietów, można podać kilka po przecinku; domyślnie importowane są: javax.servlet.jsp.*, javax.servlet.http.*, java.lang.*, javax.servlet.* atrybut import dostępny jest tylko wtedy, gdy atrybut language jest ustawiony na java language określa język używany wewnątrz strony JSP; obecnie wartoscią domyślną i jedyną jest java session określa, czy dana strona powinna uczestniczyc w sesji HTTP; domyslna wartoscia jest true

Dyrektywy Dyrektywa page Przykład <%@ page language="java" contenttype="text/html;charset=iso-8859-2" %> <%@ page import="java.util.enumeration" %> <%@ page import="java.util.stringtokenizer" %>

Dyrektywy Dyrektywa include Dołącza zawartość zewnętrznego pliku Wstawienie jest w momencie kompilacji dołączenie jest statyczne Atrybut file określa zasób do dołączenia Przykład <% include file="naglowek.html" %>

Dyrektywy Dyrektywa taglib Określa bibliotekę, o które można rozszerzyć standardowy zestaw znaczników JSP Atrybuty: uri określa ścieżkę do biblioteki, prefix prefix, poprzez który będzie się można odwoływać wewnątrz strony. Przykład <%@ taglib uri="http://www.java.com/taglib/sample.jar" prefix="sample" %> <sample:tagaction>przykładzik</sample>

Żądanie HTTP Wraz żądaniem tworzony jest obiekt klasy HttpServletRequest o nazwie request Metody do obsługi parametrów żądania: String request.getquerystring() BufferedReader request.getreader() ServletInputStream request.getinputstream() String request.getmethod() String request.getparameter(string) Enumeration request.getparameternames() String[] request.getparametervalues(string) Przykład userinfo.html, userinfo.jsp

Żądanie HTTP Metody do pobrania nagłóków HTTP: String request.getheader(string) zwraca czysty nagłówek int request.getintheader(string) j.w., przy czym zwraca int Date request.getdateheader(string) j.w., przy czym zwraca Date Enumeration request.getheadernames() zwraca nazwy pól nagłówków żądania

Żądanie HTTP Metody do pobrania nagłóków HTTP c.d.: Enumeration request.getheaders(string) zwraca wartości dostępne w danym nagłówku String request.getlocale() pobiera kod preferowanego języka zdefiniowanego w Accept-Language Enumeration request.getlocales() pobiera kody wszystkich języków określonych w Accept-Language wg preferencji

Żądanie HTTP Do pobrania ciasteczek mamy Cookie[] request.getcookies() Do pobrania informacji o serwerze mamy String application.getserverinfo() Przykład headers.jsp

Wysyłanie odpowiedzi Aby zmodyfikować odpowiedź należy użyć metod obiektu HttpServletResponse dostępnego pod nazwę response Do ustawienia kod odpowiedzi mamy metody: void response.senderror(int sc) void response.senderror(int sc, String msg) void response.sendstatus(int sc) void response.sendstatus(int sc, String msg)

Wysyłanie odpowiedzi Przykładowe kody odpowiedzi Kod stanu Stała w JSP 200 OK SC_OK 204 No Content SC_NO_CONTENT 301 Moved Permanently SC_MOVED_PERMANENTLY 302 Moved Temporarily SC_MOVED_TEMPORARILY 401 Unauthorized SC_UNAUTHORIZED 403 Forbidden SC_FORBIDDEN 404 Not Found SC_NOT FOUND 500 Internal Server Error SC_INTERNAL_SERVER_ERROR 503 Service Unavailable SC_SERVICE UNAVAILABLE

Wysyłanie odpowiedzi Wstawianie nagłówków do odpowiedzi void response.addheader(string name, String value) void response.setheader(string name, String value) void response.addintheader(string name, int value) void response.setintheader(string name, int value) void response.adddateheader(string name, long date) void response.setdateheader(string name, long date) Przykładowe nagłówki Content-Type Connection Location Expires text/html keep-alive close index2.html <data>

Wysyłanie odpowiedzi Kilka uwag Do ustawienia nagłówka Content-type jest osobna funkcja void response.setcontenttype(string type) response.setcontenttype("text/xml"); Do sprawdzenia, czy dany nagłówek został wysłany jest metoda boolean response.containsheader(string name) Dwa przykłady na przekierowanie strony response.setstatus(httpservletresponse.sc_moved_temporarily); response.setheader("location","http://localhost:8080/"); void response.sendredirect("http://localhost:8080/");

Wysyłanie odpowiedzi Obsługa ciasteczek Ciasteczka sa reprezentowane przez obiekty typu Cookie. Do utworzenia mamy kontruktor public Cookie(String name, String value) Do obsługi obiektu klasy Cookie mamy metody: void Cookie.setMaxAge(int expire) void Cookie.setDomain(String pattern) void Cookie.setPath(String uri) void Cookie.setSecure(boolean flag) String Cookie.getName() String Cookie.getValue()

Wysyłanie odpowiedzi Obsługa ciasteczek Do wysłania ciastka mamy metodę void response.addcookie(cookie cookie) Przykład licznik.jsp

Sesje Kilka uwag wstępnych Przekazywanie identyfikatora. Wiele motorów jest inteligentna, tzn. przekazują ID przez ciacho, a jak się nie powiedzie, to przez URL. Śledzenie sesji jest właczane domyślnie i automatycznie jest tworzony egzemplarz obiektu HttpSession dostępny pod nazwa session. Jeśli chcemy wyłaczyc śledzenie sesji, musimy to zrobić jawnie poprzez dyrektywę <%@ page session="false" %>

Sesje Ważniejsze metody obiektu HttpSession void session.putvalue(string key, Object value) wkłada obiekt ewentualnie go nadpisując Object session.getvalue(string name) pobiera obiekt lub zwraca null void session.removevalue(string name) usuwa obiekt z sesji String[] session.getvaluename() zwraca tablicę kluczy do obiektów sesji

Sesje Metody związane z cyklem życia sesji int session.getmaxinactiveinterval() pobiera czas, po jakim sesja wygaśnie void session.setmaxinactiveinterval(int interval) ustawienie czasu, po jakim sesja wygaśnie long session.getcreationtime() moment utworzenia sesji (liczba sekund od 1970-01-01) long session.getlastaccessedtime() moment ostatniego użycia sesji void session.invalidate() - usuwa sesję

Sesje Przykład odwiedziny.jsp confirmlogin.jsp login.jsp logout.jsp