Facelets ViewHandler

Wielkość: px
Rozpocząć pokaz od strony:

Download "Facelets ViewHandler"

Transkrypt

1 JSF i Facelets

2 Wprowadzenie JSP (JavaServer Pages) są natywną i najczęściej używaną technologią do tworzenia warstwy prezentacyjnej dla JSF (JavaServer Faces) Istnieją alternatywne technologie opisu wyglądu (ang. view description technology) dla JSF z których najbardziej popularna to Facelets Co więcej dzięki ViewHandler API (który jest częścią specyfikacji JSF) możliwe jest dostosowanie istniejącej lub stworzenie zupełnie nowej technologi opisu wyglądu (widoku) dla JSF

3 Technologia opisu wyglądu Technologia opisu wyglądu zawiera: Używany język znaczników (np. HTML, XML, itp.) Mechanizm pozwalający wiązać (łączyć) znaczniki z komponentami interfejsu użytkownika (np. JSP Custom Tag Library, TagLibrary dla Facelets) Mechanizm pozwalający agregować (składać) fragmenty stron w celu uzyskania strony wynikowej (np. JSTL 'c:import', 'XInclude') (trochę podobne do 'include' w PHP)

4 Podobieństwa pomiędzy JSP i Facelets Aspekt Tworzenie stron w XMLu Możliwość użycia zunifikowanego EL W sparcie dla taglibs Sposób kompilacji strony Facelets Tak, lub w XHTMLu JSP Tak, składnia JSP XML TAK TAK (od JSP 2.1) TAK TAK XML jest parsowany do Na podstawie XMLa postaci drzewa obiektu tworzony jest kod w TagHandler, a Javie, który jest następnie jest kompilowany do pliku wykonywany. Nie jest.class (bytecode) a tworzony bytecode następnie wykonywany

5 Niektóre różnice pomiędzy JSP i Facelets Aspekt Facelets Wbudowane wsparcie dla szablonów TAK Wsparcie dla przekazywania parametrów do zawartości szablonu TAK W przypadku wystąpienia błędu dokładna informacja o linii w która go spowodowała TAK Szybkie wsparcie oraz szerokie spektrum dostawców dla tej technologii TAK/NIE JSP NIE (tylko proste include) NIE NIE TAK

6 Facelets szablony Template client (klient szablonu) start.xhtml Template (szablon) header.xhtml sidebar.xhtml template.xhtml footer.xhtml

7 template.xhtml Normalny plik XHTML z następującą deklaracją doctype: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">... </html>

8 template.xhtml Dodatkowo posiada zdefiniowany namespace Facelets (zwyczajowo o nazwie 'ui') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"... </html> xmlns:ui="http://java.sun.com/jsf/facelets">

9 template.xhtml Jeżeli szablon korzysta z komponentów JSF (h:..., f:..) to też znajdują się w nim deklaracje odpowiednich namaspace'ów (o nazwach 'h' i 'f') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f ="http://java.sun.com/jsf/core" xmlns:h ="http://java.sun.com/jsf/html"> </html>

10 template.xhtml Aby wstawić do szablonu zmienne fragmenty można użyć tagu ui:insert <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f ="http://java.sun.com/jsf/core" xmlns:h ="http://java.sun.com/jsf/html"> <head> <title> <ui:insert name="tytul">domyślny tytuł</ui:insert> </title> <link rel="stylesheet" type="text/css" href="./css/main.css"/> </head> </html>

11 ui:insert Jeżeli nie zostanie zdefiniowana zawartość dla nazwy użytej w ui:insert (u nas nazwa to 'tytul'), zostanie użyta zawartość domyślna znajdująca się pomiędzy otwarciem tagu '<ui:insert>' i jego zamknięciem '</ui:insert>'. U nas zawartość domyślna to 'Domyślny tytuł'. Oczywiście zawartość domyślna może być pusta Jeżeli zostanie zdefiniowana zawartość za pomocą tagu ui:define to zostanie użyta ona, zamiast zawartości domyślnej. Definicja mogłaby wyglądać następująco: <ui:define name= tytul >Jakiś tytuł</ui:define>

12 ui:insert Zobacz dokumentację do ui:insert https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-insert ui:define https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-define

13 template.xhtml Aby wstawić do szablonu zawartość innego pliku należy użyć tagu ui:include... <head> <title> <ui:insert name="tytul">domyślny tytuł</ui:insert> </title> <link rel="stylesheet" type="text/css" href="./css/main.css"/> </head> <body> <div class= hd > <ui:include src= header.xhtml /> </div>... </body></html>

14 template.xhtml Można użyć tagu ui:include w powiązaniu z ui:insert... <head> <title> <ui:insert name="tytul">domyślny tytuł</ui:insert> </title> <link rel="stylesheet" type="text/css" href="./css/main.css"/> </head> <body> <div class= hd > <ui:insert name="naglowek"> <ui:include src= header.xhtml /> </ui:insert> </div>... </body></html>

15 ui:include i ui:insert W ten sposób jeśli nie zdefiniujemy innej zawartości nagłówka (za pomocą ui:define) zostanie włączona (wstawiona) zawartość pliku o nazwie 'header.xhtml', natomiast za pomocą ui:define można zdefiniować własny nagłówek. Tag ui:include pozwala 'składać' strony (szablony) ze zdefiniowanych części (plików). W ten sposób można łatwo powtórnie używać części szablonów, takie jak nagłówek, menu, stopka, ramka z reklamami, itp.

16 ui:include Zobacz dokumentację do ui:include https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-include

17 start.xhtml Aby 'wywołać' szablon (czyli utworzyć konkretną stronę na jego podstawie) należy użyć tagu ui:composition. Początek (podobnie jak w 'template.xhtml') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f ="http://java.sun.com/jsf/core" xmlns:h ="http://java.sun.com/jsf/html">

18 start.xhtml cd. <body> To i wszystko przed tym będzie pominięte w stronie wynikowej <ui:composition template= template.xhtml > <ui:define name= tytul >Super strona</ui:define> <ui:define name= naglowek > <ui:include src= specjalny_naglowek.xhtml /> </ui:define>... </ui:composition> To i wszystko po tym będzie pominięte w stronie wynikowej </body> </html>

19 ui:composition Wewnątrz tagu ui:composition znajdują się definicje (ui:define) zawartości nazw występujących we włączanym szablonie. Dla nazw z szablonu które nie zostaną zdefiniowane będzie użyta zawartość domyślna. Wszystko co znajduje się przed i po tagu ui:composition będzie pominięte w stronie docelowej

20 ui:composition Zobacz dokumentację do ui:composition

21 Zasoby Strona domowa projektu: Dokumentacja dla programistów:

Podstawy (X)HTML i CSS

Podstawy (X)HTML i CSS Inżynierskie podejście do budowania stron WWW momat@man.poznan.pl 2005-04-11 1 Hyper Text Markup Language Standardy W3C Przegląd znaczników Przegląd znaczników XHTML 2 Cascading Style Sheets Łączenie z

Bardziej szczegółowo

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu: Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO zawierającej aplikację klienta typu EE oraz internetową aplikację uruchamianą za pomocą przeglądarki. Projektowanie

Bardziej szczegółowo

Java Server Faces - wprowadzenie

Java Server Faces - wprowadzenie Java Server Faces - wprowadzenie Java Server Faces (JSF) jest najpopularniejszą technologią opartą o język JAVA, służącą do tworzenia aplikacji webowych (dynamicznych stron WWW). pomimo że JSF i EJB wchodzą

Bardziej szczegółowo

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 6 Tworzenie bloga w Zend Framework Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy

Bardziej szczegółowo

2 Podstawy tworzenia stron internetowych

2 Podstawy tworzenia stron internetowych 2 Podstawy tworzenia stron internetowych 2.1. HTML5 i struktura dokumentu Podstawą działania wszystkich stron internetowych jest język HTML (Hypertext Markup Language) hipertekstowy język znaczników. Dokument

Bardziej szczegółowo

Programowanie wielowarstwowe i komponentowe

Programowanie wielowarstwowe i komponentowe Programowanie wielowarstwowe i komponentowe JSF 2 wprowadzenie Konfiguracja Eclipse - dodanie szablonu XHTML dla potrzeb JSF 1. Otwórz menu Window/Preferences. Następnie z drzewka wybierz Web/HTML Files/Editor/Templates.

Bardziej szczegółowo

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI SPIS TREŚCI 1.Dwie metody przekazu danych do serwera 2 2.Metoda GET przykład 3 3.Metoda POST przykład 4 4.Kiedy GET a kiedy POST 5 5.Szablony po co je stosować 7 6.Realizacja szablonu własną funkcją 8

Bardziej szczegółowo

INSTALACJA I KONFIGURACJA SERWERA PHP.

INSTALACJA I KONFIGURACJA SERWERA PHP. LABORATORIUM 0 INSTALACJA I KONFIGURACJA SERWERA PHP. W celu poprawnego wykonywania zadań na laboratorium konieczne jest zainstalowanie na komputerze wyposażonym w system operacyjny Windows następujących

Bardziej szczegółowo

Podstawy technologi JavaServer Faces

Podstawy technologi JavaServer Faces Podstawy technologi JavaServer Faces wg http://docs.oracle.com/javaee/6/tutorial/doc/bnaph.html Programowanie komponentowe 3 Z czego składa się technologia JavaServer Faces? interfejsu programowania aplikacji

Bardziej szczegółowo

Aplikacje internetowe

Aplikacje internetowe Temat: Język HTML i style CSS Aplikacje internetowe Pracownia specjalistyczna, studia podyplomowe, rok 2011/2012 1. Stwórz formularz HTML pozwalający na rejestrację użytkownika w aplikacji internetowej.

Bardziej szczegółowo

JavaServer Faces (JSF)

JavaServer Faces (JSF) JavaServer Faces (JSF) Autor wykładu: Marek Wojciechowski Plan wykładu JSF jako infrastruktura aplikacji WWW JSF.x Nowe cechy JSF.0 Java Enterprise Edition (Java EE) JavaServer Faces (JSF) Java Enterprise

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium JavaServer Pages Celem ćwiczenia jest zbudowanie kilku prostych stron internetowych z użyciem technologii JSP. Podczas ćwiczenia wykorzystany zostanie algorytm sortowania bąbelkowego

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Kurs HTML 4.01 TI 312[01]

Kurs HTML 4.01 TI 312[01] TI 312[01] Spis treści 1. Wiadomości ogólne... 3 2. Wersje języka HTML... 3 3. Minimalna struktura dokumentu... 3 4. Deklaracje DOCTYPE... 3 5. Lista znaczników, atrybutów i zdarzeń... 4 5.1 Lista atrybutów

Bardziej szczegółowo

Aplikacje Internetowe, Servlety, JSP i JDBC

Aplikacje Internetowe, Servlety, JSP i JDBC Aplikacje Internetowe, Servlety, JSP i JDBC Opis Java 2 Enterprise Edition (JEE) jest potężną platformą do tworzenia aplikacji webowych. PLatforma JEE oferuje wszystkie zalety tworzenia w Javie plus wszechstronny

Bardziej szczegółowo

Język (X)HTML. Podstawowe znaczniki i parametry. dr Konrad Dominas / UAM

Język (X)HTML. Podstawowe znaczniki i parametry. dr Konrad Dominas / UAM Język (X)HTML Podstawowe znaczniki i parametry Szablon dokumentu (X)HTML

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II SIECI KOPMPUTEROWE I TECHNOLOGIE INTERNETOWE (SKiTI) Wykład 11 Wprowadzenie do (X)HTML Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia:

Bardziej szczegółowo

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery Łukasz Bartczuk Moduł 6 JavaScript w przeglądarce Agenda Skrypty na stronie internetowej Model DOM AJAX Skrypty na stronie

Bardziej szczegółowo

Ćwiczenie 7 Instalacja gotowych szablonów. Podstawy budowania własnego szablonu dla CMS Joomla! Dr inż. Robert Banasiak

Ćwiczenie 7 Instalacja gotowych szablonów. Podstawy budowania własnego szablonu dla CMS Joomla! Dr inż. Robert Banasiak Ćwiczenie 7 Instalacja gotowych szablonów. Podstawy budowania własnego szablonu dla CMS Joomla! Dr inż. Robert Banasiak 1 Część A. Instalacja szablonu gotowego Nasza witryna powinna mieć niepowtarzalny

Bardziej szczegółowo

rk HTML 4 a 5 różnice

rk HTML 4 a 5 różnice rk HTML 4 a 5 różnice kompatybilność Pierwszym dużym plusem języka HTML 5 jest to, że jest zdefiniowany w sposób umożliwiający kompatybilność wstecz. Składnia Przykład dokumentu podporządkowującego się

Bardziej szczegółowo

I. Dlaczego standardy kodowania mailingów są istotne?

I. Dlaczego standardy kodowania mailingów są istotne? 1 Tabela zawartości: I. Dlaczego standardy kodowania mailingów są istotne? 3 II. Budowa nagłówka wiadomości. 4 III. Style kaskadowe CSS. 4 IV. Elementarna budowa szablonu. 6 V. Podsumowanie. 9 2 I. Dlaczego

Bardziej szczegółowo

Programowanie wielowarstwowe i komponentowe JSP, JSF

Programowanie wielowarstwowe i komponentowe JSP, JSF Programowanie wielowarstwowe i komponentowe JSP, JSF JSP Cykl życia strony JSP Strony JSP są przetwarzane jako servlety, więc dziedziczą po nich wiele cech Kiedy następuje odwołanie do strony JSP, jest

Bardziej szczegółowo

Tworzenie stron internetowych w kodzie HTML Cz 7

Tworzenie stron internetowych w kodzie HTML Cz 7 Tworzenie stron internetowych w kodzie HTML Cz 7 7. Ramki 7.1. Wstęp Przykład: Oto przykładowy wygląd strony startowej ramek: PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-frameset.dtd">

Bardziej szczegółowo

media Blitz wydajne sytemy szablonów

media Blitz wydajne sytemy szablonów Blitz wydajne sytemy szablonów Dlaczego stosować szablony? MVC Kontroler Model Widok Co to jest Blitz? Rozszerzenie PHP stworzone przez Alexey A. Rybak a. Regularnie rozwijany od 2005 roku. Szybki i lekki

Bardziej szczegółowo

Tworzenie Stron Internetowych. odcinek 5

Tworzenie Stron Internetowych. odcinek 5 Tworzenie Stron Internetowych odcinek 5 Nagłówek zawiera podstawowe informacje o dokumencie, takie jak: tytuł strony (obowiązkowy) metainformacje/metadane (obowiązkowa deklaracja

Bardziej szczegółowo

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML Plan dzisiejszego wykładu Narzędzia informatyczne w językoznawstwie Perl - Wprowadzenie do XML Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 16. kwietnia

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Tworzenie Stron Internetowych. odcinek 6

Tworzenie Stron Internetowych. odcinek 6 Tworzenie Stron Internetowych odcinek 6 CSS kaskadowe arkusze stylów CSS (Cascading Style Sheets), czyli Kaskadowe Arkusze Stylów "stylów" "arkusze" Reguły opisujące wygląd dokumentu opisanego za pomocą

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT 1. Wstęp XML (Extensible Markup Language Rozszerzalny Język Znaczników) to język formalny przeznaczony do reprezentowania danych

Bardziej szczegółowo

Poznań Java User Group 2005. Java Server Faces. Wprowadzenie (Fakty i Mity)

Poznań Java User Group 2005. Java Server Faces. Wprowadzenie (Fakty i Mity) Poznań Java User Group 2005 Java Server Faces Wprowadzenie (Fakty i Mity) Plan prezentacji Ograniczenia szkieletów WWW Podstawowe elementy JSF JSF krok po kroku: Warstwa wizualna Obsługa zdarzeń Nawigacja

Bardziej szczegółowo

pawel.rajba@gmail.com, http://kursy24.eu/

pawel.rajba@gmail.com, http://kursy24.eu/ pawel.rajba@gmail.com, http://kursy24.eu/ Wprowadzenie, struktura Podstawy Twig Adres i nawigacja Request, Response i parametry Ciasta, sesje i flash messages Model i baza danych Formularze Security Ilustracje

Bardziej szczegółowo

Aplikacje internetowe laboratorium XML, DTD, XSL

Aplikacje internetowe laboratorium XML, DTD, XSL Aplikacje internetowe laboratorium XML, DTD, XSL Celem ćwiczenia jest stworzenie dokumentu XML, wyposażenie dokumentu w specyfikację struktury (przy użyciu DTD), oraz transformacja dokumentu XML do postaci

Bardziej szczegółowo

CMS- kontakty (mapa)

CMS- kontakty (mapa) CMS- kontakty (mapa) Rozpatrzy inny rodzaj kontaktu mapa sytuacyjna. W naszej kategorii kontaktów dodamy teraz multimedialną mapę dojazdową. W tym celu potrzebny nam będzie moduł HTML 1.0. Będziemy mogli

Bardziej szczegółowo

HTML5 Nowe znaczniki header nav article section aside footer

HTML5 Nowe znaczniki header nav article section aside footer Specyfikacja HTML5 wprowadza nowe znaczniki pozwalające w łatwy i intuicyjny sposób budować szkielet strony, który przez zmniejszenie ilości kodu jest czytelniejszy i łatwiejszy w utrzymaniu, pozwala poza

Bardziej szczegółowo

O stronach www, html itp..

O stronach www, html itp.. O stronach www, html itp.. Prosty wstęp do podstawowych technik spotykanych w internecie 09.01.2015 M. Rad Plan wykładu Html Przykład Strona www Xhtml Css Php Js HTML HTML - (ang. HyperText Markup Language)

Bardziej szczegółowo

Tutorial. HTML Rozdział: Ramki

Tutorial. HTML Rozdział: Ramki Autor: Mateusz Wojtyna Opis ogólny Tutorial HTML Rozdział: Ramki Ramki są bardzo pomocnym narzędziem przy tworzeniu strony internetowej jeżeli na przykład chcemy stworzyć sobie menu wszystkich podstron

Bardziej szczegółowo

HTML nie opisuje układu strony!!!

HTML nie opisuje układu strony!!! Temat: HTML czy XHTML co to jest HTML i do czego będziesz go używał, co możesz, a czego nie możesz robić, tworząc strony WWW, czym są i do czego służą znaczniki HTML. 1. co to jest HTML HTML to skrót od

Bardziej szczegółowo

JavaServer Pages. Konrad Kurdej Karol Strzelecki

JavaServer Pages. Konrad Kurdej Karol Strzelecki JavaServer Pages Konrad Kurdej Karol Strzelecki Podejścia do projektowania web aplikacji za pomocą Javy Serwlety Java Serwlety Java to technologia wchodząca w skład Java EE (dawniej J2EE). Serwlet Java

Bardziej szczegółowo

Kompozycja Proceduralna

Kompozycja Proceduralna Kompozycja Proceduralna Temat 11: Mechanizm szablonów stron dynamicznych na przykładzie PHP Piotr Habela Polsko-Japońska Wyższa Szkoła Technik Komputerowych 1 Plan prezentacji Role autorów w tworzeniu

Bardziej szczegółowo

Laboratorium 1 Wprowadzenie do PHP

Laboratorium 1 Wprowadzenie do PHP Laboratorium 1 Wprowadzenie do PHP Ćwiczenie 1. Tworzenie i uruchamianie projektu PHP w Netbeans Tworzenie projektu Uruchom środowisko NetBeans. Stwórz nowy projekt typu PHP Application (File->New Project,

Bardziej szczegółowo

Java Server Faces narzędzie do implementacji w wy prezentacji

Java Server Faces narzędzie do implementacji w wy prezentacji Java Server Faces narzędzie do implementacji w wy prezentacji pojęcie komponentu powiązanie z modelem danych widok (View) jako drzewo komponentów obiekty pomocnicze: konwertery, walidatory, obsługa zdarzeń

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 5. 30 października 2013 Plan wykładu 1 2 3 4 yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable Plan wykładu 1 2 3 4 Przykłady wyrażeń regularnych

Bardziej szczegółowo

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium JavaServer Faces Celem ćwiczenia jest przygotowanie aplikacji internetowej z wykorzystaniem technologii JSF. Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper

Bardziej szczegółowo

AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ

AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ Poznań, 2012-10-04 AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ NAZWA ADRES STRONY ILOŚĆ BŁĘDÓW WCAG 33 ILOŚĆ OSTRZEŻEŃ WCAG 3 TYP DOKUMENTU UŻYTY FORMAT (X)HTML JĘZYK OWANIE STRONY Urząd Marszałkowski Województwa

Bardziej szczegółowo

Szablon główny (plik guestbook.php) będzie miał postać:

Szablon główny (plik guestbook.php) będzie miał postać: Skrypt: Księga gości Skrypt generujący księgę gości będzie się składał z trzech części: szablonu głównego, który należy zapisać pod nazwą guestbook.php, formularza służącego do dodawania wpisów, który

Bardziej szczegółowo

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński rperlinski@icis.pcz.pl

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński rperlinski@icis.pcz.pl ngular, cz. II 1/24 Angular, cz. II Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 10 kwietnia 2015

Bardziej szczegółowo

System Zarządzania Treścią. 3aCMS

System Zarządzania Treścią. 3aCMS System Zarządzania Treścią 3aCMS 3aCMS 3aCMS jest autorskim Systemem Zarządzania Treścią, który pozwala w bardzo prosty i intuicyjny sposób zarządzać informacjami publikowanymi na stronie WWW. Podstawowym

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT Marek Wojciechowski marek@cs.put.poznan.pl http://www.cs.put.poznan.pl/~marek/ Formatowanie dokumentów XML Język XML opisuje strukturę i

Bardziej szczegółowo

Kurs WWW Język XML, część I

Kurs WWW Język XML, część I Język XML, część I Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Zawartość modułu Wprowadzenie do XML Składnia Znaczniki i atrybuty DTD XML Schema Na podstawie kursu ze strony: http://www.w3schools.com/schema/default.asp

Bardziej szczegółowo

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Maciej Zakrzewicz PLOUG mzakrz@cs.put.poznan.pl Plan prezentacji Wprowadzenie do architektury zorientowanej na usługi Charakterystyka technologii

Bardziej szczegółowo

Projekty z Technologii Informacyjnych

Projekty z Technologii Informacyjnych Projekty z Technologii Informacyjnych Zad. 1. Opracuj prezentację w programie PowerPoint lub podobnym na zadany temat. Prezentacja powinna być przeznaczona do prezentowania w czasie ok. 10 minut. Zad.

Bardziej szczegółowo

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

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie Zofia Kruczkiewicz 1. Jakie warstwy zawiera aplikacja internetowa? 2. Wymień

Bardziej szczegółowo

Tworzenie Stron Internetowych. odcinek 9

Tworzenie Stron Internetowych. odcinek 9 Tworzenie Stron Internetowych odcinek 9 Prosta galeria oparta na HTML Najprostszym sposobem zbudowania galerii zdjęć jest wykorzystanie tylko HTML i CSS. Strona główna galerii składa się miniatur zdjęć,

Bardziej szczegółowo

Strony WWW - podstawy języka HTML

Strony WWW - podstawy języka HTML Strony WWW - podstawy języka HTML Jacek Krzaczkowski 2004 r. HTML (Hyper Text Markup Language) jest językiem opisu dokumentu używanym do tworzenia stron WWW. Znaczniki języka HTML informują przeglądarkę

Bardziej szczegółowo

LESS - CSS dla leniwych

LESS - CSS dla leniwych LESS - CSS dla leniwych Tomasz Dziuda Główny programista w GavickPro dziudek@gmail.com Twitter: @dziudek zebymniezapomnial.tumblr.com Czym jest LESS? Alternatywy 1. SASS (Ruby) 2. Turbine (PHP) 3. CSS

Bardziej szczegółowo

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem Smarty system szablonów 01 Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem programistów tworzących aplikacje w tym języku. Bardzo często taki kod w znacznym stopniu przeplatał się tagami

Bardziej szczegółowo

Jeśli dodamy jakieś parametry stylów dla poszczególnych DIV-ów, np.:
pierwsza treść, zdjęcie, tabele lub cokolwiek

Jeśli dodamy jakieś parametry stylów dla poszczególnych DIV-ów, np.: <div style=float: left>pierwsza treść, zdjęcie, tabele lub cokolwiek </div> Wykorzystanie znacznika DIV. Znacznik można nazwać blokiem, sekcją, zasobnikiem, pudełkiem, w którym umieszczamy dowolną treść. Poszczególne DIVy można dowolnie umieszczać na stronie, względem siebie

Bardziej szczegółowo

Wprowadzenie do HTML, CSS, JavaScript, PHP. Kurs 18.11 2008 22 12. 2008

Wprowadzenie do HTML, CSS, JavaScript, PHP. Kurs 18.11 2008 22 12. 2008 Wprowadzenie do HTML, CSS, JavaScript, PHP Kurs 18.11 2008 22 12. 2008 Narzędzia do tworzenia i utrzymania dokumentów web owych Edytory HTML Server WWW i baz danych Przeglądarka internetowa kompilator

Bardziej szczegółowo

Nowy szablon stron pracowników ZUT

Nowy szablon stron pracowników ZUT Nowy szablon stron pracowników ZUT Uczelniane Centrum Informatyki ZUT przygotowało nowy szablon stron pracowników, zunifikowany z obecnymi stronami ZUT. Serdecznie zachęcamy Państwa do migracji na nowy

Bardziej szczegółowo

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski Aplikacje mobilne Pliki zasobów, grafiki, menu, podpinanie zdarzeń dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski Pliki zasobów Jak już robiliśmy wcześniej sporo rzeczy w Androidzie umieszczamy

Bardziej szczegółowo

Hyper Text Markup Language

Hyper Text Markup Language Podstawy projektowania dokumentów WWW Język znaczników HTML Hyper Text Markup Language Język słuŝący do zapisu dokumentów WWW. Opisuje wygląd dokumentu i definiuje łączniki hipertekstowe, pozwalające na

Bardziej szczegółowo

WITRYNY I APLIKACJE INTERNETOWE

WITRYNY I APLIKACJE INTERNETOWE WITRYNY I APLIKACJE INTERNETOWE TECHNIKUM INFORMATYCZNE wg programu 351203 KLASA II 3 godz. tygodniowo 90 godziny Liczba godzin w cyklu kształcenia 180 rok szkolny 2013/2014 Sylwia Płonka 2. W 1980 fizyk

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.1.

Języki programowania wysokiego poziomu. PHP cz.1. Języki programowania wysokiego poziomu PHP cz.1. Statyczne i dynamiczne strony WWW Statyczne strony WWW Dokumenty HTML umieszczone na serwerze; zmiana zawartości witryny WWW wymaga modyfikacji plików HTML;

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i budowa systemu zarządzania treścią opartego na własnej bibliotece MVC Autor: Kamil Kowalski W dzisiejszych czasach posiadanie strony internetowej to norma,

Bardziej szczegółowo

Instrukcja platformy wideo

Instrukcja platformy wideo Instrukcja platformy wideo Wstęp Platforma wideo służy do dystrybucji bezpłatnych filmów w Polskim Języku Migowym wyjaśniających osobom Głuchym jak załatwiać sprawy w urzędzie oraz jak wypełniać formularze.

Bardziej szczegółowo

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

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1 Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1 Przykład 1- Wykonanie prostej aplikacji internetowej w technologii JavaEE w środowisku Netbeans 5.5 z wykorzystaniem

Bardziej szczegółowo

Pawel@Kasprowski.pl Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z

Pawel@Kasprowski.pl Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z Podstawy użycia JSP Paweł Kasprowski JSP Java Server Pages Tworzenie dokumentów html ze wstawkami w Javie Dokumenty przekształcane są w servlety klasy generujące html Serwery JSP Przykładowe serwery: Blazix

Bardziej szczegółowo

W kodzie modułu Unit1 zdefiniuj dwie metody - składowe komponentu formatki TForm1:

W kodzie modułu Unit1 zdefiniuj dwie metody - składowe komponentu formatki TForm1: Przedmiot: Programowanie usług internetowych - Delphi Przygotował: K. Strzałkowski Rok V. Semestr IX. Wydział ZiMK Ćwiczenie 1 Generowanie plików HTML 1. Przygotowanie aplikacji generującej prostą stronę.

Bardziej szczegółowo

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services Wykład 6 Wprowadzenie do Web Services wykład prowadzi: Maciej Zakrzewicz Web Services 1 Plan wykładu Wprowadzenie do technologii Web Services Architektura Web Services Protokół komunikacyjny SOAP Język

Bardziej szczegółowo

Języki programowania wysokiego poziomu. HTML cz.1.

Języki programowania wysokiego poziomu. HTML cz.1. Języki programowania wysokiego poziomu HTML cz.1. Struktura dokumentu html Dokument HTML ma postać:

Bardziej szczegółowo

Źródła. cript/1.5/reference/ Ruby on Rails: http://www.rubyonrails.org/ AJAX: http://www.adaptivepath.com/publications/e ssays/archives/000385.

Źródła. cript/1.5/reference/ Ruby on Rails: http://www.rubyonrails.org/ AJAX: http://www.adaptivepath.com/publications/e ssays/archives/000385. Źródła CSS: http://www.csszengarden.com/ XHTML: http://www.xhtml.org/ XML: http://www.w3.org/xml/ PHP: http://www.php.net/ JavaScript: http://devedgetemp.mozilla.org/library/manuals/2000/javas cript/1.5/reference/

Bardziej szczegółowo

Java wybrane technologie spotkanie nr 3. Serwlety

Java wybrane technologie spotkanie nr 3. Serwlety Java wybrane technologie spotkanie nr 3 Serwlety 1 Klient-Serwer Odpowiedzialność serwera przyjmowanie żądań od klienta przygotowywanie odpowiedzi statyczna dynamiczna Rodzaje odpowiedzi statyczna dynamiczna

Bardziej szczegółowo

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia) Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia) WERSJA WSTĘPNA, BRAK PRZYKŁADOWYCH PYTAŃ DLA NIEKTÓRYCH PRZEDMIOTÓW Należy wybrać trzy dowolne

Bardziej szczegółowo

Wykorzystanie PHP do tworzenia stron internetowych testujących wiedzę studentów ze statystyki

Wykorzystanie PHP do tworzenia stron internetowych testujących wiedzę studentów ze statystyki Radosław Jedynak jedynakr@pr.radom.pl Katedra Matematyki Politechnika Radomska Radom Wykorzystanie PHP do tworzenia stron internetowych testujących wiedzę studentów ze statystyki Wstęp Aktywnie rozwijająca

Bardziej szczegółowo

XML Path Language (XPath)

XML Path Language (XPath) XML Path Language (XPath) 1 Cel adresowanie elementów /częś ci dokumentu XML składnia podobna do URI wyszukiwanie elementów bądź grup elementów dokument jako drzewo typy węzłów: element, attribute, text

Bardziej szczegółowo

xmlns:prism=http://www.codeplex.com/prism c.

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname=mainregion /> 1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism

Bardziej szczegółowo

Przykładowa integracja systemu Transferuj.pl

Przykładowa integracja systemu Transferuj.pl Krajowy Integrator Płatności Spółka Akcyjna z siedzibą w Poznaniu, przy ul. Św. Marcin 73/6, wpisana do rejestru przedsiębiorców Krajowego Rejestru Sądowego prowadzonego przez Sąd Rejonowy Poznań Nowe

Bardziej szczegółowo

Generowanie raportów

Generowanie raportów 1 Generowanie raportów 1. Wprowadzenie przykładowy problem, podstawowe własności narzędzi raportujących. 2. JasperReports struktura raportu, parametry, zmienne i pola, generowanie raportu (API). 3. ireport

Bardziej szczegółowo

Kompresja stron internetowych

Kompresja stron internetowych Kompresja stron internetowych Patryk Jar Tech 3 Camp, 18 czerwca 2013 r. O mnie Patryk Jar Webdeveloper Nor-sta (nor-sta.eu) yarpo.pl 2 3 Agenda Lepszy kod w przeglądarce Mniej żądań HTTP Mniej danych

Bardziej szczegółowo

www.fwrl.pl/szkolenie

www.fwrl.pl/szkolenie STRONA www.fwrl.pl/szkolenie MS WORD HTML HTML i dostarczają informację dla silnika przeglądarki o tym jak ma być zbudowana i wyświetlona strona HTML HTML HTML (warstwa logiczna co i gdzie ma być) (wastwa

Bardziej szczegółowo

Własna szata graficzna SYSTEM SZABLONÓW TYPO3

Własna szata graficzna SYSTEM SZABLONÓW TYPO3 Własna szata graficzna SYSTEM SZABLONÓW TYPO3 Dla kogo jest ta prezentacja Niniejsza prezentacja omawia podstawy wdrażania szablonów w TYPO3. Prezentacja przeznaczona jest dla osób rozpoczynających naukę

Bardziej szczegółowo

Można też ściągnąć np. z: http://portableapps.com/apps/development/notepadpp_portable

Można też ściągnąć np. z: http://portableapps.com/apps/development/notepadpp_portable W zadaniach można używać programu Notepad++ (jest wygodny, ponieważ m.in. koloruje składnię i uzupełnia funkcje) albo też jakiegoś innego edytora zainstalowanego w systemie (np. notatnika). Najnowszą,

Bardziej szczegółowo

Można też ściągnąć np. z: http://portableapps.com/apps/development/notepadpp_portable

Można też ściągnąć np. z: http://portableapps.com/apps/development/notepadpp_portable W zadaniach można używać programu Notepad++ (jest wygodny, ponieważ m.in. koloruje składnię i uzupełnia funkcje) albo też jakiegoś innego edytora zainstalowanego w systemie (np. notatnika). Najnowszą,

Bardziej szczegółowo

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 011/01 Nr programu: 31[01]/T,SP/MENIS/004.06.14 Okres kształcenia: łącznie ok. 180 godz. lekcyjne Wojciech Borzyszkowski Zenon Kreft Moduł Bok wprowadzający Podstawy

Bardziej szczegółowo

Przegląd technologii

Przegląd technologii rzegląd technologii 1/34 Przegląd technologii Tworzenie serwisów Web 2.0 dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 29 marca

Bardziej szczegółowo

Tworzenie stron internetowych w oparciu o język HTML

Tworzenie stron internetowych w oparciu o język HTML Ćwiczenie 1 Temat: Tworzenie stron internetowych w oparciu o język HTML Cel ćwiczenia: Celem ćwiczenia jest zapoznanie studenta z technologią tworzenia stron internetowych z wykorzystaniem języka HTML.

Bardziej szczegółowo

Clickjacking groźny link

Clickjacking groźny link MARCO LISCI Clickjacking groźny link Stopień trudności Artykuł ten pokaże nową technikę web ataku. Pokazany został sposób, jak prosto można ukraść kliknięcia z witryny. Opis tej techniki pomoże zrozumieć

Bardziej szczegółowo

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Akademia Techniczno-Humanistyczna w Bielsku-Białej Akademia Techniczno-Humanistyczna w Bielsku-Białej Wydział Budowy Maszyn i Informatyki Laboratorium z sieci komputerowych Ćwiczenie numer: 8 Temat ćwiczenia: Tworzenie stron WWW (HTML, skrypty CSS). 1.

Bardziej szczegółowo

Aplikacje WWW Wprowadzenie

Aplikacje WWW Wprowadzenie Aplikacje WWW Wprowadzenie Beata Pańczyk na podstawie http://www.e-informatyka.edu.pl/ http://wazniak.mimuw.edu.pl/index.php?title=aplikacje_www Plan wykładu Składniki architektury WWW: klient HTTP, serwer

Bardziej szczegółowo

ASP.NET Wprowadzenie. provided by Przemysław Bykowski

ASP.NET Wprowadzenie. provided by Przemysław Bykowski ASP.NET Wprowadzenie provided by Przemysław Bykowski Strona internetowa vs aplikacja internetowa Aplikacja internetowa Nie ustępuje możliwościami od standardowej aplikacji desktopowej Przeglądarka pośredniczy

Bardziej szczegółowo

Struktura języka HTML ZNACZNIKI. Oto bardzo prosta strona WWW wyświetlona w przeglądarce: A tak wygląda kod źródłowy takiej strony:

Struktura języka HTML ZNACZNIKI. Oto bardzo prosta strona WWW wyświetlona w przeglądarce: A tak wygląda kod źródłowy takiej strony: Struktura języka HTML ZNACZNIKI Oto bardzo prosta strona WWW wyświetlona w przeglądarce: Rysunek 1: Przykładowa strona wyświetlona w przeglądarce A tak wygląda kod źródłowy takiej strony: Rysunek 2: Kod

Bardziej szczegółowo

Tworzenie Stron Internetowych. odcinek 1

Tworzenie Stron Internetowych. odcinek 1 Tworzenie Stron Internetowych odcinek 1 plan zajęć (X)HTML (extensible) HyperText Markup Language, czyli (Rozszerzalny) Hipertekstowy Język Znaczników; obecny standard w tworzeniu stron www; opisuje strukturę

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

2. Prezentacja wizualna

2. Prezentacja wizualna 2. Prezentacja wizualna 2.1. Opis rozdziału Rozdział ten przedstawia jak stworzyć przykładowy układ graficzny dla naszej gry w HTML5 i CSS3, które w dalszej części poradnika zostaną wykorzystane do stworzenia

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo