Tworzenie aplikacji WWW za pomoca narzędzi PL/SQL Web Toolkit Aplikacja WWW napisana w języku PL/SQL składa się ze zbioru programów składowanych (procedur, funkcji), często zebranych w formie pakietu. Komunikacja z przeglądarką WWW odbywa z użyciem protokołu HTTP. Procedury PL/SQL generują dynamiczne strony HTML, tworzące interfejs użytkownika. W tym celu wykorzystuje się PL/SQL Web Toolkit, będący zbiorem wbudowanych pakietów Oracle a służących do tworzenia procedur PL/SQL generujących w sposób dynamiczny strony HTML, pobierające i zapisujące dane do bazy.
Wybrane pakiety wchodzace w skład PL/SQL Web Toolkit Pakiet HTP HTF OWA_CACHE OWA_COOKIE OWA_PATTERN OWA_SEC OWA_UTIL Opis generuje tagi HTML pozwala generować tagi HTML jako funkcje buforuje strony dla poprawy wydajności pozwala zarządzać ciasteczkami umożliwia porównywanie, manipulację łańcuchami znaków zarządzanie bezpieczeństwem dynamiczne generowanie kodu HTML, przekierowania do innych stron WWW
Pakiet HTP Procedura htp.print(tekst); htp.htmlopen; htp.headopen; htp.title( Tytuł ); htp.headclose; htp.bodyopen; htp.paragraph; htp.bodyclose; htp.htmlclose; Wynik HTML Wypisuje tekst <HTML> <HEAD> <TITLE> Tytuł </TITLE> </HEAD> <BODY> <P> </BODY> </HTML>
CREATE OR REPLACE PROCEDURE hello as BEGIN Htp.htmlOpen; Htp.bodyOpen; Htp.print( hello ); Htp.bodyClose; Htp.htmlClose; END; Wywołanie: http://host:port/apex/user.pakiet.nazwa_procedury np. http://localhost:8080/apex/ania.hello Uwaga. Należy nadać uprawnienie EXECUTE do procedury na PUBLIC. Wygodnie jest też stworzyć synonim publiczny.
Pakiet HTP.. htp.header(1, Nagłówek ); htp.line; htp.br; htp.centeropen; htp.centerclose; htp.bold( Tekst ); htp.anchor( url, nazwa, tekst ); htp.img( url, align, alt ); <H1> Nagłówek </H1> <HR> <BR> <CENTER> </CENTER> <B>Tekst</B> <A HREF="url" NAME="nazwa"> tekst </A> <IMG SRC="url" ALIGN="align" ALT="alt">
Pakiet HTP.. Tabele i listy htp.tableopen; <TABLE> htp.tablecaption( Podpis ); <CAPTION>Podpis</CAPTION> htp.tablerowopen; <TR> htp.tableheader( Nagłówek ); <TH>Nagłówek</TH> htp.tabledata( dane ); <TD>dane</TD> htp.tablerowclose; </TR> htp.tableclose; </TABLE> htp.listopen; htp.listitem( tekst ); htp.listclose; <UL> <LI>tekst </UL>
Znaczniki formularzy htp.formopen( url, method ); htp.formclose; htp.formtext( nazwa, rozmiar ); htp.formcheckbox( nazwa, wartość ); htp.formradio( nazwa, wartość ); htp.formselectopen( nazwa ); htp.formselectclose; htp.formselectoption( wartość ); htp.formsubmit( nazwa, wartość ); htp.formreset( wartość ); <FORM ACTION="url" METHOD="method"> </FORM> <INPUT TYPE="text" NAME="nazwa" SIZE="rozmiar"> <INPUT TYPE="checkbox" NAME="nazwa" VALUE="wartość"> <INPUT TYPE="radio" NAME="nazwa" VALUE="wartość"> <SELECT NAME="nazwa"> </SELECT> <OPTION>wartość <INPUT TYPE="submit" NAME="nazwa" VALUE="wartość"> <INPUT TYPE="reset" VALUE="wartość">
Formularze HTML: http://www.kurshtml.edu.pl/html/formularze.html Specyfikacja pakietu htp: http://docs.oracle.com/cd/e23943_01/portal.1111/e12042/pshtp.htm
Przekazywanie parametrów Główne metody przekazywania parametrów: Za pomocą tagów HTML. Użytkownik wypełnia pola formularza na stronie WWW, a następnie wszystkie podane dane oraz informacje o wyborach użytkownika są przekazywane do procedury zapamiętanej za pomocą przycisku Submit formularza. Za pomocą adresów URL. Kiedy użytkownik klika na link, zbiór parametrów zostaje przekazany do procedury zapamiętanej. Zazwyczaj, na jednej stronie umieszcza się oddzielne odnośniki dla każdej możliwej operacji, jaką użytkownik może wykonać.
Wykorzystanie formularzy HTML do przesyłania danych Jako wartość atrybutu ACTION podajemy nazwę procedury składowanej. Do procedury są przekazywane dane z pól formularza HTML. Uwaga. Tylko wartości z pól, które mają nazwy, są przekazywane. Jeżeli pole jest zablokowane (ma status disabled), nie jest dołączane do listy parametrów formularza. Uwaga. Procedura składowana wywołana przez formularz musi mieć odpowiedni zestaw parametrów wejściowych musi mieć parametr IN odpowiadający każdemu nazwanemu polu formularza. Parametry te muszą mieć dokładnie takie same nazwy, jak odpowiednie pola formularza oraz zgodny typ danych. Uwaga. Do przekazania danych pomiędzy procedurami składowanymi można użyć ukrytych pól formularza: <input type="hidden" name="nazwa" value="wartość" />
Tworzenie aplikacji WWW Mechanizm PSP Mechanizm PSP (PL/SQL Server Pages) umożliwia tworzenie wykonywanych po stronie serwera skryptów, generujących strony WWW, których zawartość jest tworzona dynamicznie (np. w oparciu o wyniki zapytań SQL z bazy danych). Zaletą stosowania mechanizmu PSP jest możliwość tworzenia strony WWW w dowolnym edytorze, a następnie umieszczanie w kodzie bloków PL/SQL-a. Skrypt zapisujemy z rozszerzeniem.psp. Kompilacja i załadowanie do bazy przygotowanego skryptu PSP odbywa się z użyciem narzędzia wiersza poleceń loadpsp. Składnia instrukcji: loadpsp -replace -user user_name ścieżka dostępu do pliku.psp
Porównanie procedur składowanych PL/SQL i PSP Procedury PL/SQL Długi kod PL/SQL, generujący sformatowany wynik. Tworzenie za pomocą narzędzi Oracle. Wymaga tworzenia kodu HTML linia po linii. Migracja ze statycznych stron WWW. PSP Długi kod z użyciem dynamicznego HTML-a, generujący stronę WWW. Tworzenie w dowolnym edytorze HTML-a. Umożliwia użycie JavaScript. Migracja z JSP (Java Server Pages) ponieważ używają tej samej składni.
Przykładowy skrypt PSP <%@ plsql language="pl/sql" %> <%@ plsql procedure="helloworld1"%> <HTML> <HEAD> <TITLE>Expert PL/SQL - HelloWorld1</TITLE> </HEAD> <BODY> <! Print a plain string. > Hello World! <BR><BR> <! Print using the PL/SQL Toolkit > <% htp.print( Hello World! ); %> </TD></TR></TABLE> </BODY> </HTML>
!""#$ %&! " #$# " %! % $&! " # $%&'($ $ #$# $& ) *+# $, $ $!!#$# '%! %! (%! (( %$& ) +! -#./&(' $ #$# %!#$#! #$#! $& -# '()* %* &*+ * *&
!""#$ %& '&$.%/ 0%&1 )#*$+% %!, 0.//'-! % #*$+% $& 2 # &%'0%&1 &$. #*$+! % #*$+ -!-.3 4/0.//'- -! %! $& 2 # 5$.%/ 0%&1 $ #*$+!!!! "#*$+ $& 2 # %#$#!!" % -#*$+- %' %!! ". #$# #$#- - /#$#& )# ) 46 7# %*()* %* &*+ * *&