Budowa nowoczesnych aplikacji internetowych z wykorzystaniem

background image

Budowa nowoczesnych aplikacji internetowych

z

Z\NRU]\VWDQLHPM]\ND

Java, technologii

WebMacro i Topic Maps

Jakub

*DáVNL.DURO

Foremski, Arkadiusz Bigos, Krzysztof Kawa, Zbyszko Królikowski

,QVW\WXW,QIRUPDW\NL3ROLWHFKQLNL3R]QDVNLHM

3LRWURZR$3R]QD

Zbyszko.Krolikowski@cs.put.poznan.pl

Streszczenie.

:SUDF\]RVWDQSU]HGVWDZLRQH]DVWRVRZDQLDM]\ND-DYDLWHFKQRORJLL]QLP]ZL]DQ\FKMDNR

XQLZHUVDOQ\FK QDU]G]L GR EXGRZDQLD DSOLNDFML LQWHUQHWRZ\FK Z NRQWHNFLH NODV\F]QHM WUyMZDUVWZRZHM

DUFKLWHNWXU\ GOD WHJR W\SX DSOLNDFML 2PyZLRQH ]RVWDQ QDVWSXMFH WHFKQRORJLH -'%& MDNR XQLZHUVDOQH

áF]H GR ED] GDQ\FK Java 6HUYOHWV Z SRáF]HQLX ] WHFKQRORJL :HE0DFUR MDNR ZDUVWZD URGNRZD W]Z
business application logic), XML jako forma przechowywania dokumentów w bazie danych oraz TopicMaps
MDNR PHWRGD GHILQLRZDQLD SRZL]D PLG]\ GDQ\PL : DUW\NXOH ]DPLHV]F]RQD ]RVWDQLH SUyED SRUyZQDQLD

W\FKWHFKQRORJLL]LQQ\PLGRVWSQ\PLUR]ZL]DQLDPL:\PLHQLRQHWHFKQRORJLHRPyZLRQH]RVWDQZRSDUFLX

RGRZLDGF]HQLD]GRE\WHSU]H]DXWRUyZSRGF]DVUHDOL]DFMLSURMHNWXSRUWDOXLQWHUQHWRZHJRZ1LHPF]HFK

1. Wprowadzenie

6LHü,QWHUQHWZF]RUDMWRVLHüSURMHNWRZDQDLEXGRZDQDGODQDXNRZFyZ1RZHF]DV\WRUyZQLH*

QRZHZ\PDJDQLD6SRZRGRZDá\RQH*HUyZQLH*,QWHUQHWPXVLDáVL]PLHQLü']LVLHMV]\,QWHUQHWWR

VLHü ]RULHQWRZDQD QD ]DVWRVRZDQLD QDXNRZH DOH WDN*H QD EL]QHV )LUP\ LQWHUQHWRZH VW\PXOXM

REHFQLH UR]ZyM JRVSRGDUF]\ ZLHOX NUDMyZ L QDOH*\ VL ] QLPL OLF]\ü 7DNLH XSRZV]HFKQLHQLH VL

,QWHUQHWX Z\PXVLáR SRZVWDQLH ZLHOX QRZ\FK WHFKQRORJLL NWyUH XáDWZLDM SU]\VSLHV]DM EXGRZ

DSOLNDFMLLQWHUQHWRZ\FK3RZVWDá\WDN*HOLF]QHWHFKQRORJLHLQDU]G]LDGRLQWHJUDFMLLVWQLHMF\FKMX*

V\VWHPyZ ] QRZ\PL 1LQLHMV]D SUDFD MHVW SRZLFRQD SU]HJOGRZL W\FK WHFKQRORJLL : SUDF\

SRVWDUDP\ VL SU]HGVWDZLü ]QDQH L SRZV]HFKQLH X*\ZDQH WHFKQRORJLH D WDN*H WHFKQRORJLH

QRZDWRUVNLH'RNRQDP\SUyE\LFKSRUyZQDQLDSRND*HP\LFK]DOHW\LZDG\V]DQVHUR]ZRMXRUD]

MDNPR*QDMHZ\NRU]\VWDüSU]\EXGRZLHQRZRF]HVQ\FKDSOLNDFMLSRUWDOLLQWHUQHWRZ\FK

3U]HJOGGRVWSQ\FKGRW\FKF]DVWHFKQRORJLLEXGRZ\DSOLNDFML

internetowych

3RF]WNL ,QWHUQHWX WR ZLHORü SURWRNRáyZ Veronica, *RSKHU ; ,FK UR]ZyM ]RVWDá Z

]QDF]Q\PVWRSQLX]DKDPRZDQ\SU]H]SRMDZLHQLHVL:::World :LGH:HE3RF]WNL:::

WR +70/ L VWURQ\ VWDW\F]QH .ROHMQ\ NURN WR JUDILF]QH SU]HJOGDUNL ::: Netscape, Mosaic).

-HGQDN L WR V]\ENR VWDáR VL QLH Z\VWDUF]DMFH 1DWXUDOQ\P D ]DUD]HP QDMSURVWV]\P VSRVREHP

XVXQLFLD V\JQDOL]RZDQ\FK QLHGRJRGQRFL VWDáR VL UR]ZL]DQLH SROHJDMFH QD SRáF]HQLX

WHFKQRORJLL ED] GDQ\FK L VWURQ ::: ,QIRUPDFMH V SU]HFKRZ\ZDQH Z ED]LH GDQ\FK V\VWHPX

LQIRUPDF\MQHJR D QDVWSQLH SU]H] PHFKDQL]P\ SRUHGQLF]FH SU]HWZDU]DQH QD NRG VWURQ M]\ND
HTML.

3U]\MU]\MP\ VL QDMSLHUZ WHFKQRORJLL CGI (ang. Common Gateway Interface). Polega ona na

XUXFKDPLDQLXRVREQ\FKSURFHVyZZURGRZLVNXXUXFKRPLHQLRZ\PVHUZHUD:::3URJUDPPR*H

E\ü QDSLVDQ\ Z GRZROQ\P M]\NX NWyUHJR NRPSLODWRU OXE LQWHUSUHWHU MHVW GRVWSQ\ QD VHUZHU]H

0R*HE\üWR]DUyZQRLQWHUSUHWRZDQ\M]\NVNU\SWRZ\QDSU]\NáDG3HUOMDNLM]\NNRPSLORZDQ\

& OXE 3DVFDO 3URJUDP Z &*, PR*H NRPXQLNRZDü VL QD SU]\NáDG ] ED] GDQ\FK ]D SRPRF
standardu ODBC (ang. Open Database Connectivity), a rezultaty w postaci sformatowanego

+70/D V NLHURZDQH EH]SRUHGQLR GR SU]HJOGDUNL -HGQDN &*, PD VSRUR ZDG 3R SLHUZV]H

background image

138

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

ND*GH *GDQLH SRZRGXMH SRQRZQH XUXFKRPLHQLH SURJUDPX &*, 'UXJ ZDG MHVW WUXGQRü

SU]HQRV]HQLDSURJUDPyZQDLQQHSODWIRUP\VSU]WRZRSURJUDPRZH

,QQWHFKQRORJLMHVWPHP3+3MHVWVSHFMDOQ\PM]\NLHPVNU\SWRZ\PNWyU\MHVWXPLHV]F]RQ\

w kodzie stron HTML-owych na serwerze WWW. Podczas pobierania takich stron skrypt jest

Z\NRQ\ZDQ\JHQHUXMFRGSRZLHGQLUH]XOWDW=DOHWDPL3+3MHVWáDWZDLQWHJUDFMD]ED]DPLGDQ\FK

GRVWSQRü ZLHOX IXQNFML L SURVWRWD 3+3 MHVW REHFQLH V]HURNR X*\ZDQ WHFKQRORJL QDZHW SU]\

WZRU]HQLXGX*\FKSRUWDOL

5yZQLH* GX*H ILUP\ WDNLH MDN 1HWVFDSH F]\ 2UDFOH SU]HGVWDZLá\ VZRMH UR]ZL]DQLD GR

tworzenia portali internetowych.

1HWVFDSHRIHUXMHEH]SRUHGQLLQWHUIHMVGRVZRLFKVHUZHUyZWeb-

owych – NSAPI (ang. Netscape Server API

16$3, MHVW ]ELRUHP IXQNFML UR]V]HU]DMF\FK

IXQNFMRQDOQRüVHUZHUD:HEX16$3,MHVWUR]ZL]DQLHPRZLHOHV]\EV]\PRG&*,±RIHUXMHZLHOH

IXQNFML ]DUyZQR GR SRáF]H ED]RGDQRZ\FK L DXWRU\]DFML X*\WNRZQLNyZ 6]\ENRü G]LDáDQLD

Z\QLND ] OHSV]HM LQWHJUDFML ] VHUZHUHP $SOLNDFMH 16$3, PRJ E\ü XUXFKDPLDQH MDNR SURFHV

VHUZHUDPRJZVSyáG]LHOLüGDQHL]DVRE\]VHUZHUHP

.ROHMQSODWIRUP]DRIHURZDáDILUPD2UDFOH-HVWWROracle Web Application Server (OWAS)

+ PL/SQL Cartridge

2:$6MHVWVHUZHUHP:::UR]V]HU]RQ\PRPR*OLZRüJHQHURZDQLDVWURQ

+70/ NLHURZDQ\FK GR SU]HJOGDUNL )XQNFMRQDOQRü VHUZHUD UR]V]HU]RQD MHVW R 3/64/

&DUWULGJH NWyU\ SR]ZDOD WZRU]\ü L SU]HFKRZ\ZDü QD VHUZHU]H SURFHGXU\ QDSLVDQH Z M]\NX

3/64/VáX*FHGRJHQHURZDQLDVWURQZ+70/X=\VNXMHP\G]LNLWHPXGRVNRQDáGRVWSQRü
do danych (poziom

3/64/D ]D FHQ XPLHV]F]DQLD NRGX M]\ND 3/64/ L +70/ UD]HP =

QDV]\FK GRZLDGF]H Z\QLND *H WDNLH SRGHMFLH SU]\ GX*\FK SURMHNWDFK ]PQLHMV]D SU]HMU]\VWRü

NRGXXWUXGQLD]PLDQ\L]DU]G]DQLHSURMHNWHP:DGWHMWHFKQRORJLLMHVWWDN*HVWRVXQNRZRZ\VRND
cena.

Rys. 1. Architektura Oracle Web Application Server i PL/SQL Cartridge

:V]\VWNLH V\JQDOL]RZDQH SRZ\*HM WHFKQRORJLH PDM VZRMH ]DOHW\ L ZDG\ :\NRU]\VW\ZDQLH

CGI

R]QDF]DPDáHODVW\F]QRüX]DOH*QLHQLHVLRGM]\NDLSODWIRUP\V\VWHPRZHMVWRVXQNRZR

A

PPLICATION

S

ERVER

PL/SQL

cartrige

http://www.adres.com.pl/proc1

O

RACLE

8

I

P

ROCEDURY W

PL/SQL

create procedure proc1
is
begin
....
....
end proc1;

P

5=(*/'$5.$

strona w HTML-u

Z\ZRáDQLHSURFHGXU\

HTML

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

139

QLVNV]\ENRüG]LDáDQLDND*GH*GDQLHSRZRGXMHXUXFKRPLHQLHQRZHMLQVWDQFMLSURJUDPXPHP

SRPLPRZLHOXVZRLFK]DOHWáDWZ\GRVWSGRED]GDQ\FKV]\ENRüGREUHZVSDUFLHWHFKQLF]QHPD

WDN*H ZDG\ 1D SU]\NáDG Z GX*\FK SURMHNWDFK XPLHV]F]DQLH VNU\SWyZ QDSLVDQ\FK Z 3+3
naprzemiennie z

+70/HP ]PQLHMV]D MHJR F]\WHOQRü L XWUXGQLD GRNRQ\ZDQLH ]PLDQ 6WRVXMF

NSAPI

]\VNXMHP\ GX* V]\ENRü G]LDáDQLD ]D FHQ FDáNRZLWHJR X]DOH*QLHQLD VL RG SODWIRUP\

firmy

1HWVFDSH 5R]ZL]DQLH ILUP\ 2UDFOH MHVW Z\GDMQH L RWZDUWH QD UR]ZyM PD MHGQDN SHZQH

PDQNDPHQW\>@=RVWDáRWRSU]H]DXWRUyZQLQLHMV]HJRDUW\NXáX]DREVHUZRZDQHSRGF]DVUHDOL]DFML

SURMHNWX LQWHUQHWRZHJR LQIRUPDWRUD WXU\VW\F]QHJR GOD JPLQ\ .URNRZD > @ &]ü VWURQ

LQIRUPDWRUDE\á\WRVWURQ\VWDW\F]QHQDWRPLDVWUHV]WDE\áDJHQHURZDQDG\QDPLF]QLH]ED]\GDQ\FK
przy pomocy Oracle PL/SQL Cartridge

6NáDGRZDQHQDVHUZHU]HSURFHGXU\QDSLVDQHZM]\NX

3/64/ JHQHURZDá\ QD SRGVWDZLH ]DS\WD GR ED]\ GDQ\FK NRG Z +70/X 5R]ZL]DQLH PLDáR

MHGQ ZDG SRGREQLH MDN Z 3+3 NRG 3/64/D SU]HSODWDá VL ] +70/HP 8WUXGQLDáR WR Z

]QDF]Q\P VWRSQLX ]DU]G]DQLH ORJLN MDN L VDP\P Z\JOGHP VWURQ\ :SLHUZ QDOH*DáR

Z\JHQHURZDü VWURQ\ SU]\ X*\FLX JHQHUDWRUyZ +70/D DE\ QDVWSQLH ]DPLHQLDü MH QD FLJ
instrukcji

3/64/D Z\ZLHWODMF\FK VNRQVWUXRZDQH VWURQ\ 7\P VDP\P Z\NRQ\ZDQD E\áD WD

VDPDSUDFDGZDUD]\$UFKLWHNWXUWDNLHJRUR]ZL]DQLDSU]HGVWDZLRQRQDU\VXQNX

-]\N-DYDLWHFKQRORJLH]QLP]ZL]DQHMDNRXQLZHUVDOQH

QDU]G]LDEXGRZ\DSOLNDFMLLQWHUQHWRZ\FK

&KDUDNWHU\VW\NDRJyOQDWHFKQRORJLLM]\ND

Java

7HQ SRZVWDá\ NLOND ODW WHPX M]\N SURJUDPRZDQLD Z ]QDF]F\ VSRVyE ]PLHQLá SRMFLH

SURMHNWRZDQLDLEXGRZDQLDRURGNyZwebowych. Java zawiera elementy programowania zarówno

VWUXNWXUDOQHJR MDN L RELHNWRZHJR ]GDU]HQLRZHJR L ZVSyáELH*QHJR Java jest zarazem bardzo

EH]SLHF]Q\P URGRZLVNLHP SLVDQLD SURJUDPyZ :RNyá -DY\ UR]ZLQáR VL EDUG]R ZLHOH
technologii, takich jak: Java Servlets, JDBC (ang. Java Database Connectivity'), JSP (ang. Java
Server Pages
), RMI (ang. Remote Method Invocation), WebMacro. Klasy Javy standardowo

GRVWDUF]DM IXQNFMH NU\SWRJUDILF]QH QLH]EGQH SRGF]DV WZRU]HQLD DSOLNDFML e-biznesowych. Java

ZVSRPDJDWDN*HSURFHVSDUVLQJXM]\ND;0/

5\V$UFKLWHNWXUDQRZRF]HVQHJRSRUWDOXLQWHUQHWRZHJRRSDUWDQDWHFKQRORJLLM]\ND

Java

P

5=(*/'$5.$

P

5=(*/'$5.$

*GDQLH

JDBC

WEB SERVER

J

AVA

W

EB

M

ACRO

S

TRONY

T

OPIC

M

APS

O

RACLE

8

I

background image

140

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

3U]HGVWDZLP\REHFQLHMDNSU]\]DVWRVRZDQLXM]\ND-DYDLWHFKQRORJLL]QLP]ZL]DQ\FKRUD]

ED] GDQ\FK PR*QD ]EXGRZDü QRZRF]HVQ\ SRUWDO LQWHUQHWRZ\ FKDUDNWHU\]XMF\ VL GX*

Z\GDMQRFL SUDF\ HODVW\F]QRFL L RWZDUWRFL UR]ZL]D 5\VXQHN SU]HGVWDZLD RJyOQ

DUFKLWHNWXUWDNLHJRV\VWHPX

1DMQL*V]ZDUVWZU\VVWDQRZLVHUZHUED]\GDQ\FKQSOracle 8i. Na nim przechowywane

V GDQH Z SRVWDFL ;0/D 3U]HFKRZ\ZDQH GRNXPHQW\ V Z SRVWDFL WDN ]ZDQ\FK Topic Maps.
Topic

0DSVV]ELRUHPGRNXPHQWyZZSGML-u lub jak w naszym przypadku w XML-u. Topic

0DSVZ\NRU]\VW\ZDQHVGRGHILQLRZDQLD]DOH*QRFLL]ZL]NyZSRPLG]\WDN]ZDQ\PLtopikami.
Topic

0DSV]RVWDQEOL*HMSU]HGVWDZLRQHZGDOV]HMF]FLDUW\NXáX

5\V1DMQL*V]DZDUVWZDDUFKLWHNWXU\V\VWHPXZ\NRU]\VWXMFHJRWHFKQRORJL

Java

:DUVWZ URGNRZ VWDQRZL VHUZHU ::: QD SU]\NáDG Netscape Enterprise Server 4.0. Na

VHUZHU]H ]QDMGXMH VL ]ELyU VWURQ VWDW\F]Q\FK RUD] ]ELyU WDN ]ZDQ\FK servletów napisanych w

M]\NX-DYDZ\NRU]\VWXMF\FKWHFKQRORJL:HE0DFURRUD]LQWHUIHMV-'%&GRáF]HQLDVL]ED]
danych.

Servlety

V SURJUDPDPL Z\NRQ\ZDQ\PL SR VWURQLH VHUZHUD ::: MDNR ZWNL ZLUWXDOQHM

maszyny Javy - JVM (ang. Java Virtual Machine).

6HUYOHW PR*H ]RVWDü XUXFKRPLRQ\ ZUD] ]

SU]HND]DQ\PL GR SDUDPHWUDPL QD SU]\NáDG ] IRUPXODU]D 3RQLHZD* servlet jest programem
napisanym w

-DYLH PR*QD Z QLP NRU]\VWDü ] FDáHJR GRVWSQHJR LQWHUIHMVX Java API - w tym z

PHFKDQL]PyZ GRVWSX GR ED] GDQ\FK -'%& ]GDOQ\FK Z\ZRáD PHWRG 50, RUD] LQWHUIHMVX

&25%$3DUDPHWU\SREUDQH]HVWURQ\PR*QDSU]HND]\ZDüGRQDVWSQHJRVHUYOHWXWZRU]FZWHQ

VSRVyENDVNDGZNWyUHMND*G\VHUYOHWRGSRZLHG]LDOQ\MHVW]DIUDJPHQWZLWU\Q\1DZ\MFLXservlet

JHQHUXMH VWURQ Z HTML-u. Do uruchomienia servletów konieczne jest funkcjonowanie serwera

:::] ]DLPSOHPHQWRZDQ\P PRGXáHPJavy. Najpopularniejszym z nich jest obecnie Apache z

GRGDWNRZ\PPRGXáHPjServe.

-HGQDN WDNLH SRGHMFLH QLHZLHOH Uy*QLáRE\ VL RG &*, F]\ 2UDFOH :HE Application Server z

PL/SQL

&DUWULGJH =\VNXMHP\ QRZRF]HVQ\ M]\N SURJUDPRZDQLD áDWZ\ GRVWS GR ED] daych,

SURJUDPRZDQLHUR]SURV]RQH]DFHQXPLHV]F]DQLDNRGX+70/ZHZQWU]SURJUDPXZJavie. Aby

WHPX ]DSRELHF PR*QD ]DVWRVRZDü QRZDWRUVN WHFKQRORJL WebMacro. Czym jest WebMacro ?
WebMacro to zbiór klas

-DY\UR]V]HU]DMF\IXQNFMRQDOQRüVHUYOHWyZRPR*OLZRüRGL]RORZDQLD

logiki

VHUYOHWyZ RG SURMHNWRZDQLD Z\JOGX VWURQ SU]H] QLH JHQHURZDQ\FK 7DNLH SRGHMFLH Z

GX*\P VWRSQLX XáDWZLD ]DU]G]DQLD SUDF SURJUDPLVWyZ L SURMHNWDQWyZ VWURQ SRGF]DV UHDOL]DFML

GX*HJR SURMHNWX 7HFKQRORJLD :HE0DFUR ]RVWDQLH RPyZLRQD GRNáDGQLH Z GDOV]HM F]FL SUDF\
Servlety napisane w

-DYLHGRáF]HQLDVL]ED]GDQ\FKZ\NRU]\VWXMLQWHUIHMV-'%&

O

RACLE

8

I

T

OPIC

M

APS

D

ANE W

XML

(

RESOURCES

)

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

141

7U]HFLZDUWVWZVWDQRZLSU]HJOGDUND:::7XWDMZ\NRQ\ZDQHVVNU\SW\QDSLVDQHZM]\NX

JavaScript, oraz aplety napisane w

-DYLH3U]\SRPRF\SU]HJOGDUNL]DFKRG]LUyZQLH*LQWHUDNFMD]

portalem.

: GDOV]HM F]FL SU]HGVWDZLP\ EOL*HM ZVSRPQLDQH WHFKQRORJLH WM WebMacro, Topic Maps,

;0/-'%&Z\NRU]\VW\ZDQHSRGF]DVEXGRZ\GX*\FKSRUWDOLLQWHUQHWRZ\FK

3.2. Servlety

6HUYOHW\ V UR]V]HU]HQLDPL VHUZHUyZ webowych – klasa -DY\ PR*H ]RVWDü ]DáDGRZDQD

G\QDPLF]QLH Z FHOX UR]V]HU]HQLD IXQNFMRQDOQRFL VHUZHUD 6HUYOHW\ V SRGREQH GR ILUPRZ\FK

UR]V]HU]H VHUZHUD SR]D W\P *H G]LDáDM Z URGRZLVNX Java Virtual 0DFKLQH SU]H] FR V
bezpieczne i przenaszalne.

: SU]HFLZLHVWZLH GR &*, L )DVW&*, NWyUH X*\ZDM ZLHOX SURFHVyZ Z FHOX REVáX*HQLD

RVREQ\FK*GDVHUYOHW\VZFDáRFLZ\NRQ\ZDQHZRGVHSDURZDQ\FKZWNDFKSURFHVXJáyZQHJR

VHUZHUD.ROHMQ]DOHWVHUYOHWyZMHVWWR*HVRQHSU]HQDV]DOQHZGZyFKDVSHNWDFKZVWRVXQNXGR
systemu operacyjnego (JVM) oraz serwera WWW.

6HUYOHW\]HZ]JOGXQDVZRMQDWXUSR]RVWDM

Z VLOQ\P ]ZL]NX ] VHUZHUHP QD SU]\NáDG VHUYOHW PR*H X*\ü VHUZHUD Z FHOX WUDQVODFML FLH*HN

GRVWSX GR SOLNyZ Z\NRQ\ZDü ORJRZDQLH SU]HSURZDG]Dü SURFHV DXWRU\]DFML Z\NRQ\ZDü
mapowanie typów MIME (ang. Multipurpose Internet Mail Extensions).

6HUYOHW\FHFKXMVLWDN*H

EH]SLHF]HVWZHP Z\QLNDMF\P ZSURVW ] M]\ND -DYD QS FLVáD NRQWUROD W\SyZ REVáXJD EáGyZ

SRSU]H]Z\MWNLPR*OLZRüX*\FLDJava Security Manager). Na rysunku 4 przedstawiono ogólny

VFKHPDW*\FLDservletu.

5\V&\NO*\FLD

servletu

3.3. WebMacro

:HE0DFURWR]ELyUNODVUR]V]HU]DMF\FKIXQNFMRQDOQRüVWDQGDUGRZ\FKVHUYOHWyZRPR*OLZRü

NRU]\VWDQLD ] V]DEORQyZ 7\P VDP\P XPR*OLZLDM RQH UR]G]LHOHQLH L ]UyZQROHJOHQLH SUDF\
projektantów stron i pracy programistów.

:HE0DFURMHVWUR]SRZV]HFKQLDQH]OLFHQFM*3/áF]QLH

1.

JVM

Web serwer z servletami

3URFHV JáyZQ\

Servlet2

)GDQLH GOD 6HUYOHW

)GDQLH GOD 6HUYOHW

)GDQLH GOD 6HUYOHW

ZWHN

ZWHN

ZWHN

JVM

background image

142

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

]H (UyGáDPL -DN QD UD]LH GRVWSQD MHVW W\ONR ZHUVMD pre-release, jest ona jednak bardzo dobrze
przetestowana i nie sprawia najmniejszych problemów.

3URJUDPLVWD SLV]F VHUYOHW NRU]\VWDMF ] :HE0DFUR WZRU]\ NODV G]LHG]LF]F ] NODV\

:06HUYOHWZNWyUHMPXVLRSURJUDPRZDüPHWRGhandle().7RZáDQLHWDPHWRGD±DQDORJLF]QLHGR
metod doGet() i doPost() w klasycznych

VHUYOHWDFKMHVWZ\NRQ\ZDQDDE\REVáX*\üQDGFKRG]FH

*GDQLH +773 1DVWSQLH PXVL W\ONR Z\]QDF]\ü ZDUWRFL ]PLHQQ\FK MDNLH PDM E\ü GRVWSQH
podczas przetwarzania szablonu (ang. template

RUD] RF]\ZLFLH RNUHOLü NWyUHJR V]DEORQX

:HE0DFURPDX*\üGRZ\JHQHURZDQLDGRNXPHQWX:V]\VWNLH]PLHQQHNWyUHPDME\üZLGRF]QH
podczas przetwarzania szablonu programista umieszcza w specjalnym obiekcie zwanym

NRQWHNVWHP:NRQWHNFLHPR*QDXPLHV]F]DüGRZROQHJRW\SXRELHNW\DWDN*HNROHNFMHRELHNWyZ
(np. tablice). Zadaniem projektanta stron jest stworzenia potrzebnych szablonów, które niewiele

Uy*QL VL RG VWDQGDUGRZ\FK GRNXPHQWyZ +70/ =DZLHUDM RQH W\ONR NLOND GRGDWNRZ\FK

G\UHNW\Z XPR*OLZLDMF\FK GRVWS GR GDQ\FK XGRVWSQLDQ\FK SU]H] SURJUDPLVW 6]DEORQ MHVW
poddawany procesowi parsingu przez

:HE0DFURLSU]HWZDU]DQ\GRZHZQWU]QHMUHSUH]HQWDFMLGOD

ZLNV]HM HIHNW\ZQRFL 6]DEORQ DQDOL]RZDQ\ MHVW UD] QDWRPLDVW Z\NRQ\ZDQ\ ZLHOH UD]\ ]D

ND*G\PUD]HP]LQQ]DZDUWRFLNRQWHNVWX

-]\NX*\ZDQ\ZV]DEORQDFK

-]\NGRVWSQ\ZV]DEORQDFKQLHQDOH*\WUDNWRZDüMDNRM]\NVNU\SWRZ\=DáR*HQLHPWZyUFyZ

:HE0DFURE\áRUR]G]LHOHQLHORJLNLDSOLNDFMLRGMHMZ\JOGXLGODWHJRMHVWWRM]\NEDUG]RSURVW\LZ

GX*\P VWRSQLX LQWXLF\MQ\ 3RQL*HM SU]HGVWDZLP\ MDN Z W\P M]\NX PR*QD X]\VNDü GRVWS GR

]PLHQQ\FKMDNQDZLJRZDüSRNROHNFMDFKRELHNWyZQDGDZDüZDUWRFL]PLHQQ\PRUD]NRU]\VWDü]
instrukcji warunkowych.

Zmienne

=PLHQQHWRQDMSURVWV]\VSRVyEQDGRVWSGRLQIRUPDFMLGRVWSQ\FKZNRQWHNFLH=PLHQQHZ

V]DEORQDFKSRSU]HG]RQHV]QDNLHPSRGREQLHMDNZM]\NX3HUOQDSU]\NáDG

$Title
$Customer.Name
$Customer.Products.findProduct(”window”).PartNo

.D*GD ]H ]PLHQQ\FK ZVND]XMH QD MDNL RELHNW Z NRQWHNFLH =DGDQLHP WebMacro jest

]QDOH]LHQLHSRSUDZQHMZDUWRFLZNRQWHNFLHQDWRPLDVWSURJUDPLVWDPXVL]DGEDüRWRE\WDZDUWRü

VL WDP ]QDOD]áD 2ELHNW Customer PD ZáDVQRü SROH OXE RGSRZLHGQL PHWRG Name. Do

Z\GRE\FLD SRV]F]HJyOQ\FK ZáDVQRFL VáX*\ RSHUDWRU µNURSND¶ 2SHUDWRUD WHJR PR*QD X*\ZDü

ZLHORNURWQLH DE\ GRVWDü VL GR *GDQHM ZDUWRFL 7U]HFL SU]\NáDG ]DZLHUD Z\ZRáDQLH PHWRG\
findProduct()

]SDUDPHWUHP2F]\ZLFLHZZLNV]RFLSU]\SDGNyZZ\VWDUF]\SURVWHRGZRá\ZDQLH

VL GR SyO Z RELHNWDFK DOH F]DVDPL PR*H E\ü NRQLHF]QH Z\ZRáDQLH PHWRG\ QD U]HF] MDNLHJR

RELHNWXZNRQWHNFLH±FR:HE0DFURWDN*HXPR*OLZLD

6WDáH
6WDáH w :HE0DFURPRJE\üMHGQ\P]V]HFLXW\SyZVáRZROLF]EDZDUWRüORJLF]QDNROHNFMD

ZVND(QLN QD ]PLHQQ áDFXFK ]QDNyZ 6áRZR WR FLJ OLWHU L F\IU QD SU]\NáDG hello1 6 GZD

VSHFMDOQHVáRZDtrue i falseNWyUHUHSUH]HQWXMZDUWRFLORJLF]QHLiczba WRFLJF\IUQDSU]\NáDG
#set $a = 10

MHVW UyZQRZD*QH XPLHV]F]HQLX Z NRQWHNFLH RELHNWX Integer(10). 0R*HP\

Z\PXVLü QD WebMacro potraktowanie liczby jako typu Long przez dodanie sufiksu l lub L na

SU]\NáDG / -DN QD UD]LHWebMacro nie wspiera liczb typu Float i Double. W razie potrzeby

:HE0DFURPR*HSU]HNV]WDáFLüRELHNWW\SXInteger (Long)QDZDUWRüSURVWint (long)PR*QDZLF

W\FKVWDá\FKX*\ZDüMDNRSDUDPHWU\Z\ZRáDQLDIXQNFMLNWyUHRF]HNXMZDUWRFLW\SXint lub long.

:DUWRü ORJLF]QD Z V]DEORQLH UHSUH]HQWRZDQD MHVW SU]H] VáRZD true i false 6 RQH

RGSRZLHGQLNDPLVWDá\FKM]\ND-$9$Boolean.TRUE i Boolean.FALSE0R*QDLFKWDN*HX*\ZDü

MDNRSDUDPHWUZ\ZRáDQLDIXQNFMLNWyUHRF]HNXMZDUWRFLORJLF]QHM

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

143

Kolekcja

WRXSRU]GNRZDQDOLVWDVWDá\FKQDSU]\NáDG#set myList = [ one, two, 3,

$variable].

0R*OLZHMHVWGRZROQH]DJQLH*G*DQLHNROHNFMLQDSU]\NáDG

#set myList = [ [ one, one ], [two, two, 2], [three] ]

àDFXFK]QDNyZWRGRZROQ\FLJ]QDNyZXPLHV]F]RQ\ZFXG]\VáRZLH3RQLHZD*FLJ]QDNyZ

PR*H]DZLHUDüZVRELHZVND(QLNQD]PLHQQDE\ZSURZDG]LüGR]QDNµ¶WU]HEDJRSRSU]HG]Lü

]QDNLHPµ?¶WDVDPD]DVDGDRGQRVLVLGRLQ\FK]QDNyZVSHFMDOQ\FKQDSU]\NáDG
#set $b = ”to jest ciag znakow: \$a, a to wskaznik na zmienna $a”

:VND(QLNQD]PLHQQ±]DSLVXMHP\JRLGHQW\F]QLHMDN]PLHQQLPR*HP\Z\NRU]\VW\ZDüMDNR

SDUDPHWUZ\ZRáDQLDIXQNFMLQDSU]\NáDG$order.findProduct($Product1).Prize

Dyrektywy

'\UHNW\Z\SRSU]HG]RQHV]QDNLHPLPXV]Z\VWSLüZQRZHMOLQLLPRJE\üSRSU]HG]RQH

]QDNDPL VSDFML :LHOH G\UHNW\Z RSHUXMH QD EORNX .D*G\ EORN UR]SRF]\QD VL ]QDNLHP µ^µ L

NRF]\]QDNLHPµ`¶%ORNLDW\PVDP\PG\UHNW\Z\PR*QD]DJQLH*G*Dü

## komentarz

'ZDOXEZLFHM]QDNyZWZRU]\NRPHQWDU]±UHV]WDOLQLL]RVWDQLH]LJQRURZDQD

#foreach $element in $kolekcja {...}

'\UHNW\ZDSR]ZDODSU]HMU]HüZV]\VWNLHRELHNW\ZNROHNFML%ORN]RVWDQLHZ\NRQDQ\W\OHUD]\

LOH MHVW RELHNWyZ Z NROHNFML ]D ND*G\P UD]HP ]PLHQQD $element EG]LH SU]\MPRZDü ZDUWRü

NROHMQHJRRELHNWXQDSU]\NáDG

<ul>

#foreach $customer in $list {

<li>$customer.name lives at $customer.address

}

</ul>

#if(warunek) {...} #else {...}

-HVW WR VWDQGDUGRZD G\UHNW\ZD ZDUXQNRZD VSRW\NDQD Z ZLNV]RFL M]\NyZ SURJUDPRZDQLD

'UXJD F]ü G\UHNW\Z\ WR ]QDF]\ Äelse {}” jest opcjonalna. W warunku dyrektywy #LI PR*QD

X*\ZDüQDVWSXMF\FKRSHUDWRUyZ

&& - and (binarny),

||

- or (binarny),

!

- negacja (unarny),

== - równy (binarny),

!=

Uy*Q\ELQDUQ\

: SU]\SDGNX GZyFK RVWDWQLFK RSHUDWRUyZ QDOH*\ PLHü QD XZDG]H *H ED]XM RQH W\ONR QD

metodzie Object.equals(). Zmienna traktowana jest jako false

MH*HOL QLH ]RVWDáD ]QDOH]LRQD Z

NRQWHNFLH MHVW null EG( MHVW W\SX Boolean L PD ZDUWRü Boolean.FALSE. W przeciwnym
wypadku traktowana jest jako true

:\UD*HQLD VNáDGDMFH VL QD ZDUXQHN PR*QD GRZROQLH

JUXSRZDüSU]\X*\FLXQDZLDVyZRNUJá\FKQDSU]\NáDG

#if ( $Customer.owesMoney() && ($Customer.Name != "Fred") ) {

Pay up, or else!

} #else {

Thank you for your patronage.

}

#include plik

± SRZRGXMH ZF]\WDQLH ]HZQWU]QHJR SOLNX ± :HE0DFUR QLH EG]LH Z\NRQ\ZDü

operacji analizy (parsingu).

background image

144

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

#parse plik

± SRZRGXMH ZF]\WDQLH ]HZQWU]QHJR SOLNX ± :HE0DFUR SRWUDNWXMH JR MDNR F]ü

szablonu i go przeanalizuje.

VHW]PLHQQD ZDUWRü

'R]PLHQQ\FKZNRQWHNFLHPR*QDVLRGZRá\ZDüDOHWDN*HSRGVWDZLDüSRGQLHZDUWRFLQD

SU]\NáDG

#set $name=”Jan Kowalski”
1D]\ZDPVLname

:HE0DFUR SRWUDIL WDN*H GRNRQ\ZDü ]PLDQ QD EDUG]LHM VNRPSOLNRZDQ\FK RELHNWDFK

Z\NRU]\VWXMFPHFKDQL]PLQWURVSHNFML

#set $customer.Name=”Jan Kowalski”

#set $order.findProduct($Product1).Prize = $newPrize

#use ‘parser’ until znacznik-konca

3RZ\*V]D G\UHNW\ZD QDND]XMH :HE0DFUR X*\ZDQLH LQQHJR parsera dla wskazanego bloku

WHNVWX 2EHFQLH GRVWSQ\ MHVW W\ONR parser „text”, który nie robi nic. Jest on jednak bardzo

SRWU]HEQ\SRQLHZD*]QDNL^`NWyUHPRJZ\VWSRZDüZ-DYD6FULSWEDUG]RF]VWRSU]HV]NDG]DMZ

SRSUDZQHMLQWHUSUHWDFMLV]DEORQXQDSU]\NáDG

#use ‘text’ until ‘-end-‘
WHQWHNVWQLHEG]LHDQDOL]RZDQ\SU]H]parser :HE0DFURZLF

]QDNL^^^```QLHEGQDPSU]HV]NDG]Dü
-end-
$WHQWHNVWEG]LHDQDOL]RZDQ\

3RQDGWRZNRQWHNFLHXPLHV]F]DQHV]DZV]HQDVWSXMFHRELHNW\

$CGI

XPR*OLZLDMF\GRVWSGR]PLHQQ\FKMDNLHVSRW\NDQHVZ&*,

$Form

XPR*OLZLDMF\GRVWSGR]PLHQQ\FK]IRUP\

$Config

XPR*OLZLDMF\GRVWSGR]PLHQQ\FK]GHILQLRZDQ\FKZSOLNXWebMacro.properties,

$Cookie

XPR*OLZLDMF\RGF]\W\ZDQLHL]PLHQLDQLHCookies,

$Session

XPR*OLZLDMF\GRVWSGR$3,VHVML]-6'.

$Request to obiekt HTTP request (HttpServletRequest).

$Response to obiekt HTTP response (HttpServletResponse)

,QWURVSHNFMD±Z\]QDF]DQLHZDUWRFL]PLHQQ\FK

W

:HE0DFUR ]DVWRVRZDQR LQWURVSHNFM GR Z\]QDF]DQLD ZDUWRFL ]PLHQQ\FK ']LNL WHPX

SURJUDPLVWD PR*H XPLHV]F]Dü Z NRQWHNFLH RELHNW\ GRZROQHJR W\SX ,QWURVSHNFMD Z VNUyFLH

SROHJD QD W\P *H :HE0DFUR DE\ Z\]QDF]\ü ZDUWRü ]PLHQQHM EG]LH LQWHUSUHWRZDü ]DSLV Z

V]DEORQLH QD NLOND VSRVREyZ ± SRV]XNXMF SyO L PHWRG Z RELHNFLH R GDQHM QD]ZLH 1DMOHSLHM

UR]SDWU]\üWRQDSU]\NáDG]LH=Dáy*P\*HZV]DEORQLH]QDMGXMHVL]DSLV

$Order.Customer.Fred

:HE0DFURVWDUDMFVLZ\]QDF]\üZDUWRüWHM]PLHQQHMSRGHMPLHQDVWSXMFHSUyE\GRNáDGQLH

ZWDNLHMNROHMQRFL
1.

sprawdzi czy obiekt Order ma publiczne pole Customer,

2.

sprawdzi czy obiekt Order

PDSXEOLF]QPHWRGgetCustomer(),

3.

sprawdzi czy obiekt Order

PDSXEOLF]QPHWRGgetCustomer(”Fred”),

4.

sprawdzi czy obiekt Order

PDSXEOLF]QPHWRGget(”Customer”).

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

145

*G\ ]DMG]LH SU]\SDGHN WU]HFL WR GOD WHJR SU]\NáDGX ]DNRF]\ WR Z\]QDF]DQLH ZDUWRFL :

SR]RVWDá\FK Z\SDGNDFK QD U]HF] Z\]QDF]RQHJR RELHNWX :HE0DFUR ]DVWRVXMH LGHQW\F]Q

SURFHGXUE\Z\]QDF]\üZáDVQRüFred.

: SU]\SDGNX QDGDZDQLD ZDUWRFL SU]\ NRU]\VWDQLX ] G\UHNW\Z\ VHW WebMacro zastosuje

DQDORJLF]QSURFHGXUSU]\F]\P]DPLDVWSRV]XNLZDüRGSRZLHGQLFKPHWRGgetEG]LHSRV]XNLZDü
metod set.

Kolekcje

Dla

:HE0DFUR RELHNW EG]LH NROHNFM D W\P VDP\P PR*H E\ü SU]HJOGDQ\ ]D SRPRF

dyrektywy #foreach

MH*HOL

RELHNWMHVWWDEOLF

obiekt implementuje interfejs Iterator,

obiekt implementuje interfejs Enumeration,

PDSXEOLF]QPHWRGIterator iterator()",

PDSXEOLF]QPHWRGEnumeration elements()".

3.3.3. Pisanie servletów z wykorzystaniem WebMacro

Najprostszym sposobem napisania

VHUYOHWX NRU]\VWDMFHJR ] WebMacro jest stworzenie klasy

G]LHG]LF]FHM]:06HUYOHW:NODVLHWHMPXVLP\]GHILQLRZDüPHWRGhandle(), która posiada jeden
parametr typu WebContext

MHVW WR ZVSRPQLDQ\ MX* NRQWHNVW L ]ZUDFD RELHNW W\SX Template.

3RSU]H] NRQWHNVW SURJUDPLVWD PD GRVWS GR ZV]\VWNLFK RELHNWyZ GRVWSQ\FK VWDQGDUGRZR Z
servletach (tj. Cookies, Session API, HttpServletRequest, HttpServletResponse

'RVWS GR

podstawowych operacji jak: pobieranie danych z formy i operacje na Cookies

]RVWDáXSURV]F]RQ\

SRSU]H] GRGDQLH NLONX PHWRG GRVWSQ\FK EH]SRUHGQLR Z RELHNFLH WebContext *áyZQ\P
zadaniem programisty jest wyznaczenie wszystkich potrzebnych zmiennych i umieszczenie ich w

NRQWHNFLH =PLHQQH Z NRQWHNFLH V SU]HFKRZ\ZDQH ]D SRPRF WDEOLF\ haszowej. Programista

XPLHV]F]D ZLF Z NRQWHNFLH RELHNW\ OXE NROHNFM RELHNWyZ SRG RGSRZLHGQLP NOXF]HP

áDFXFKHP ]QDNyZ NWyU\ EG]LH VWDQRZLá SLHUZV]\ F]áRQ Z QD]ZLH ]PLHQQHM Z V]DEORQLH

5R]ZD*P\QDVWSXMF\SU]\NáDG

public Template handle(WebContext context){

context.put(”counter”, new Integer(10));

Vector v = new Vector();

v.addElement(”Ala”);

v.addElement(”Ola”);

v.addElement(”Ewa”);

context.put(”vector”,v);

}

:V]DEORQLHPR*HP\RGZRáDüVLGRW\FK]PLHQQ\FKSU]H]

$counter<br>

#foreach $i in $vector {

$i<br>

}

'RNXPHQWZ\JHQHURZDQ\SU]H]WHQIUDJPHQWNRGXEG]LHZ\JOGDáQDVWSXMFR

10<br>

Ala<br>

Ola<br>

background image

146

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

Ewa<br>

3RQLHZD*PDP\GRF]\QLHQLD]WDEOLFKDV]RZSRQRZQHX*\FLHWHJRVDPHJRNOXF]DVSRZRGXMH

QDGSLVDQLHSRSU]HGQLHJRRELHNWX8ZDJDWDWDN*HGRW\F]\G\UHNW\Z\#set bowiem operuje ona na

W\P VDP\P NRQWHNFLH (#set $a = 10 Z V]DEORQLH MHVW UyZQRZD*QH ] Z\NRQDQLHP context.put
(”a”,new

Integer(10)) w kodzie VHUYOHWX 7U]HED WDN*H XZD*Dü Z\ELHUDMF QD]Z GOD ]PLHQQHM

$element w dyrektywie „#foreach $element in $kolekcja

´JG\*RQDWDN*HMHVWSU]HFKRZ\ZDQDZ

NRQWHNFLH

Metoda handle()

PXVL]ZUyFLüRELHNWW\SXTemplate. Za dostarczanie tego obiektu w WebMacro

RGSRZLHG]LDOQ\ MHVW VSHFMDOQ\ PRGXá W]Z TemplateProvider = PRGXáX WHJR NRU]\VWD PHWRGD
Template getTemplate(String)

´NWyUSURJUDPLVWDPR*HZ\NRU]\VWDüGRRNUHOHQLDV]DEORQXMDNL

PD E\ü X*\W\ GR Z\JHQHURZDQLD VWURQ\ 6WDQGDUGRZ\ TemplateProvider wyszukuje szablony w

NDWDORJDFK ZVND]DQ\FK Z SOLNX NRQILJXUDF\MQ\P QD G\VNX ND*G\ V]DEORQ MHVW SOLNLHP

'RVWSQHVWDN*HLQQHZHUVMHWHJRPRGXáXXPR*OLZLDMFHSRELHUDQLHV]DEORQyZSU]H]SURWRNyá

+773EG(]ED]\GDQ\FK

:HE0DFUR ]H Z]JOGyZ HIHNW\ZQRFLRZ\FK PD ]DLPSOHPHQWRZDQ\ PHFKDQL]P EXIRURZDQLD

V]DEORQyZ F]DV SR MDNLP V]DEORQ\ PXV] E\ü SRQRZQLH SREUDQH PR*QD XVWDZLü Z SOLNX

NRQILJXUDF\MQ\P'RGDWNRZRSURJUDPLVWDPR*H]DLPSOHPHQWRZDüPHWRG\start() i stop(),NWyUHV

Z\NRQ\ZDQHGRNáDGQLHUD]RGSRZLHGQLRSU]\VWDUFLHservletu i przy jego zatrzymywaniu.

3.3.4. Konfiguracja

$E\PyFNRU]\VWDü]:HE0DFURQDOH*\Z\NRQDüQDVWSXMFHNURNL

1.

GRGDüSOLNwebmacro.jar do CLASSPATH w konfiguracji serwera WWW,

2.

VNRSLRZDüSOLNWebMacro.properties do katalogu, który jest wymieniony w CLASSPATH,

3.

w pliku WebMacro.properties

]PLHQLüZDUWRüSDUDPHWUXTemplatePathSDUDPHWUWHQRNUHOD

NDWDORJLZNWyU\FKEGZ\V]XNLZDQHV]DEORQ\

4.

GRGDWNRZR PR*QD Z SOLNX WebMacro.properties ]PLHQLü ZDUWRFL LQQ\FK SR*\WHF]Q\FK

SDUDPHWUyZ]JRGQLH]]DáF]RQ\PLZW\PSOLNXLQVWUXNFMDPLQSTemplateExpireTime – czas
buforowania szablonów, LogFile

±QD]ZDSOLNXGRNWyUHJREGWUDILDüLQIRUPDFMHSU]\GDWQH

przy debugowaniu servletów).

'ODF]HJRZDUWRX*\ZDü

WebMacro?

:HE0DFURMHVWSRW*Q\PLZ\GDMQ\PQDU]G]LHPNWyUHGRVNRQDOHZVSLHUDWZRU]HQLHDSOLNDFML

LQWHUQHWRZ\FK 5R]G]LHOHQLH SUDF\ SURJUDPLVW\ L SURMHNWDQWD VWURQ MHVW EDUG]R ZD*QH SU]\

WZRU]HQLXGX*\FKLVNRPSOLNRZDQ\FKV\VWHPyZ']LNLWHPX]\VNXMHVLQDSU]HMU]\VWRFLNRGX

DSOLNDFMLNWyUDQLHMHVWÄ]DPLHFDQD´SU]H]NRG+70/LYLFHYHUVD3U]HMU]\VWRüNRGXZSá\ZDQD

]PQLHMV]HQLH LORFL EáGyZ Z DSOLNDFML 0R*OLZH MHVW ]UyZQROHJOHQLH SUDF\ SURJUDPLVWyZ L

SURMHNWDQWyZVWURQ3URVWHSRSUDZNLHG\WRUVNLHVSURZDG]DMVLW\ONRGRSRSUDZLHQLDV]DEORQX±

QLHPDSRWU]HE\SRQRZQHMUHNRPSLODFMLDSOLNDFML3RQLHZD*NRU]\VWDVL]V]DEORQyZQLFQLHVWRLQD

SU]HV]NRG]LH E\ W VDP DSOLNDFM SU]\VWRVRZDü GR LQQ\FK WHFKQRORJLL QD SU]\NáDG :$3 ±

Z\VWDUF]\W\ONRX*\üLQQ\FKV]DEORQyZ

3.4. JDBC

-'%&MHVWLQWHUIHMVHP$3,M]\ND-DYDSR]ZDODMF\PQDZ\NRQ\ZDQLH]DS\WD64/]ELyUNODV

oraz interfejsów). Wykorzystanie tego standardu pozwala na napisanie uniwersalnego programu

NWyU\EG]LHPR*QDX*\üZLHORNURWQLHGRáF]HQLDVL]Uy*Q\PLED]DPLGDQ\FK:VNUyFLH-'%&
pozwala na:

QDZL]DQLHSRáF]HQLD]ED]GDQ\FK

Z\V\áDQLH]DS\WD64/

przetwarzanie wyników.

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

147

3RQL*V]\SU]\NáDGVWDQRZLLOXVWUDFMW\FKPR*OLZRFL

Connection con = DriverManager.getConnection (

"jdbc:oracle:thin:@host:port:sid",

"login",

"password");

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM

tabelka1");

while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

$E\ PyF VNRU]\VWDü ] WHJR VWDQGDUGX QDOH*\ VL ]DRSDWU]\ü Z VWHURZQLN NWyU\ MHVW

LPSOHPHQWDFM LQWHUIHMVyZ ± RGSRZLHGQL GOD GDQHJR SURGXFHQWD ED]\ GDQ\FK -'%& QLH QDNáDGD

*DGQ\FK UHVWU\NFML QD SROHFHQLD 64/ JZDUDQWXMH GX* HODVW\F]QRü SR]ZDODMF QD X*\FLH

VSHF\ILF]QHM GOD GDQHJR SURGXFHQWD VNáDGQL 64/ -'%& Z\PDJD DE\ VWHURZQLN GRVWDUF]\á

SU]\QDMPQLHM PR*OLZRFL $16, 64/ 2]QDF]D WR *H X*\WNRZQLN PR*H OLF]\ü QD SRGVWDZRZ\

SR]LRPIXQNFMRQDOQRFL

.

: -'%& Z\Uy*QLDP\ QDVWSXMFH LQWHUIHMV\ SRGVWDZRZH Connection, DriverManager,

Statement, ResultSet, PreparedStatement, CallableStatement.

Connection

Obiekt

&RQQHFWLRQUHSUH]HQWXMHSRáF]HQLH]ED]GDQ\FK6HVMDSRáF]HQLD]DZLHUDSROHFHQLD

64/NWyUHVZ\NRQ\ZDQHDZ\QLNL]ZUDFDQHSU]H]SRáF]HQLH3RMHG\QF]DDSOLNDFMDPR*HPLHü

MHGQROXEZLHOHSRáF]H]GDQED]GDQ\FKOXESRáF]HQLD]Uy*Q\PLED]DPL3UDFXMF]ED]DPL

F]VWRLPSOHPHQWXMHVLSXOSRáF]HNWyUD]QDF]QLHSU]\VSLHV]DSUDF]HZ]JOGXQDIDNW*HF]DV

WZRU]HQLD QRZHJR SRáF]HQLD MHVW VWRVXQNRZR GX*\ )DNW WHQ XZ]JOGQLRQR Z -'%& NWyU\
dostarcza odpowiednich interfejsów.

DriverManager

Klasa DriverManager

MHVW ZDUVWZ ]DU]G]DMF SUDFXMF PLG]\ X*\WNRZQLNLHP D

VWHURZQLNLHP .ODVD WD VWHUXMH SURFHVHP QDZL]\ZDQLD SRáF]HQLD PLG]\ ED] GDQ\FK D
odpowiednim sterownikiem.

Statement

Klasa Statement

MHVW WZRU]RQD SU]H] Z\ZRáDQLH PHWRG\ createStatement() na rzecz obiektu

Connection

8*\ZDQDMHVWZFHOXSURVWHJRZ\VáDQLD]DS\WDQLDGRED]\GDQ\FK2ELHNW\WHMNODV\

PRJ]DZLHUDü]DS\WDQLD64/NWyUHPRJX*\ZDüSQL escape syntax. Escape syntax sygnalizuje,

*HNRG]DZDUW\PLG]\]QDF]QLNDPLSRZLQLHQE\üUy*QLHREVáXJLZDQ\6WHURZQLN-'%&Z\V]XNXMH
w pytaniu escape syntax

L]DPLHQLDJRQDNRG]UR]XPLDá\GODGDQHMED]\GDQ\FK3R]ZDODWRQD

]DGDZDQLH]DS\WDQLH]DOH*Q\FKRGLPSOHPHQWDFMLUy*Q\FKV\VWHPyZ]DU]G]DQLDED]GDQ\FKQD

SU]\NáDG

stmt.executeQuery("SELECT * FROM pracownicy

WHERE pracuje_od ={ts `2000-01-01 12:0:0.0 '};

Resultset

ResultSet

]DZLHUDZV]\VWNLHNURWNLUHODFMLVSHáQLDMFHZDUXQNL]DS\WDQLDRUD]XPR*OLZLDGRVWS

GR W\FK NURWHN SRSU]H] RNUHORQ\ ]ELyU PHWRG getXXX(). Obiekt ResultSet pozostawia w bazie

NXUVRUNWyU\MHVWRWZDUW\GRPRPHQWX]DPNQLFLDRELHNWX

PreparedStatement

background image

148

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

Obiekt PreparedStatement

X*\ZDQ\ MHVW GR Z\NRQ\ZDQLD SUHNRPSLORZDQ\FK SROHFH 64/

]DZLHUDMF\FK MHGQR OXE ZLFHM SyO SDUDPHWUyZ R]QDF]DQ\FK ]QDNLHP " ± V WDN ]ZDQH

SDUDPHWU\ ,1 3DUDPHWURP ZHMFLRZ\P QDOH*\ QDVWSQLH SU]\SLVDü SR*GDQH ZDUWRFL SRSU]H]

X*\FLH RGSRZLHGQLFK PHWRG setXXX() 3RQLHZD* RELHNW\ PreparedStatement V prekompilowane

LFK Z\NRQDQLH PR*H E\ü V]\EV]H QL* RELHNWyZ Statement. Zapytania SQL wykonywane

ZLHORNURWQLH Z SWOL V WZRU]RQH ]H Z]JOGyZ Z\GDMQRFLRZ\FK ] Z\NRU]\VWDQLHP
PreparedStatement.

PreparedStatement pstmt = con.prepareStatement(

"UPDATE table4 SET m = ? WHERE x = ?");

pstmt.setLong (1, 123456789);

pstmt.setString(2, "qwerty");

int rowCount = pstmt.executeUpdate();

CallableStatement

Obiekt CallableStatement

MHVWZ\NRU]\VW\ZDQ\GRVWZRU]HQLDRGZRáDQLDGRSU]HFKRZ\ZDQ\FK

w bazie danych procedur i budowany z wykorzystaniem metody prepareCall na rzecz obiektu
Connection

QDSU]\NáDG

CallableStatement cstmt = con.prepareCall( "{call getTestData(?,
?)}");

3DUDPHWU\R]QDF]RQHÄ"´PRJE\üZHMFLRZHZ\MFLRZHOXEZHMFLRZRZ\MFLRZHQS

CallableStatement cstmt = conn.prepareCall("{? = CALL balance(?)}");

cstmt.registerOutParameter(1, Types.FLOAT);

cstmt.setInt(2, 13);

cstmt.executeUpdate();

float acctBal = cstmt.getFloat(1);

'OD SRWU]HE SUDF\ ] ED] GDQ\FK ]D SRPRF M]\ND 64/ LVWRWQH MHVW RGZ]RURZDQLH W\SyZ

danych

-DYD!-'%&!64/!'%06-'%&$3,MHVW]JRGQ\]64/DFRZLFHMXGRVWSQLD

W\S\GDQ\FK]JRGQH]SURSR]\FMVWDQGDUGX64/QDSU]\NáDGW\SGDQ\FK%/2%7HRUHW\F]QLH

NRQVWUXNWRURSURJUDPRZDQLDED]\GDQ\FKSRZLQLHQWUDNWRZDüW\S\GDQ\FK]ED]GDQ\FKWDNMDNE\

WRE\á\W\S\GDQ\FK64/

3.5. TOPIC MAPS

3.5.1. XML

XML jest idealnym formatem do przechowywania strukturalizowanych informacji,

XPR*OLZLDMF\P SU]\ W\P ZLHORNURWQH X*\ZDQLH GDQHJR ]ELRUX LQIRUPDFML SU]\ X*\FLX Uy*Q\FK

DSOLNDFML ;0/ MDNR WDNL QLH MHVW MHGQDN Z\VWDUF]DMF\ JG\ LORü LQIRUPDFML NWyUH RWU]\PXMH

X*\WNRZQLNNRFRZ\MHVWU]GXPHJDEDMWyZSRPLPR*HVRQHFLOHVWUXNWXUDOL]RZDQH3RWU]HEQ\

MHVWPHFKDQL]PXPR*OLZLDMF\RWU]\P\ZDQLH*GDQ\FKZ\QLNyZV]\ENRSUHF\]\MQLHL]JRGQLH]

DNWXDOQ\PNRQWHNVWHP-HGQ\P]UR]ZL]DVSHáQLDMF\FKWHZ\PDJDQLDV723,&0$36

®

.

&]\PV723,&0$36"

723,&0$36MHVWXV\VWHPDW\]RZDQQRWDFMX*\ZDQGRUHSUH]HQWDFMLZLHG]\3R]ZDODRQDQD

GHILQLRZDQLHSRMü±QD]\ZDQ\FKWXWDMtopikamiL]DOH*QRFLPLG]\QLPL)L]\F]QLHMHVWWR]ELyU

GRNXPHQWyZ]DZLHUDMF\FKLQIRUPDFMHSRáF]RQ\FK]DOH*QRFLDPLNWyUHX*\ZDMQRWDFML]JRGQHM
ze standardem (ISO/IEC FCD 13250

723,& 0$36 VWUXNWXUDOL]XM ]ELyU LQIRUPDFML SRSU]H]

EXGRZDQLH VLHFL VHPDQW\F]QHM ÄQDG´ ]DVREDPL 6LHü WD XPR*OLZLD áDWZ QDZLJDFM L VHOHNFM
otrzymywanych informacji.

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

149

3.5.3. Model TOPIC MAPS

3RGVWDZRZ\PM]\NLHPNWyU\XPR*OLZLDGHILQLRZDQLH723,&0$36MHVWM]\N;0/723,&

MAPS to dokument

;0/Z\ Z NWyU\P ]QDMGXM VL HOHPHQW\ Uy*Q\FK W\SyZ Z\ZLHG]LRQH ]H

]ELRUXSRGVWDZRZ\FKIRUPDUFKLWHNWXU\723,&0$368*\ZDQHRQHVGRGHILQLRZDQLDWRSLNyZ

Z\VWSLH WRSLNyZ DQJ occurences of topics L SRZL]D PLG]\ WRSLNDPL DQJ associations
between topics

3RGVWDZRZ\PLHOHPHQWDPLPRGHOXV

Topic

±UHSUH]HQWXMHGRZROQHSRMFLHRVREMHGQRVWNNRQFHSFMLGHEH]Z]JOGXF]\RQD

LVWQLHMHLMDNPDFKDUDNWHU\VW\N.D*G\]WRSLNyZPR*HPLHüMHGHQOXEZLHOHW\SyZDQJ
topic types

=DOH*QRüPLG]\WRSLNLHPDMHJRW\SHPMHVWW\PVDP\PFR]DOH*QRüNODVD±

LQVWDQFMD NODV\ 1D SU]\NáDG WRSLNL 3ROVND :LHONRSROVND 3R]QD Infosystem 2000 oraz
typy topików: kraj, województwo, miasto, konferencja.

Topic name

± VNáDGD VL ] WU]HFK F]FL base name (nazwa podstawowa), display name

QD]ZD Z\ZLHWODQD sort name QD]ZD GOD VRUWRZDQLD 1D SU]\NáDG (base/display/sort):

3R]QDQ3R]QDSR]QDQ

Topic occurence

Z\VWSLHQLHWRSLNXLoccurence role typeURODZ\VWSLHQLD±Z\VWSLHQLH

MHVWUHIHUHQFMGRNRQNUHWQHJR]DVREX]ZL]DQHJR]GDQ\PWRSLNLHP.D*GHZ\VWSLHQLHPD

RNUHORQ\ W\S Z\UD*RQ\ MDNR W\S Z\VWSLHQLD occurence role type L ]DNUHV Z\VWSLHQLD
(occurence scope

7\SZ\VWSLHQLDMHVWWH*VDPZVRELHWRSLNLHP1DSU]\NáDGZ\VWSLHQLH

(occurence): wykres_1.xls, wojna.doc, killer.mpg, hey_Joe.mp3 oraz

W\S Z\VWSLHQLD

(occurence role types):

Z\NUHVDUW\NXáYLGHRSOLNPX]\F]Q\

Topic association

SRZL]DQLH WRSLNX L association type W\S SRZL]DQLD ± SRZL]DQLH

RNUHOD UHODFM PLG]\ GZRPD OXE ZLNV] LORFL WRSLNyZ .D*GH SRZL]DQLH MHVW

RNUHORQHJRW\SX.D*G\SRZL]DQ\WRSLNSHáQLRNUHORQUROZ]ZL]NXDQJassociation
role type

=DUyZQRW\SSRZL]DQLDWRSLNyZMDNLURODMDNSHáQLWHQW\SSRZL]DQLDVWDN*H

VDPH Z VRELH WRSLNDPL 1D SU]\NáDG SRZL]DQLH :LHONRSROVND ]QDMGXMH VL Z 3ROVFH

3R]QD ]QDMGXMH VL Z :LHONRSROVFH ,QIRV\VWHP RGE\ZD VL Z 3R]QDQLX QDWRPLDVW typ

SRZL]DQLD ]QDMGXMH VL Z RGE\ZD VL Z RUD] UROD SRZL]DQLD ZRMHZyG]WZRSDVWZR
miasto/województwo, konferencja/miasto.

Scope

]DNUHVGRZROQ\SU]\G]LDáQD]ZZ\VWSLHSRZL]DGODRNUHORQHJRWRSLNXMHVW

XZD*DQ\MDNRSRSUDZQ\VHQVRZQ\ZRNUHORQ\FKJUDQLFDFKNWyUHPRJDOHQLHPXV]E\ü

Z\UD(QLHZ\VSHF\ILNRZDQH7DJUDQLFDZD*QRFLGDQHJRSU]\G]LDáXMHVWQD]\ZDQD]DNUHVHP
(

VFRSH1DSU]\NáDGzakresy (scopes): DE\]DFKRZDüUR]Uy*QLHQLHPLG]\PLDVWHPÄParis”

we Francji, miastem „Paris” w Texasie i bohaterem mitologicznym o imieniu „Paris” musimy

SRZL]Dü SRV]F]HJyOQH WRSLNL ] ]DNUHVDPL ZD*QRFL GOD ND*GHJR ] QLFK , WDN GOD W\FK

SU]\SDGNyZ]DNUHVDPLPRJE\üÄ)UDQFMD´Ä86$´Ä0LWRORJLD*UHFND´

background image

150

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

5\V3U]\NáDGRZDPDSDWRSLNyZ

3.5.4. Zastosowania

723,&0$36PRJ]QDOH(ü]DVWRVRZDQLHZ

NZDOLILNRZDQLX ]DZDUWRFL RELHNWyZ SU]HFKRZXMF\FK LQIRUPDFMH RUD] DE\ XáDWZLü

QDZLJDFM SU]\ X*\FLX RGSRZLHGQLFK PHWRG WDNLFK MDN LQGHNV\ V\VWHP\ VáRZQLNRZH
systemy przeszukiwania cytatów, systemów tworzenia dokumentacji technicznych dla

SU]HGVLELRUVWZ

ILOWURZDQLX]ELRUyZLQIRUPDFMLGODRJUDQLF]HQLD]DNUHVXGDQ\FKZLGRF]Q\FKGODRNUHORQHJR

X*\WNRZQLND V\VWHPX OXE NRQNUHWQHJR ]DVWRVRZDQLD )LOWURZDQLH PR*H E\ü SRPRFQH Z

]DU]G]DQLX ZLHORM]\F]Q\PL GRNXPHQWDPL ]DU]G]DQLX WU\EDPL GRVWSX Z ]DOH*QRFL GR

SROLW\NLRFKURQ\LQIRUPDFMLGDQHMLQVW\WXFMLGRVWDUF]DQLXF]FLRZHJRGRVWSXGRLQIRUPDFML

Z]DOH*QRFLRGSURILOXX*\WNRZQLNDG]LHG]LQ\ZLHG]\LWG

32=1$

POLSKA

INFOSYSTEM

WIELKOPOLSKA

Ocurrences role types (typy

Z\VWSLH

:

DUW\NXá
wykres
video

2FFXUHQFHVZ\VWSLHQLD

Topic Types (typy topików)

$VVRFLDWLRQW\SHVW\S\SRZL]D

]QDMGXMHVLZ

]QDMGXMHVLZ

RGE\ZDVL

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

151

strukturalizacji

QLHVWUXNWXUDOL]RZDQHM LQIRUPDFML GOD XáDWZLHQLD WZRU]HQLD LQWHUIHMVyZ

X*\WNRZQLND MDNR PDS WRSLNyZ XPR*OLZLDMF\FK áDWZH L V]\ENLH QDZLJRZDQLH ZUyG
informacji.

723,& 0$36 PRJ E\ü UR]XPLDQH MDNR ÄUR]V]HU]RQ\ PHFKDQL]P ]QDF]QLNyZ´ GODWHJR *H

X*\FLH LFK SROHJD QD QDáR*HQLX RNUHORQHM VWUXNWXU\ QD NRQNUHWQ\ ]ELyU LQIRUPDFML EH]
wprowadzania zmian w samych danych i ich formie.

3.5.5. Nawigacja w strukturze TOPIC MAPS

,VWQLHMGZDVSRVRE\X*\FLD723,&0$36QDZLJDFMDSU]\X*\FLXÄlinków” oraz odpytywanie

Z]áyZU\V

1DZLJDFMDSU]\X*\FLXOLQNyZPR*H]RVWDü]DLPSOHPHQWRZDQDMDNRJUDIOXEMDNRVWUXNWXUD
oparta na drzewie.

INTERNET

BOOKMARK

BROWSER

HTTP

HTML

COOKIE

HYPERTEXT

EMAIL

MODEM

Rys. 6. Drzewo nawigacji i graf nawigacji

0DSDWRSLNyZPR*H]DZLHUDüPLOLRQ\Z]áyZLlinków dlatego odpowiednio jasna reprezentacja

JUDILF]QDWHMVWUXNWXU\PDRJURPQH]QDF]HQLHGODX*\WNRZQLND

2GS\W\ZDQLHZ]áyZZ\PDJD]DVWRVRZDQLDM]\ND]DS\WD]JRGQHJR ] NRQFHSFM 723,&

0$36 8*\WNRZQLN GHILQLXMF\ ]DS\WDQLD SRWU]HEXMH Z W\P SU]\SDGNX GRGDWNRZHJR

ZVSDUFLD ]H VWURQ\ DSOLNDFML QD SU]\NáDG UR]ZLMDOQH OLVW\ PHQX Z\ZLHWODMFH LQIRUPDFMH

GRVWSQHQDPDSLH

3URMHNWRZDQLH WZRU]HQLH L XWU]\P\ZDQLH PDS WRSLNyZ SURFHGXU\ QDU]G]LD

algorytm, doradztwo)

Projektowanie mapy topików to proces przyrostowy. Definiowanie typów, ról ich nadklas i

SRGNODV PXVL RGE\ZDü VL SRG NRQWURO QDU]G]L ZVSRPDJDMF\FK SURMHNWRZDQLH %DUG]R ZD*QH

MHVW]DSHZQLHQLHVSyMQRFLPDS\

3LHUZV]\P HWDSHP SURMHNWRZDQLD MHVW Z\JHQHURZDQLH ZV]\VWNLFK WRSLNyZ SRZL]D L

Z\VWSLH : GX*\FK DSOLNDFMDFK PRJ LFK E\ü W\VLFH D QDZHW PLOLRQ\ 1DU]G]LH GR

SURMHNWRZDQLD SRZLQQR XPR*OLZLDü áDWZ\ GRVWS GR ZV]\VWNLFK W\FK RELHNWyZ RUD] PLHü

PR*OLZRüVSUDZG]DQLDVSyMQRFLSRZVWDMFHMPDS\

*UDQLFDPLG]\SURMHNWRZDQLHPDWZRU]HQLHPPDS\WRSLNyZMHVWSá\QQD7\ONRZSRF]WNRZHM

ID]LH PR*QD UR]Uy*QLü HWDS GHILQLRZDQLD W\SyZ L UyO ] MHGQHM VWURQ\ L GHILQLRZDQLD WRSLNyZ

Z\VWSLHSRZL]D]GUXJLHM3RGF]DVUR]ZLMDQLDPDS\RELHWHF]\QQRFLPRJE\üZ\NRQ\ZDQH

UyZQROHJOHSU]H]Uy*QHJUXS\VSHFMDOLVWyZ

INTERNET

BOOKMARK

1.2. M

BROWSER

1.3. CO

1.4. HYP

1.5. EM

1.6.

1.7. H

background image

152

-DNXE*DáVNL.DURO)RUHPVNL$UNDGLXV]%LJRV.U]\V]WRI.DZD=E\V]NR.UyOLNRZVNL

Automatyczna generacja map topików

'RVWSQHLQIRUPDFMHGRDXWRPDW\F]QHJRJHQHURZDQLDPDSVQDVWSXMFH

wzorzec mapy topików (ang. topic map template) ze zdefiniowanymi typami topików, typami

Z\VWSLHW\SDPLDVRFMDFML

adresy zasobów informacyjnych w systemie plików, bazie danych, Internecie,

metadane o zasobach informacyjnych (nazwa, format, klasyfikacja),

VWUXNWXUD]DVREyZLQIRUPDFMLGRVWSQDMDNRLQVWDQFMH;0/

$XWRPDW\F]QD JHQHUDFMD MHVW NRQWURORZDQD SU]H] ]ELyU UHJXá ]JURPDG]RQ\FK Z VNU\SFLH

3URJUDP SU]HWZDU]DMF\ LQWHUSUHWXMH VNU\SW SRELHUD GRVWSQH LQIRUPDFMH MDNR SDUDPHWU\

ZHMFLRZH:\QLNLHPMHVWPDSDWRSLNyZ]JRGQD]HVWDQGDUGHP

Rys. 7. Schemat automatycznego generowania map topików

,GHQW\ILNDFMDWRSLNyZLZ\VWSLH

3LHUZV]ID]DXWRPDW\F]QHMJHQHUDFMLMHVWLGHQW\ILNDFMDZUyG]DVREyZLQIRUPDFMLNDQG\GDWyZ

QDWRSLNLRNUHORQHJRW\SX-H*HOL]DVRE\]RVWDQRGQDOH]LRQHWZRU]RQ\MHVWWRSLNLX*\ZDQ\MHVW

DOJRU\WP Z\V]XNXMF\ QD]Z GOD WRSLNX ] ]DVREyZ OXE metainformacji. Potem tworzone jest

SRZL]DQLHWRSLNX]]DVREHPIL]\F]Q\PDQJoccurence).

3U]\NáDGRZDUHJXáDZ\V]XNXMFDWRSLNLZ]ELRU]H]DVREyZPR*HE\üQDVWSXMFD
if

resource fulfills metadata <condition> and/or

contains

structure <element> in <context> containing <content>

then

create topic of <type> with name derived from metadata

<field> or

name derived from <element> in <context> and

create

occurence to resource with <role>

,GHQW\ILNDFMDSRZL]D

'UXJID]DXWRPDW\F]QHMJHQHUDFMLMHVWWZRU]HQLHSRZL]DSRPLG]\WRSLNDPLVWZRU]RQ\PLZ

SLHUZV]HM ID]LH -HVW WR EDUG]R ]áR*RQH ]DGDQLH SRQLHZD* X]\VNLZDQLH VWUXNWXU ZLHG]\ ]

LVWQLHMF\FKGDQ\FKRGE\ZDVLSU]\X*\FLXDOJRU\WPyZV]WXF]QHMLQWHOLJHQFML

M

APA TOPIKÓW

G

ENERATOR MAPY TOPIKÓW

REPOZYTORIUM

SZABLON MAPY

=%,Ï55(*8à

background image

Budowa nowoczesnych aplikacji internetowych z

Z\NRU]\VWDQLHPM]\ND-DYD

153

'RVWSQHDSOLNDFMHWZRU]FHPDS\WRSLNyZ

1RUPD,62]RVWDáDRSXEOLNRZDQDZVW\F]QLX$SOLNDFMHVáX*FHGRWZRU]HQLDPDS

WRSLNyZ V MHV]F]H Z WUDNFLH UR]ZRMX 3U]RGXMF ILUP Z ]DNUHVLH WZRU]HQLD RSURJUDPRZDQLD

ZVSRPDJDMFHJR723,&0$36MHVWILUPDInfoLoom. Dostarcza ona oprogramowanie Topic Map
Loom® rozwijane od 5 lat.

'ODF]HJRSRMDZLHQLHVL723,&0$36MHVWZD*Q\PZ\GDU]HQLHP"

723,& 0$36 GDMH PR*OLZRü XQLZHUVDOQHJR áF]HQLD ZLHG]\ Z IRUPLH VLHFL LQIRUPDFML

WZRU]F\FKED]ZLHG]\

723,&0$36PDMRJURPQHPR*OLZRFLSU]\]DFKRZDQLXSURVWRW\LHODVW\F]QRFL

723,& 0$36 V NURNLHP Z UR]ZRMX LGHL ;0/ XNLHUXQNRZXMF V\VWHP\ SU]HFKRZXMFH
informacje na Internet,

723,&0$36PRJE\üWZRU]RQHQDGUy*Q\PL(UyGáDPLLQIRUPDFML+70/6*0/;0/
ASCII, MSWORD, PDF, EMAIL, a nawet nad bazami danych).

Bibliografia

1.

=.UyOLNRZVNL0=DNU]HZLF]URGRZLVNRUR]ZRMXDSOLNDFMLLQWHUQHWRZ\FK2UDFOH:HE$SSOLFDWLRQ6HUYHU

+ Pl/SQL Cartridge, w: PC Kurier, Nr 4/2000, str. 80-86, 2000.

2. Z.

Królikowski, M. Zakrzewicz, Charakterystyka platform rozwoju aplikacji internetowych, Informatyka,

Nr.5, str. 23-30, 2000 r.

3. http://php.zone.pl/.

4. www.webmacro.org.

5. www.netscape.com.

6. http://technet.oracle.com/.

7. http://java.sun.com/.

8. Jason Hunter, William Crawford, "JAVA Servlet Programming", O'REILLY, 1998.

9. Seth White, Maydane Fisher, Rick Cattel, Graham Hamilton, Mark Hapner, "JDBCTM API Tutorial and

Reeference, Second Edition" , Sun Microsystems, 1999.

10. Dokument ISO/IEC-FCD 13250:1999-Topic Maps,

11. Hans Holger Rath, "Technical Issues on Topic Maps".

12. Hans Holger Rath, Steve Pepper, "Topic Maps at work".

13. www.infoloom.com.

14. www.step.pl.

15. www.cogsci.princeton.edu/~wn/ (implementacja Topic Maps).

16. www.quid.fr (implementacja Topic Maps).

17. www.wissen.de (implementacja Topic Maps).


Wyszukiwarka

Podobne podstrony:
Budowa nowoczesnych aplikacji i Nieznany (2)
Nowoczesne aplikacje internetowe MongoDB Express AngularJS Node js noapin
Nowoczesne aplikacje internetowe MongoDB Express AngularJS Node js
Nowoczesne aplikacje internetowe MongoDB Express AngularJS Node js 2
Nowoczesne aplikacje internetowe MongoDB Express AngularJS Node js noapin
Ruby on Rails 2 1 Tworzenie nowoczesnych aplikacji internetowych 2
Nowoczesne aplikacje internetowe MongoDB Express AngularJS Node js
Zend Framework od podstaw Wykorzystaj gotowe rozwiazania PHP do tworzenia zaawansowanych aplikacji i
informatyka zend framework od podstaw wykorzystaj gotowe rozwiazania php do tworzenia zaawansowanych
Scenariusze zajęć edukacyjnych z wykorzystaniem aplikacji internetowych do programu edukacji prze
Skalowalne witryny internetowe Budowa anie i optymalizacja aplikacji internetowych nowej generacji

więcej podobnych podstron