Bazy danych 2
Transkrypt
Bazy danych 2
Tworzenie aplikacji WWW za pomoca˛ narz˛edzi PL/SQL Web Toolkit
• Aplikacja WWW napisana w j˛ezyku PL/SQL składa si˛e ze zbioru
programów składowanych (procedur, funkcji), cz˛esto zebranych w
formie pakietu.
• Komunikacja z przegladark
˛
a˛ WWW odbywa z użyciem protokołu
HTTP.
• Procedury PL/SQL generuja˛ dynamiczne strony HTML, tworzace
˛
interfejs użytkownika.
• W tym celu wykorzystuje si˛e PL/SQL Web Toolkit, b˛edacy
˛ zbiorem
wbudowanych pakietów Oracle’a służacych
˛
do tworzenia procedur
PL/SQL generujacych
˛
w sposób dynamiczny strony HTML,
pobierajace
˛ i zapisujace
˛ dane do bazy.
Anna Fiedorowicz
Bazy danych 2
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 zarzadzać
˛
ciasteczkami
umożliwia porównywanie,
manipulacj˛e łańcuchami znaków
zarzadzanie
˛
bezpieczeństwem
dynamiczne generowanie kodu HTML,
przekierowania do innych stron WWW
Anna Fiedorowicz
Bazy danych 2
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>
Anna Fiedorowicz
Bazy danych 2
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.
Anna Fiedorowicz
Bazy danych 2
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’);
Anna Fiedorowicz
<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">
Bazy danych 2
Pakiet HTP ..
Tabele i listy
htp.tableOpen;
<TABLE>
<CAPTION>Podpis</CAPTION>
htp.tableCaption(’Podpis’);
htp.tableRowOpen;
<TR>
htp.tableHeader(’Nagłówek’); <TH>Nagłówek</TH>
htp.tableData(’dane’);
<TD>dane</TD>
</TR>
htp.tableRowClose;
htp.tableClose;
</TABLE>
htp.listOpen;
htp.listItem(’tekst’);
htp.listClose;
Anna Fiedorowicz
<UL>
<LI>tekst
</UL>
Bazy danych 2
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ść’);
Anna Fiedorowicz
<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ść">
Bazy danych 2
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
Anna Fiedorowicz
Bazy danych 2
Przekazywanie parametrów
Główne metody przekazywania parametrów:
Za pomoca˛ tagów HTML. Użytkownik wypełnia pola
formularza na stronie WWW, a nast˛epnie wszystkie podane dane
oraz informacje o wyborach użytkownika sa˛ przekazywane do
procedury zapami˛etanej za pomoca˛ przycisku Submit
formularza.
Za pomoca˛ adresów URL. Kiedy użytkownik klika na link, zbiór
parametrów zostaje przekazany do procedury zapami˛etanej.
Zazwyczaj, na jednej stronie umieszcza si˛e oddzielne odnośniki
dla każdej możliwej operacji, jaka˛ użytkownik może wykonać.
Anna Fiedorowicz
Bazy danych 2
Wykorzystanie formularzy HTML do przesyłania danych
Jako wartość atrybutu ACTION podajemy nazw˛e procedury
składowanej. Do procedury sa˛ przekazywane dane z pól formularza
HTML.
Uwaga. Tylko wartości z pól, które maja˛ nazwy, sa˛ przekazywane.
Jeżeli pole jest zablokowane (ma status disabled), nie jest dołaczane
˛
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 odpowiadajacy
˛ każdemu nazwanemu polu formularza. Parametry
te musza˛ mieć dokładnie takie same nazwy, jak odpowiednie pola
formularza oraz zgodny typ danych.
Uwaga. Do przekazania danych pomi˛edzy procedurami
składowanymi można użyć ukrytych pól formularza:
<input type="hidden" name="nazwa"
value="wartość" />
Anna Fiedorowicz
Bazy danych 2
Tworzenie aplikacji WWW — Mechanizm PSP
Mechanizm PSP (PL/SQL Server Pages) umożliwia tworzenie
wykonywanych po stronie serwera skryptów, generujacych
˛
strony
WWW, których zawartość jest tworzona dynamicznie (np. w oparciu
o wyniki zapytań SQL z bazy danych). Zaleta˛ stosowania
mechanizmu PSP jest możliwość tworzenia strony WWW w
dowolnym edytorze, a nast˛epnie umieszczanie w kodzie bloków
PL/SQL-a. Skrypt zapisujemy z rozszerzeniem .psp.
Kompilacja i załadowanie do bazy przygotowanego skryptu PSP
odbywa si˛e z użyciem narz˛edzia wiersza poleceń loadpsp. Składnia
instrukcji:
loadpsp -replace -user user_name ścieżka
dost˛
epu do pliku .psp
Anna Fiedorowicz
Bazy danych 2
Porównanie procedur składowanych PL/SQL i PSP
PSP
Procedury PL/SQL
Długi kod PL/SQL, generujacy
˛
sformatowany wynik.
Tworzenie za pomoca˛ narz˛edzi
Oracle.
Wymaga tworzenia kodu
HTML linia po linii.
Migracja ze statycznych stron
WWW.
Anna Fiedorowicz
Długi kod z użyciem
dynamicznego HTML-a,
generujacy
˛ stron˛e WWW.
Tworzenie w dowolnym
edytorze HTML-a.
Umożliwia użycie JavaScript.
Migracja z JSP (Java Server
Pages) ponieważ używaja˛ tej
samej składni.
Bazy danych 2
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>
Anna Fiedorowicz
Bazy danych 2
!
!
#$#
!
$
"
" # $ %&
"
"
%
%
&
!
"
#
$%& '($
$
#$#
)
$ ,
$
*
$
!
'%
(
%
%
$
#$#
!
(
%
!
&
#
$
#$#
!
%
! #$#
#$#
$
&
!
-
' ( )*
&
+
!
-
./& ('
$
#
!
!
(
)
+
#
%* & *+ * * &
!
' & $
0 %&1
.%/
)
!
%
# *$+ %
# *$+ %
%
!
,
0
$
./
"
" # $ %&
-
/'
&
2
#
&%' 0 %&1
&$.
# *$+
!
- !
-
-
!
$
.3
%
4 /
0
%
./
# *$+
/'
-
!
&
2
#
5 $
0 %&1
.%/
$
# *$+
!
!
!
!
"
2
# *$+
$
&
#
%
#$#
!
!
"
%
-
# *$+
-
% '
%
!
"
.
#$#
!
#$#
-
-
/ #$#&
)
)
%* ( )*
#
4
6
7
#
%* & *+ * * &