Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00384 006376 12421942 na godz. na dobę w sumie
Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP - książka
Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP - książka
Autor: , Liczba stron: 406
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-1977-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook, audiobook).

Wykorzystaj możliwości najlepszych technologii!

Duet PHP i MySQL cieszy się niesłabnącą popularnością. Jednak na rynku rozwiązań bazodanowych istnieje także wiele innych produktów. Wśród nich znajdziesz również bazę danych firmy Oracle. Przez znaczną część profesjonalistów uważana jest ona za najlepszą, najbezpieczniejszą i najwydajniejszą platformę do tworzenia zaawansowanych rozwiązań. Dzięki tej książce dowiesz się, jak wykorzystać bazę Oracle w połączeniu z PHP oraz dynamicznymi możliwościami technologii AJAX.

W pierwszej kolejności zapoznasz się z możliwościami skalowania rozwiązań korzystających z JavaScriptu i PHP. Następnie nauczysz się wykorzystywać obiekt XMLHttpRequest, a stąd już tylko krok do opanowania technologii AJAX. Ponadto dowiesz się, jak manipulować elementami w modelu DOM oraz pracować zdalnie z obiektami PHP. Autorzy książki w wyczerpujący, a równocześnie przejrzysty i przyjazny sposób wprowadzą Cię w tajniki administrowania bazami Oracle oraz posługiwania się składnią języków SQL i PL/SQL, wykorzystywanych w tej bazie. Książka ta w umiejętny sposób łączy wiedzę na temat projektowania przyjaznego i dynamicznego interfejsu użytkownika oraz zastosowania najlepszych rozwiązań w dziedzinie baz danych.

Projektuj skalowalne i elastyczne aplikacje!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP Autorzy: Lee Barney, Michael McLaughlin T³umaczenie: Andrzej Stefañski ISBN: 978-83-246-1977-1 Tytu³ orygina³u: Oracle Database Ajax PHP Web Application Development Format: 168×237, stron: 408 Wykorzystaj mo¿liwoœci najlepszych technologii! (cid:129) Jak wykorzystaæ obiekt XMLHttpRequest? (cid:129) Jak manipulowaæ modelem DOM? (cid:129) Jakie mo¿liwoœci kryje w sobie jêzyk PL/SQL? Duet PHP i MySQL cieszy siê nies³abn¹c¹ popularnoœci¹. Jednak na rynku rozwi¹zañ bazodanowych istnieje tak¿e wiele innych produktów. Wœród nich znajdziesz równie¿ bazê danych firmy Oracle. Przez znaczn¹ czêœæ profesjonalistów uwa¿ana jest ona za najlepsz¹, najbezpieczniejsz¹ i najwydajniejsz¹ platformê do tworzenia zaawansowanych rozwi¹zañ. Dziêki tej ksi¹¿ce dowiesz siê, jak wykorzystaæ bazê Oracle w po³¹czeniu z PHP oraz dynamicznymi mo¿liwoœciami technologii AJAX. W pierwszej kolejnoœci zapoznasz siê z mo¿liwoœciami skalowania rozwi¹zañ korzystaj¹cych z JavaScriptu i PHP. Nastêpnie nauczysz siê wykorzystywaæ obiekt XMLHttpRequest, a st¹d ju¿ tylko krok do opanowania technologii AJAX. Ponadto dowiesz siê, jak manipulowaæ elementami w modelu DOM oraz pracowaæ zdalnie z obiektami PHP. Autorzy ksi¹¿ki w wyczerpuj¹cy, a równoczeœnie przejrzysty i przyjazny sposób wprowadz¹ Ciê w tajniki administrowania bazami Oracle oraz pos³ugiwania siê sk³adni¹ jêzyków SQL i PL/SQL, wykorzystywanych w tej bazie. Ksi¹¿ka ta w umiejêtny sposób ³¹czy wiedzê na temat projektowania przyjaznego i dynamicznego interfejsu u¿ytkownika oraz zastosowania najlepszych rozwi¹zañ w dziedzinie baz danych. (cid:129) Skalowalnoœæ JavaScriptu i PHP (cid:129) Obiektowoœæ w tych jêzykach (cid:129) Mo¿liwoœci i sposoby wykorzystania obiektu XMLHttpRequest (cid:129) Manipulowanie modelem DOM za pomoc¹ JavaScriptu (cid:129) Zdalne wywo³ania w PHP i HTTP-RPC (cid:129) Obs³uga przycisku „Cofnij” w AJAX-ie (cid:129) Zalecenia przy tworzeniu skalowalnych i elastycznych aplikacji (cid:129) Udostêpnianie VOIP oraz IM (cid:129) Wykaz znaczników HTML (cid:129) Podstawy jêzyka PHP (cid:129) Administrowanie bazami danych Oracle (cid:129) Sk³adnia i wykorzystanie jêzyka SQL oraz PL/SQL Projektuj skalowalne i elastyczne aplikacje! Spis treĈci 5 Spis treĈci O autorach ................................................................................................. 9 O redaktorze technicznym ........................................................................ 11 Wprowadzenie .......................................................................................... 13 Tworzenie podstaw ............................................................... 17 CzöĈè I Rozdziaä 1. SkalowalnoĈè JavaScript i PHP ................................................................. 19 SkalowalnoĞü ...............................................................................................................................20 Redukcja obciąĪenia procesora i pamiĊci ....................................................................................21 Skalowanie struktur kontrolnych .................................................................................................22 Skalowanie przetwarzania ciągów znaków ..................................................................................26 Skalowanie prostych operacji matematycznych ..........................................................................28 Wpáyw obiektów i ich metod na skalowanie ...............................................................................33 Wpáyw wielokrotnych ĪądaĔ wydruku na skalowanie .................................................................35 Redukcja obciąĪenia sieci ............................................................................................................36 Wykorzystanie AJAX do zmniejszenia obciąĪenia sieci .......................................................36 Wykorzystanie kompresji do zmniejszenia obciąĪenia .........................................................38 Podsumowanie .............................................................................................................................40 Rozdziaä 2. ModularnoĈè PHP i JavaScript .................................................................. 41 ModularnoĞü ................................................................................................................................41 Projektowanie w rzeczywistym Ğwiecie ......................................................................................42 Gáówny moduá i kontrolery .........................................................................................................49 Kontroler aplikacji i odwzorowania ............................................................................................50 ModularnoĞü JavaScript z kontrolerami i odwzorowaniami ........................................................52 Podsumowanie .............................................................................................................................54 Rozdziaä 3. Obiekty JavaScript i PHP .......................................................................... 55 Definiowanie i tworzenie klas .....................................................................................................55 Dziedziczenie ..............................................................................................................................59 Konstruktory ................................................................................................................................61 Publiczne, chronione i prywatne ..................................................................................................63 Atrybuty i metody w JavaScript ..................................................................................................66 Obiekty modelu, kontrolera i obiekty kontrolne w PHP ..............................................................69 Obiekty modelu, kontrolera i obiekty kontrolne w JavaScript .....................................................74 Podsumowanie .............................................................................................................................76 6 Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP CzöĈè II Dynamiczna prezentacja: komunikacja miödzy interfejsem uĔytkownika i serwerem .......................... 77 Rozdziaä 4. Obiekt XMLHttpRequest ........................................................................... 79 Tworzenie Īądania i obsáuga jego rezultatów ..............................................................................79 Tworzenie moduáu Server Access Object ....................................................................................83 Podsumowanie .............................................................................................................................90 Rozdziaä 5. AJAX, zaawansowany HTML i komunikacja HTTP ....................................... 93 Tworzenie rozwijanych tabel HTML ...........................................................................................93 Nagáówki HTTP, báĊdy i komunikacja z serwerem ...................................................................102 Podsumowanie ...........................................................................................................................108 Rozdziaä 6. Modyfikowanie DOM za pomocñ JavaScript ............................................. 109 Obiektowy model dokumentu (DOM) .......................................................................................110 Przeciągnij i upuĞü .....................................................................................................................112 Biblioteka ............................................................................................................................112 Obiekty kontrolne w PHP ....................................................................................................122 Obiekty kontrolne JavaScript ..............................................................................................125 Zapisywanie informacji z mechanizmu przeciągnij i upuĞü w bazie danych .............................130 Podsumowanie ...........................................................................................................................133 CzöĈè III Zaawansowane zagadnienia dynamicznej prezentacji i komunikacji ..................................................................... 135 Rozdziaä 7. Dostöp do danych z innych aplikacji ........................................................ 137 Zdalne wywoáania w PHP i HTTP-RPC ....................................................................................138 Zdalne wywoáania za pomocą klientów i usáug XML-RPC z PEAR .........................................142 Podsumowanie ...........................................................................................................................152 Rozdziaä 8. AJAX, tworzenie wykresów i proste przesyäanie danych ............................ 155 Korzystanie z biblioteki SimplePlot ..........................................................................................155 Generowanie danych do wykresu ..............................................................................................159 Pobieranie danych za pomocą AJAX ........................................................................................162 Podsumowanie ...........................................................................................................................165 Rozdziaä 9. Przycisk cofania w AJAX ......................................................................... 167 Dodawanie Ğledzenia historii .....................................................................................................167 Korzystanie z historii iframe .....................................................................................................175 Sesje po stronie klienta ..............................................................................................................177 Podsumowanie ...........................................................................................................................179 CzöĈè IV Tworzenie bardzo elastycznych, skalowalnych aplikacji ........ 181 Rozdziaä 10. Sesje po stronie klienta i po stronie serwera ........................................... 183 ĝledzenie i wykorzystywanie stanu logowania po stronie klienta .............................................183 ĝledzenie i wykorzystywanie stanu logowania po stronie serwera ............................................192 Definiowanie i przechowywanie preferencji uĪytkownika miĊdzy sesjami ...............................197 Wykorzystanie preferencji zapisanych przez uĪytkownika .......................................................201 JSON .........................................................................................................................................204 Podsumowanie ...........................................................................................................................205 Spis treĈci 7 Rozdziaä 11. Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup .... 207 Tworzenie prostej strony typu mashup ......................................................................................208 Wbudowanie mashupa do systemu obsáugi danych medycznych ..............................................211 Jak to dziaáa ...............................................................................................................................214 Podsumowanie ...........................................................................................................................218 Rozdziaä 12. Wielowymiarowa komunikacja: VOIP, IM oraz predefiniowane raporty ...... 219 UdostĊpnianie VOIP i IM ..........................................................................................................220 Rozproszone, ukierunkowane, raportowane ..............................................................................225 Podsumowanie ...........................................................................................................................243 Dodatki .............................................................................. 245 Dodatek A Indeks znaczników HTML ........................................................................ 247 Dodatek B Wprowadzenie do PHP ............................................................................ 255 Historia i táo ...............................................................................................................................256 Czym jest PHP? ...................................................................................................................256 Czym jest Zend? ..................................................................................................................257 Tworzenie aplikacji internetowych ............................................................................................257 Co z czym áączyü i dlaczego? ..............................................................................................257 Co Oracle wnosi do PHP? ...................................................................................................258 Dlaczego PHP 5 jest waĪny? ...............................................................................................259 Jak korzystaü z PHP? ..........................................................................................................259 Jak za pomocą PHP i OCI8 korzystaü z bazy danych Oracle? ............................................278 Podsumowanie ...........................................................................................................................299 Dodatek C Wprowadzenie do administracji bazñ danych Oracle ................................. 301 Architektura baz danych Oracle ................................................................................................302 Uruchamianie i wyáączanie bazy danych Oracle .......................................................................307 Operacje w systemie Linux .................................................................................................307 Operacje w systemie Windows ...........................................................................................311 Uruchamianie i wyáączanie procesu nasáuchującego .................................................................314 Korzystanie z programu SQL*Plus ...........................................................................................319 Interfejs wiersza poleceĔ .....................................................................................................321 Zmienne áączące ..................................................................................................................323 Podsumowanie ...........................................................................................................................323 Dodatek D Wprowadzenie do SQL ............................................................................ 325 Typy danych Oracle SQL ..........................................................................................................326 JĊzyk definicji danych (DDL) ...................................................................................................329 Zarządzanie tabelami i ograniczeniami ...............................................................................330 Zarządzanie widokami ........................................................................................................333 Zarządzanie procedurami skáadowanymi ............................................................................334 Zarządzanie sekwencjami ....................................................................................................335 Zarządzanie wáasnymi typami .............................................................................................336 JĊzyk pobierania danych (DQL) ................................................................................................338 Zapytania .............................................................................................................................338 JĊzyk modyfikacji danych (DML) .............................................................................................342 Polecenia INSERT ..............................................................................................................342 Polecenia UPDATE .............................................................................................................344 Polecenia DELETE .............................................................................................................345 JĊzyk sterowania danymi (DCL) ...............................................................................................345 Podsumowanie ...........................................................................................................................346 8 Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP Dodatek E Wprowadzenie do PL/SQL ...................................................................... 347 Struktura bloków PL/SQL .........................................................................................................348 Zmienne, przypisania i operatory ..............................................................................................352 Struktury sterujące .....................................................................................................................354 Instrukcje warunkowe .........................................................................................................355 PĊtle .....................................................................................................................................358 Procedury skáadowane, funkcje skáadowane oraz pakiety .........................................................360 Funkcje skáadowane ............................................................................................................361 Procedury ............................................................................................................................364 Pakiety .................................................................................................................................366 Wyzwalacze bazodanowe ..........................................................................................................369 Wyzwalacze DDL ...............................................................................................................370 Wyzwalacze DML ...............................................................................................................370 Wyzwalacze „zamiast” ........................................................................................................372 Wyzwalacze systemowe lub bazodanowe ...........................................................................372 Kolekcje ....................................................................................................................................373 Typ danych VARRAY ........................................................................................................374 Typ danych NESTED TABLE ............................................................................................375 Tablica asocjacyjna .............................................................................................................376 Interfejs kolekcji ..................................................................................................................379 Wykorzystanie pakietu DBMS_LOB ........................................................................................379 Konfiguracja i weryfikacja Ğrodowiska dla typów LOB .....................................................379 Zapis i odczyt typu danych CLOB ......................................................................................381 Podsumowanie ...........................................................................................................................386 Skorowidz .............................................................................................. 387 Rozdziaä 11. Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup Gdy wydajne komputery staáy siĊ popularniejsze, uĪytkownicy zaczĊli postrzegaü je jako narzĊ- dzia do agregacji informacji. WpáynĊáo to bezpoĞrednio na rozwój funkcjonalnoĞci serwisów web. Takie serwisy pozwalają uĪytkownikom wybieraü informacje do przeglądania. Dzisiejsze przeglądarki umoĪliwiają teĪ wyĞwietlanie kanaáów RSS w postaci odnoĞników na stronie lub zakáadek. E-mail juĪ dawno zostaá poáączony z przeglądarką. Wszystko to, áącznie z aplikacjami AJAX, prowadzi uĪytkownika do wniosku, Īe skoro przeglądarka sáuĪy do agregacji danych, to takie jest teĪ najwaĪniejsze zastosowanie komputera. PoniewaĪ uĪytkownicy wymagają coraz wiĊkszej elastycznoĞci aplikacji internetowych, te muszą siĊ dostosowaü. Jednym ze sposobów na to jest wykorzystanie serwisów typu mashup wyĞwietlających kilka czĊĞci róĪnych stron na jednej stronie. Przykáadową definicjĊ tego, czym jest mashup, moĪna znaleĨü w angielskiej Wikipedii pod adresem http://en.wikipedia.org/wiki/ Mashup_ (web_application_hybrid). Przeczytanie tego rozdziaáu pozwoli tworzyü strony umoĪliwiające uĪytkownikom poáączenie danych z róĪnych zdalnych serwisów internetowych lub aplikacji w jedną, opartą na AJAX apli- kacjĊ internetową. BĊdą oni mogli zdefiniowaü, jakie czĊĞci stron wyĞwietliü i gdzie mają siĊ one znaleĨü na stronie. W tym rozdziale zostaną poruszone zagadnienia takie jak:  wykorzystanie JavaScript do definiowania i wyĞwietlania wielu fragmentów stron internetowych na jednej stronie,  wykorzystanie JSON do zapisywania i pobierania danych,  API biblioteki mashup. Dynamiczne usáugi typu mashup umoĪliwiają uĪytkownikowi dostosowanie aplikacji przy maáym wysiáku zarówno ze strony samego uĪytkownika, jak i programisty. 208 CzöĈè IV i Tworzenie bardzo elastycznych, skalowalnych aplikacji Tworzenie prostej strony typu mashup PielĊgniarze opiekujący siĊ pacjentami w domu nie mają tak duĪej kontroli nad otoczeniem swo- ich pacjentów jak pielĊgniarze w szpitalu. Dlatego potrzebują narzĊdzia do kontroli temperatu- ry i jakoĞci powietrza w okolicy, w której mieszka pacjent. Choü istnieje wiele serwisów, które mogą dostarczyü czĊĞci tych informacji dla dowolnej lokalizacji, niewiele z nich lub wrĊcz Īaden nie dostarcza wszystkich. Aby mieü aktualne informacje i dziaáaü profilaktycznie, pielĊgniarze musieliby regularnie odwiedzaü kilka serwisów w ciągu dnia. DuĪe ograniczenia czasowe, jakie ludzie ci mają w pracy, i potencjalne zagroĪenie zdrowia lub Īycia pacjentów w wypadku igno- rowania tego typu informacji powodują, Īe potrzebny jest prosty sposób wybrania preferowa- nych Ĩródeá informacji i ich wyĞwietlania. Serwis typu mashup nadaje siĊ do tego idealnie. Serwis typu mashup skáada siĊ z fragmentów innych stron internetowych umieszczonych na jednej stronie. W swojej najprostszej postaci mashup jest definiowany przez programistĊ lub inĪyniera i nie pozwala uĪytkownikowi na dodawanie nowych stron. Plik mashupExample.html, który moĪna pobraü z ftp://ftp.helion.pl/przyklady/ordatw.zip, pokazano na rysunku 11.1. Stano- wi on przykáad takiego prostego serwisu mashup i wyĞwietla informacje o parametrach powietrza z obszaru Salt Lake City w amerykaĔskim stanie Utah. Rysunek 11.1. Prosta strona typu mashup w przeglądarce Firefox Ramki mashupa skáadają siĊ z wyĞwietlanych stron i dają uĪytkownikowi moĪliwoĞü zmiany rozmiaru, wybrania czĊĞci strony Ĩródáowej do wyĞwietlenia, przesuniĊcia wyĞwietlanej ramki i jej usuniĊcia. Strona mashupExample.html zawiera równieĪ przycisk pozwalający uĪytkowni- Rozdziaä 11. i Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup 209 kowi na dodanie nowych ramek do mashupa. Wszystkie zmiany na tej stronie mają charakter tymczasowy, poniewaĪ nie są przesyáane do zapisania na serwerze. Sposób zapisywania tych informacji w bazie danych Oracle zostaá opisany w dalszej czĊĞci tego rozdziaáu. PoniewaĪ ramki mashupa odwoáują siĊ do Ĩródáowych stron przez sieü, zawsze wyĞwietlają informacje z aktualnej strony zdalnego serwera. Dlatego gdy strona Ĩródáowa siĊ zmienia, zmie- nia siĊ takĪe zawartoĞü ramki wyĞwietlanej w mashupie. UmoĪliwia to utrzymanie aktualnoĞci danych. Z tego powodu jedyny czynnik do wziĊcia pod uwagĊ przy wybieraniu strony Ĩródáowej dla ramki mashupa stanowi stabilnoĞü wyglądu strony. PoniewaĪ wyĞwietlany jest tylko wybrany obszar strony Ĩródáowej, jeĞli zmieni siĊ ukáad tej strony w obszarze wybranym do wyĞwietlania, w ramce mashupa bĊdzie znajdowaáa siĊ inna treĞü. Opisane w tabeli 11.1 API wykorzystywane do tworzenia mashupów zawiera trzy funkcje i zaleĪy od biblioteki dostarczającej mechanizm przeciągnij i upuĞü, opisanej w rozdziale 6. Te trzy funkcje umoĪliwiają programiĞcie zdefiniowanie ramek mashupa i pobranie opisu stanu kaĪdej z nich. Biblioteka mashup znajdująca siĊ w pliku mashup.js do pobrania z ftp://ftp.helion.pl/przyklady/ ordatw.zip zostaáa napisana w taki sposób, by obsáugiwaü najnowsze wersje przeglądarek Fire- fox i Safari na OS X oraz Firefox i IE w Windows. Dopracowania wymaga wsparcie przeglą- darki Firefox dla systemu Linux. Plik mashupExample.html korzysta z dwóch funkcji API opisanych w tabeli 11.1. Skáada siĊ on z czterech ramek mashupa — rozmieszczonych w róĪnych miejscach i mających róĪne roz- miary — wyĞwietlających aktualną temperaturĊ i informacje o jakoĞci powietrza w Salt Lake City w amerykaĔskim stanie Utah. html head link rel= stylesheet type= text/css href= mashup.css / script src= util.js type= text/javascript /script script src= mashup.js type= text/javascript /script script src= JSON_Util.js type= text/javascript /script script function init(){ new MashFrame( www.intermountainallergy.com/pollen.html , ´ displayDiv ,0,30,550,200,300,60); new MashFrame( http://www.airquality.utah.gov/slc.html , ´ displayDiv ,0,295,700,250,210,200); new MashFrame( www.ksl.com/index.php?nid=88 , displayDiv ,625,30,400,230,850,0); new MashFrame( www.ksl.com/index.php?nid=88 , ´ displayDiv ,740,310,380,220,550,40); } /script /head body id= mainBody onload= init() input type = button value= Add New Page onclick= requestNewMashFrame( displayDiv ) / div id= displayDiv style= width: 1000px; height: 3000px; top: 50px; /div /body /html /div /body /html 210 CzöĈè IV i Tworzenie bardzo elastycznych, skalowalnych aplikacji Tabela 11.1. API biblioteki mashup Funkcja MashFrame (aURL, parentID, xLoc, yLoc, width, height, scrollDown, scrollRight) Opis Ta funkcja konstruuje ramkĊ mashupa. Wymaga podania dwóch parametrów, ale moĪe przyjmowaü szeĞü dodatkowych parametrów opcjonalnych. Wymagane parametry:  aURL URL Ĩródáa strony. Nie musi zawieraü prefiksu http://. Wszystkie URL powinny korzystaü z protokoáu HTTP, a nie FTP czy innego.  parentID Identyfikator elementu HTML, który bĊdzie zawieraá ramkĊ mashupa. Jest to zazwyczaj element div HTML. Opcjonalne parametry:  xLoc Poziome przesuniĊcie lewej krawĊdzi ramki mashupa od brzegu zajmowanego elementu HTML. DomyĞlna wartoĞü to 0 pikseli.  yLoc Pionowe przesuniĊcie górnej krawĊdzi ramki mashupa w stosunku do górnej krawĊdzi zajmowanego elementu HTML. DomyĞlna wartoĞü to 0 pikseli.  width SzerokoĞü wyĞwietlanej ramki mashupa w pikselach. DomyĞlna  height WysokoĞü wyĞwietlanej ramki mashupa w pikselach. DomyĞlna wartoĞü to 300 pikseli. wartoĞü to 294 piksele.  scrollDown Pionowe przesuniĊcie w dóá widocznego obszaru strony Ĩródáowej w pikselach. DomyĞlna wartoĞü to 0 pikseli.  scrollRight Poziome przesuniĊcie w prawo widocznego obszaru strony Ĩródáowej w pikselach. DomyĞlna wartoĞü to 0 pikseli. requestNewMashFrame(parentID) getMashupDescriptor() Ta funkcja opakowuje konstruktor MashFrame, korzystając z wartoĞci domyĞlnych wszystkich opcjonalnych parametrów. Po uruchomieniu funkcja ta pyta uĪytkownika o URL strony Ĩródáowej. Wymaga podania jednego parametru. parentID Identyfikator elementu HTML, który bĊdzie zawieraá ramkĊ mashupa. Jest to zazwyczaj element div HTML. Ta funkcja zwraca tablicĊ opisów ramek mashupów. KaĪdy deskryptor zawiera wszystkie aktualne wartoĞci ramki mashupa. Zwrócona tablica jest wykorzystywana do zapisywania aktualnego stanu wszystkich ramek mashupa na serwerze. NaleĪy zauwaĪyü, Īe element displayDiv ma ustawioną duĪą szerokoĞü i wysokoĞü. Jest to nie- zbĊdne, poniewaĪ gdy ramka mashupa jest przenoszona lub zmieniany jest jej rozmiar, czasem kursor moĪe opuĞciü szary pasek wykorzystywany do przeciągania lub zmiany rozmiarów ramki mashupa. Jest to typowe zjawisko w przeglądarkach z powodu iloĞci czasu potrzebnego do interpretowania i wykonywania kodu JavaScript, a nastĊpnie rysowania zmian. Aby to pokonaü, biblioteka mashup, za pomocą biblioteki przeciągnij i upuĞü util.js, dodaje funkcjĊ obsáugującą zdarzenia myszy do elementu nadrzĊdnego, co powoduje, Īe ramka mashupa „przechwytuje” mysz. Czasem ten sam problem wystĊpuje teĪ w obszarze wyĞwietlania ramki mashupa. We wszystkich przeglądarkach oprócz IE ramka mashupa ponownie áączy siĊ z myszą. Przy przemieszczaniu lub zmianie rozmiaru ramki mashupa w IE naleĪy zachowaü ostroĪnoĞü i przesuwaü mysz doĞü wolno, by nie weszáa w obszar wyĞwietlania ramki. Powodem tego jest fakt, Īe w IE wiele aktyw- nych komponentów, takich jak odnoĞniki, zawsze ma najwyĪszy priorytet w kolejnoĞci wyĞwie- tlania, niezaleĪny od priorytetu deklarowanego dla nich przez elementy nadrzĊdne, i dlatego kod przechwytujący nie moĪe byü zaimplementowany. Rozdziaä 11. i Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup 211 PoniewaĪ biblioteka mashup.js korzysta z pustego, przykrywającego obszar wyĞwietlania znacz- nika div, nazywanego teĪ glass pane, moĪe wykrywaü opuszczone ruchy myszy i zatrzymy- waü ramkĊ mashupa. W IE obiekt glass pane zostaá usuniĊty, poniewaĪ aktywne komponenty wyĞwietlanej strony i tak byáyby powyĪej niego. Z powodu takiej implementacji priorytetów kolejnoĞci wyĞwietlania w IE pojedyncze aktywne komponenty przechwytują zdarzenia zwią- zane z ruchem myszy i ramka mashupa nie jest przywiązywana do kursora myszy. Dla zacho- wania spójnoĞci warstwa glass pane zostaáa tutaj usuniĊta. W bibliotece mashup pojawiają siĊ teĪ inne ograniczenia. JeĞli wyĞwietlana strona zawiera Flash lub inne wbudowane interpretery, moĪe siĊ zdarzyü, Īe film lub inna zawartoĞü tego typu bĊdzie widoczna nawet poza ramką mashupa. Problem ten wystĊpuje czĊĞciej w Windows, zarówno w przeglądarce Firefox, jak i IE, niĪ w OS X i nie zostaá przetestowany w systemie Linux. Wydaje siĊ bardziej zaleĪny od wyĞwietlanej strony niĪ od przeglądarki, dlatego naleĪy ostroĪnie wybieraü wyĞwietlane w mashupie strony. Innym ograniczeniem są menu w JavaScript. Niektóre serwisy mają menu, które automatycznie pojawiają siĊ po zaáadowaniu strony. Takie menu równieĪ mogą czasem siĊ pojawiaü nawet wtedy, gdy znajdują siĊ poza obszarem wyĞwietlania ramki mashupa. Istnieje równieĪ róĪnica w funkcjonalnoĞci pomiĊdzy tym, jak biblioteka mashup dziaáa w sys- temie Windows, i w innych systemach operacyjnych. Rysunek 11.1 pokazuje prosty przykáad w przeglądarce Firefox pracującej pod kontrolą systemu Linux. NaleĪy zauwaĪyü, Īe okna mas- hupów nie mają tam pasków przewijania. Przeciąganie zawartoĞci w ramce mashupa zmienia wyĞwietlany tam obszar strony Ĩródáowej. Przy takim podejĞciu do wyĞwietlania strony Ĩródáo- wej w Firefoksie i IE pod systemem Windows obie przeglądarki Ĩle odrysowywaáy wyĞwietlany obszar i poza oknem wyĞwietlania pojawiaáy siĊ widoczne pozostaáoĞci. Problem ten zniká przy uĪyciu pasków przewijania pokazanych na rysunku 11.2. Te widoczne pozostaáoĞci nie pojawiają siĊ w przeglądarkach Firefox i Safari dziaáających w sys- temach OS X i Linux, dlatego wygląda na to, Īe problem dotyczy biblioteki MFC Windows wyko- rzystywanej do wyĞwietlania grafiki w obu tych przeglądarkach pod Windows. Jest nadzieja, Īe z czasem biblioteka mashup zostanie usprawniona oraz rozbudowana, a pro- blemy te zostaną pokonane. Wbudowanie mashupa do systemu obsäugi danych medycznych Jak juĪ wspomniano na początku poprzedniego podrozdziaáu, wykorzystanie mashupa bardzo pomogáoby pielĊgniarzom opiekującym siĊ ludĨmi w ich wáasnych domach. W tej sytuacji waĪne jest, aby mashup byá prosty w uĪyciu oraz pamiĊtaá ustawienia. JeĞli takie same kompo- nenty interfejsu uĪytkownika są stosowane w innych czĊĞciach systemu obsáugi danych medycz- nych, uĪytkownik moĪe áatwo wykorzystaü tĊ funkcjonalnoĞü. Wykorzystując takie samo podej- Ğcie projektowe jak w innych rozdziaáach tej ksiąĪki, programista moĪe áatwo doáączyü potrzebną funkcjonalnoĞü. Rysunek 11.3 pokazuje ramki mashupa umieszczone na gáównej stronie. 212 CzöĈè IV i Tworzenie bardzo elastycznych, skalowalnych aplikacji Rysunek 11.2. Prosta strona mashup wyĞwietlona w przeglądarce Firefox pod Windows W rozdziale 10. zostaáo omówione, jak obiekty sesji po stronie klienta są zapisywane i pobierane z bazy danych Oracle za pomocą AJAX. PoniewaĪ ustawienia mashupa wprowadzone przez uĪyt- kownika muszą zostaü zapisane, moĪna je dodaü do obiektu sesji w taki sam sposób jak infor- macjĊ o wybranej stronie startowej w poprzednim rozdziale. Proces logowania z rozdziaáu 10. w tej sytuacji powinien pobraü te ustawienia i umieĞciü je w obiekcie sesji, tak aby byáy dostĊp- ne, gdy uĪytkownik zaĪąda wyĞwietlenia mashupa. Aby wykorzystaü kod sáuĪący do zapisywania obiektu sesji, musi byü stworzone BCO wedáug wzoru opisanego w rozdziale 3. Obiekt saveMashupBCO znajduje siĊ w pliku CO.js, który moĪna pobraü z ftp://ftp.helion.pl/przyklady/ordatw.zip. function saveMashupBCO(){ //utwórz atrybut lub zastąp nowym session.addAttribute( mashupDesc , getMashupDescriptor()); //umieĞü ciąg opisujący sesjĊ na serwerze bez korzystania z VCO theSAO.makeCall( POST , null, Text , true, , cmd=store sessDef= +session.toJSONString()); } Obiekt saveMashupBCO wstawia opisy wszystkich ramek zdefiniowanego przez uĪytkownika mashupa, dopisując rezultat dziaáania funkcji getMashupDescriptor API jako atrybut obiektu Session. NastĊpnie, wykorzystując funkcjĊ, która sáuĪy do zapisywania sesji klienta i którą Rozdziaä 11. i Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup 213 Rysunek 11.3. System obsáugi danych medycznych po wybraniu opcji PokaĪ Mashup stworzono w rozdziale 10., generuje widoczne tutaj Īądanie HTTP POST. Spowoduje to, Īe opisy zostaną zapisane w polach bazy danych zawierających sesjĊ w postaci ciągu znaków JSON. WiĊcej o JSON moĪna dowiedzieü siĊ z ostatniego podrozdziaáu rozdziaáu 10. Jak widzieliĞmy w poprzednich rozdziaáach, w sytuacji, gdy uĪytkownik chce wyĞwietliü mas- hup, musi zostaü wywoáany BCO i odpowiadający mu VCO. Obiekt mashupBCO pokazany w poniĪ- szym kodzie i w pliku CO.js róĪni siĊ od wiĊkszoĞci omawianych dotychczas obiektów BCO w JavaScript tym, Īe nie pobiera danych z serwera. Gdy uĪytkownik jest zalogowany, utworzony obiekt Session zawiera wszystkie zapisane informacje na temat mashupa. function mashupBCO(){ //nie jest potrzebne poáączenie z serwerem, poniewaĪ //informacje o sesji zostaáy pobrane przy logowaniu var mashupDescriptorArray = session.getAttribute( mashupDescre ); var aVCO = new mashupVCO(); aVCO.notify(mashupDescriptorArray); } Z tego powodu BCO musi tylko pobraü te informacje z obiektu sesji i wywoáaü bezpoĞrednio odpowiedni VCO, przekazując dane jako parametr. Oba te obiekty są bardzo proste. Obiekt mashupVCO znajdujący siĊ w CO.js jest równieĪ bardzo prosty dziĊki wykorzystaniu biblioteki mashup. function mashupVCO(){ this.notify = function(data){ var displayString = div ; 214 CzöĈè IV i Tworzenie bardzo elastycznych, skalowalnych aplikacji displayString += input type= button value= Dodaj kolejnæ stronú ´onclick= requestNewMashFrame(\ mashupContainer\ ) / ; displayString += input type= button value= Zapisz zmiany w mashupie ´onclick= saveMashupBCO() / ; displayString += div id= mashupContainer style= height: 4000px; width: ´2000px; /div /div ; document.getElementById( content ).innerHTML = displayString; MashFrame.mashCount = 0; MashFrame.mashArray = new Array(); if(data != null){ var numFrames = data.length; for(var i = 0; i numFrames; i++){ var aDescription = data[i]; new MashFrame(aDescription.URL, mashupContainer , aDescription.left, ´aDescription.top, aDescription.width, aDescription.height, ´aDescription.scrollDown, aDescription.scrollRight); } } } } Obiekt mashupVCO powoduje wyĞwietlenie dwóch obiektów div. Pierwszy zawiera przyciski umoĪ- liwiające dodawanie nowych ramek mashupa oraz zapisanie opisów mashupów na serwerze. Drugi div zawiera same ramki mashupa. Dodatkowo ten VCO tworzy obiekt MashupFrame dla kaĪdego zapisanego opisu i umieszcza go w odpowiednim miejscu. Jak to dziaäa Biblioteka mashup znajdująca siĊ w pliku mashup.js do pobrania z ftp://ftp.helion.pl/przyklady/ ordatw.zip wymaga zrozumienia najwaĪniejszej koncepcji, modyfikowania elementów za po- mocą JavaScript, aby zmieniü atrybuty stylów CSS. Aby nie odkrywaü koáa na nowo, wiele z tych modyfikacji jest wykonywanych za pomocą biblioteki obsáugującej mechanizm przecią- gnij i upuĞü opisanej w rozdziale 6. DziĊki wykorzystaniu gotowej biblioteki znajdującej siĊ w pliku util.js dziaáania takie jak modyfikacja lokalizacji, szerokoĞci i wysokoĞci ramek mas- hupa są obsáugiwane za pomocą gotowych funkcjonalnoĞci. Gdy klient jest uruchomiony w sys- temie OS X, równieĪ przesuwanie wyĞwietlanej strony w ramce mashupa jest wykonywane za pomocą przeciągania i upuszczania, a nie za pomocą pasków przewijania jak w Windows. Poza tym aby zrozumieü, co dzieje siĊ w bibliotece mashup, trzeba wiedzieü, Īe kaĪda ramka mashupa skáada siĊ z dwóch gáównych czĊĞci — ramki iframe wyĞwietlającej Īądaną stronĊ oraz div przechowującego tĊ ramkĊ oraz mającego styl CSS overflow ustawiony na hidden. Aby pomóc w zrozumieniu, jak to dziaáa, utworzono stronĊ mashupBasics.html niekorzystająca z biblioteki przeciągnij i upuĞü. Strona ta, pokazana na rysunku 11.4, umoĪliwia uĪytkownikowi modyfikowanie tych samych atrybutów CSS co biblioteka przeciągnij i upuĞü, ale za pomocą pól do wprowadzania danych. Rozdziaä 11. i Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup 215 Rysunek 11.4. Prosta strona typu mashup Na podstawie tego przykáadu, umoĪliwiającego bezpoĞrednie modyfikowanie atrybutów stylu CSS zamiast uĪycia biblioteki przeciągnij i upuĞü, moĪna zrozumieü leĪącą u podstaw prostotĊ wbudowywania ramek mashupa. Plik mashupBasics.html pokazany w poniĪszym kodzie moĪna pobraü z ftp://ftp.helion.pl/ przyklady/ordatw.zip. Zawiera on gáównie kod HTML sáuĪący do definiowania wyĞwietlania. FunkcjonalnoĞü JavaScript skáada siĊ z dwóch funkcji, updateEmbeddedPage oraz getUpperLeft ´Point. WaĪne jest, by zrozumieü, Īe funkcja updateEmbeddedPage nie jest wykorzystywana w bibliotece mashup, ale zostaáa utworzona, aby umoĪliwiü takie same modyfikacje jak ta biblio- teka za pomocą biblioteki przeciągnij i upuĞü. html head title Podstawowy mashup /title meta http-equiv= Content-Type content= text/html; charset=UTF-8 / style #containerDiv{ width: 1px; height: 1px; } #maskDiv{ width: 350px; height: 220px; border: solid; position: absolute; top: 150px; left: 10px; overflow: hidden; background-color: white; } #display{ width: 1000px; 216 CzöĈè IV i Tworzenie bardzo elastycznych, skalowalnych aplikacji height: 5000px; border: none; position: absolute; } /style script function updateEmbeddedPage(){ var basePoint = getUpperLeftPoint(document.getElementById( containerDiv )); var aURL = document.getElementById( url ).value || http://www.byui.edu/CIT ; var locX = document.getElementById( locX ).value || 0; var locY = document.getElementById( locY ).value || 0; var visX = document.getElementById( visX ).value || 0; var visY = document.getElementById( visY ).value || 0; var width = document.getElementById( width ).value || 350; var height = document.getElementById( height ).value || 220; //ustaw URL ramki iframe if(document.getElementById( display ).src != aURL){ document.getElementById( display ).src = aURL; } //ustaw poáoĪenie góry i lewego brzegu sekcji div z zawartoĞcią var maskDiv = document.getElementById( maskDiv ); maskDiv.style.top = (basePoint.topValue+(locY*1))+ px ; maskDiv.style.left = (basePoint.leftValue+(locX*1))+ px ; //ustaw szerokoĞü i wysokoĞü sekcji div z zawartoĞcią maskDiv.style.width = width+ px ; maskDiv.style.height = height+ px ; //ustaw poáoĪenie górnego i lewego brzegu ramki iframe var display = document.getElementById( display ); display.style.top = visY+ px ; display.style.left = visX+ px ; } //ustal odlegáoĞü elementu w pikselach od góry i lewej strony, //gdzie 0,0 jest lewym górnym rogiem strony, //a nie innego elementu nadrzĊdnego function getUpperLeftPoint(aNode){ var aPoint = new Object() aPoint.leftValue = aNode.offsetLeft; aPoint.topValue = aNode.offsetTop; while((aNode = aNode.offsetParent) != null){ aPoint.leftValue += aNode.offsetLeft; aPoint.topValue += aNode.offsetTop; } return aPoint; } /script body table tr td URL: /td td input id= url value= http://www.byui.edu/CIT /td /tr tr td Wspóđrzúdna X: /td td input id= locX value= 0 / /td td Wsp. widoku X: /td td input id= visX value= 0 / /td /tr Rozdziaä 11. i Tworzenie modyfikowanych przez uĔytkowników serwisów typu mashup 217 tr td Wspóđrzúdna Y: /td td input id= locY value= 0 / /td td Wsp. widoku Y: /td td input id= visY value= 0 / /td /tr tr td Szerokoħè: /td td input id= width value= 350 / /td td Wysokoħè: /td td input id= height value= 220 / /td /tr /table input type= button value= Update Display onclick= updateEmbeddedPage() ; hr/ div id= containerDiv div id= maskDiv iframe id= display src= http://www.byui.edu/CIT /iframe /div /div div style= position: absolute; top: 500px; /div /body /html Funkcja updateEmbeddedPage rozpoczyna siĊ od pobrania wszystkich wartoĞci z wejĞcia strony i zapisania ich w zmiennych wewnątrz JavaScript. JeĞli uĪytkownik nie wprowadziá odpowied- nich wartoĞci, do zmiennych przypisywane są domyĞlne wartoĞci. Gdy zostanie to wykonane, rozpoczyna siĊ proces modyfikacji stylów CSS. Jak zostaáo powiedziane wczeĞniej, istnieją dwa gáówne elementy: zawierający ramkĊ element div nazwany maskDiv oraz ramka iframe nazwana display. Atrybut iframe src przechowujący lokalizacjĊ strony do wyĞwietlenia jest ustawiony na wartoĞü odnalezioną w polu URL. Jak w przypadku kaĪdej ramki iframe, po wprowadzeniu modyfikacji strona jest odĞwieĪana. Góra i lewy brzeg strony wyĞwietlanej w ramce iframe są ustawiane wzglĊdem górnego, lewego rogu caáej strony. UmoĪliwia to umieszczanie maskDiv w dowolnym miejscu. MoĪe to sugerowaü, Īe zawartoĞü przemieszczana jest w elemencie maskDiv, ale w rzeczywistoĞci przesuwana jest po caáej stronie. Z tego powodu ramka umieszczona jest w maskDiv, z wartoĞcią hidden ustawioną w atrybucie overflow stylu CSS elementu maskDiv. DziĊki temu caáa zawartoĞü iframe znajdu- jąca siĊ poza maskDiv jest ukrywana. Takie zachowanie powodujące, Īe zawartoĞü strony poza iframe jest ukrywana, daje ramce mashupa szczególne wáaĞciwoĞci. Plik mashupBasics.html umoĪliwia eksperymentowanie z pozycją i rozmiarami elementów, co pozwala na zrozumienie, co komponenty biblioteki przeciągnij i upuĞü zastosowane w biblio- tece mashup muszą robiü. Przygotowuje to teĪ do samodzielnego analizowania samej biblioteki mashup. 218 CzöĈè IV i Tworzenie bardzo elastycznych, skalowalnych aplikacji Podsumowanie DziĊki wykorzystaniu biblioteki mashup oraz obiektów sesji po stronie serwera i ich zapisywa- nia z rozdziaáu 10. wstawianie ramek mashupa do aplikacji obsáugującej dane medyczne, jak teĪ i umieszczanie ich na innych stronach lub w innych aplikacjach jest áatwe. UmoĪliwia to uĪytkownikowi doáączanie dodatkowych danych, które są mu potrzebne, do aplikacji bez zmiany jej kodu. Robiąc to, uĪytkownik staje siĊ partnerem w wiĊkszym stopniu niĪ kiedykolwiek wcze- Ğniej w historii aplikacji sieciowych i uzyskuje pewnego rodzaju poczucie wspóáuczestnictwa w tworzeniu aplikacji bez koniecznoĞci zapoznawania siĊ z kodem czy nawet poĞwiĊcania na to minimalnej iloĞci czasu. Doáączenie mashupów do aplikacji zmniejsza obciąĪenie jej twórców i wyraĨnie zwiĊksza iloĞü pozytywnych doĞwiadczeĔ uĪytkowników.
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Oracle Database. Tworzenie aplikacji internetowych w AJAX i PHP
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: