Tài liệu Truy nhập cơ sở dữ liệu bằng web: ... Ebook Truy nhập cơ sở dữ liệu bằng web
93 trang |
Chia sẻ: huyen82 | Lượt xem: 1678 | Lượt tải: 0
Tóm tắt tài liệu Truy nhập cơ sở dữ liệu bằng web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
§¹i häc quèc gia hµ néi
trêng §¹i Häc khoa häc tù nhiªn
Khoa c«ng nghÖ th«ng tin
--------------------
bïi quang hng
Truy nhËp c¬ së d÷ liÖu b»ng Web
LuËn v¨n tèt nghiÖp cö nh©n khoa häc
Ngµnh tin häc m· sè:
Gi¸o viªn híng dÉn
1.
2.
Gi¸o viªn ph¶n biÖn
Hµ néi - 2000
MôC LôC
PhÇn I Tæng quan vÒ hÖ thèng Web
Ch¬ng i HÖ thèng Web
Lêi Giíi thiÖu
Trong thêi kú cña kû nguyªn th«ng tin hiÖn nay, vÊn ®Ò trao ®æi th«ng tin lµ v« cïng quan träng. Nhu cÇu trao ®æi th«ng tin gia t¨ng khi nÒn kinh tÕ ngµy cµng ph¸t triÓn.
Do sù bïng næ vÒ th«ng tin nh vËy ngêi ta ®· vµ ®ang rÊt quan t©m sö dông c«ng nghÖ tin häc ®Æc biÖt lµ c«ng nghÖ Internet, Intranet. C¸c c«ng nghÖ nµy t¹o ®iÒu kiÖn cho viÖc trao ®æi vµ phæ biÕn th«ng tin dÔ dµng kh«ng phô thuéc vµo vÞ trÝ ®Þa lÝ. C«ng nghÖ Internet, Intranet ban ®Çu chñ yÕu phôc vô cho gi¸o dôc, vµ nghiªn cøu, nay ®· më réng ra c¸c lÜnh vùc kh¸c (th¬ng m¹i, gi¶i trÝ, ...).
Cã rÊt nhiÒu ph¬ng ph¸p trao ®æi th«ng tin (WWW, FTP-truyÒn file, EMAIL- th ®iÖn tö, TELNET, RLOGIN - lµm viÖc víi m¸y tÝnh tõ xa, NEW-th¶o luËn, GOPHER - t×m kiÕm file,...), trong ®ã dÞch vô WWW (World Wide Web) lµ mét trong nh÷ng dÞch vô ®îc dïng phæ biÕn nhÊt.
LuËn v¨n ®i s©u nghiªn cøu t×m hiÓu dÞch vô World Wide Web trªn m¹ng, vµ ®Æc biÖt lµ t×m hiÓu ph¬ng ph¸p khai th¸c c¬ së d÷ liÖu th«ng qua Web.
LuËn v¨n ®îc chia thµnh 2 phÇn:
PhÇn I:
Víi tiªu ®Ò Tæng quan vÒ hÖ thèng Web, phÇn nµy cña luËn v¨n tr×nh bµy nh÷ng kh¸i niÖm c¬ b¶n vÒ Web, Web Client-Server. Trong phÇn nµy còng tr×nh bµy nh÷ng néi dung c¬ b¶n nhÊt vÒ ng«n ng÷ HTML ®Ó x©y dùng trang Web.
PhÇn II: Tr×nh bµy vÒ c¸c c¸ch thøc truy nhËp c¬ së d÷ liÖu b»ng ch¬ng tr×nh ngoµi, ®Æc biÖt lµ qua giao diÖn CGI (Common Gateway Interface), c¸c kh¸i niÖm c¬ b¶n trong CGI. Trong phÇn nµy luËn v¨n ®a ra hai ph¬ng thøc truy nhËp CSDL b»ng CGI:
Truy nhËp kh«ng hç trî c¸c c«ng cô cña hÖ qu¶n trÞ c¬ së d÷ liÖu. Theo d¹ng nµy, luËn v¨n chó träng vµo c¸ch thøc trao ®æi th«ng tin theo dßng vµo chuÈn vµ dßng ra chuÈn, luËn v¨n ph©n tÝch sù ho¹t ®éng cña ch¬ng tr×nh CGI ®îc viÕt trªn C ®Ó thÊy râ c¸ch thøc trao ®æi nµy.
Truy nhËp nhê c«ng cô hç trî cña hÖ qu¶n trÞ CSDL mµ ë ®©y lµ hÖ qu¶n trÞ CSDL ORACLE. LuËn v¨n tr×nh bµy ho¹t ®éng Oracle Web Server víi c¸c thuéc tÝnh më réng so víi c¸c Web Server th«ng thêng, c¸c më réng nµy t¹o ®iÒu kiÖn cho ngêi ph¸t triÓn x©y dùng c¸c øng dông víi giao diÖn Web. Cuèi cïng lµ x©y dùng mét ch¬ng tr×nh vÝ dô minh ho¹ viÖc Oracle Web Server thao t¸c víi c¬ së d÷ liÖu.
Em xin ch©n thµnh c¶m ¬n toµn thÓ c¸c thµy c« gi¸o Khoa CNTT, ®Æc biÖt c¸c thµy gi¸o tæ bé m«n C¸c hÖ thèng th«ng tin, thµy Hµ Quang Thuþ. Vµ c¸c thµy TrÇn Xu©n ThuËn, Lª Huy (Liªn HiÖp Khoa häc vµ s¶n xuÊt PhÇn MÒm - CSE) vµ toµn thÓ c¸c anh chÞ ë CSE; nh÷ng ngêi ®· cung cÊp tµi liÖu, chØnh söa vµ ®ãng gãp nh÷ng ý kiÕn quý gi¸ trong qu¸ tr×nh x©y dùng luËn v¨n nµy.
Hµ Néi ngµy 26-5-98
Tiªu ThÞ Dù
K39KTT-CNTT
PhÇn I Tæng quan vÒ Web
ch¬ng I HÖ thèng Web
Nh÷ng kh¸i niÖm c¬ b¶n vÒ hÖ thèng Web
Nguån gèc cña World Wide Web
N¨m 1990 nhãm nghiªn cøu do Tim Berners-Lee ®øng ®Çu lµm viÖc t¹i phßng thÝ nghiÖm vËt lý h¹t nh©n ch©u ¢u ®· ®a ra mét bé giao thøc míi phôc vô cho viÖc truyÒn vµ nhËn c¸c tÖp siªu v¨n b¶n (Hypertext) trªn m¹ng Internet. Bé giao thøc nµy chñ yÕu dùa trªn ng«n ng÷ HTML (Hypertext Markup Language) ®Ó liªn kÕt, trao ®æi th«ng tin vµ gäi t¾t lµ HTTP (Hypertext Tranfer Protocol). Ngay sau ®ã, c¸c tæ chøc vµ tËp ®oµn kh¸c ®· c«ng nhËn bé giao thøc HTTP, vµ thµnh lËp mét tæ chøc gäi lµ W3 Consortium ®Ó tiÕp tôc ph¸t triÓn vµ chuÈn ho¸ bé giao thøc nµy. W3 Consortium ®· ph¸t triÓn thªm c¸c tÝnh n¨ng míi cña HTML vµ c¸c møc (Level) còng nh c¸c chuÈn ®Ó thùc hiÖn c¸c phÇn mÒm ®i kÌm. Tõ ®ã thuËt ng÷ Worl Wide Web ra ®êi vµ ®îc c«ng bè réng r·i trªn Internet.
Kh¸i niÖm vÒ Web
World Wide Web (viÕt t¾t lµ WWW hay cßn ®îc gäi lµ Web) cã cÊu tróc thÓ hiÖn nh mét trang v¨n b¶n vµ ®å ho¹ cã c¸c siªu liªn kÕt (Hyperlinks) mµ theo ®ã ta cã thÓ lùa chän. Nh÷ng siªu liªn kÕt nµy sÏ ®a chóng ta ®Õn c¸c tµi nguyªn kh¸c trªn m¹ng víi ®Çy ®ñ tÝnh n¨ng ®éc ®¸o nh c¸c h×nh ¶nh, ®å ho¹, ©m thanh. . .Web gióp con ngêi thùc hiÖn nh÷ng c«ng viÖc trªn m¹ng mét c¸ch dÔ dµng.
Siªu liªn kÕt
Siªu liªn kÕt lµ mét tõ hay mét côm tõ trªn trang Web dïng ®Ó “chØ” ®Õn mét trang Web kh¸c. Khi nhÊn chuét lªn mét siªu liªn kÕt, tr×nh duyÖt sÏ ®a chóng ta ®Õn mét trang Web kh¸c. V× nh÷ng liªn kÕt siªu v¨n b¶n nµy thËt sù lµ tÝnh n¨ng ®Æc trng cña Worl Wide Web, nªn c¸c trang Web thêng ®îc biÕt ®Õn nh lµ nh÷ng tµi liÖu siªu v¨n b¶n.
§Þa chØ cña Web
§Þa chØ cña Web ®îc biÕt ®Õn nhê c¸c URL (Uniform Resource Locator -Bé ®Þnh vÞ tµi nguyªn ®ång nhÊt). NÕu c¸c trang Web ®îc ghi lång vµo s©u hÕt môc nµy ®Õn môc kh¸c th× ®Þa chØ cña Web sÏ hÕt søc dµi. Nã thêng ®îc coi lµ mét URL kh«ng bao giê chÊm døt (liªn kÕt víi nhiÒu liªn kÕt). Mét URL thêng cã cÊu tróc nh sau:
Protocol://host.domain/directory/file.name
+ Protocol: Nghi thøc TCP/IP sö dông ®Ó t×m tµi nguyªn (HTTP hay FTP)
+ Host.domain : Tªn m¸y chñ n¬i trang Web lu tró
+ Directory : Th môc chñ chøa tµi liÖu ®ã
+ File.name : Tªn chÝnh x¸c cña tËp tµi liÖu ®ã
URL ®îc sö dông tÊt c¶ c¸c dÞch vô th«ng tin trªn m¹ng. Mçi mét trang Web cã mét URL duy nhÊt ®Ó x¸c ®Þnh trang Web ®ã. Qua ph©n tÝch cÊu tróc cña mét URL, ta thÊy r»ng th«ng qua URL cã thÓ truy cËp bÊt cø mét tµi nguyªn th«ng tin d÷ liÖu cña bÊt kú dÞch vô nµo cña bÊt kú m¸y tÝnh nµo trªn m¹ng.
M« h×nh Web Client- Server
Web Browser
Web Browser lµ c«ng cô truy xuÊt d÷ liÖu trªn m¹ng, lµ phÇn mÒm giao diÖn trùc tiÕp víi ngêi sö dông. Nã cã kh¶ n¨ng yªu cÇu th«ng tin tõ Web Server vµ c¸c dÞch vô kh¸c nhau theo nhu cÇu cña ngêi sö dông. Sau ®ã Web Browser sÏ ®îi th«ng tin tõ Web Server hay c¸c m¸y phôc vô cña c¸c dÞch vô th«ng tin kh¸c vµ hiÓn thÞ th«ng tin cho ngêi sö dông. Th«ng tin hiÓn thÞ cã thÓ ®îc lu tr÷ trªn nh÷ng trang Web riªng, ®îc t¹o ra tríc khi cã yªu cÇu (®ã lµ trang Web tÜnh) hoÆc th«ng tin cã thÓ ®îc t¹o ra tõ trong c¸c c¬ së d÷ liÖu dùa trªn yªu cÇu (®ã lµ trang Web ®éng). Cã nhiÒu Web Browser kh¸c nhau nh:
+ Mosaic
+ Netscape Navigator
+ Microsoft Internet Explorer
+ Lynx trong Unix
PhÇn lín c¸c Browser hç trî mét danh s¸ch c¸c ®Æc trng víi kh¶ n¨ng xö lý file nh files HTML, Files GIF, Files JPEG. NhiÒu Browser míi cßn cã kh¶ n¨ng hç trî mét danh s¸ch c¸c ®Æc trng më réng cã kh¶ n¨ng xö lý Java vµ JavaScpript. NhiÒu Browser lµm viÖc víi file phô thuéc vµo Header kiÓu MIME (Multipurpose Internet Mail Extentions). C¸c Browser nh thÕ cã thÓ tù xö lý files, vµ yªu cÇu sù gióp ®ì cña nh÷ng øng dông, hay ®¬n gi¶n lµ Save file vµo ®Üa.
Web Server
Web Server lµ mét phÇn mÒm ®ãng vai trß phôc vô. Khi ®îc khëi ®éng, nã ®îc n¹p vµo bé nhí vµ ®îi c¸c yªu cÇu tõ n¬i kh¸c ®Õn. C¸c yªu cÇu cã thÓ ®Õn tõ mét ngêi sö dông dïng phÇn mÒm Web Browser hoÆc còng cã thÓ ®Õn tõ mét Web Server kh¸c. Trong c¶ hai trêng hîp trªn ®èi tîng ®a ra yªu cÇu gäi lµ kh¸ch hµng (Client). C¸c yªu cÇu ®èi víi Web Server thêng lµ ®ßi hái vÒ mét t liÖu hay th«ng tin nµo ®ã. Khi nhËn ®îc yªu cÇu, nã ph©n tÝch ®Ó x¸c ®Þnh xem t liÖu, th«ng tin kh¸ch hµng muèn lµ g×. Sau ®ã nã t×m lÊy t liÖu vµ göi cho kh¸ch hµng. ViÖc phôc vô phÇn lín nhê dÞch vô HTTP truy nhËp ®Õn tµi liÖu HTML hay nh÷ng øng dông cña CGI. Còng cã thÓ phôc vô th«ng qua c¸c giao thøc kh¸c nh: FTP, Gopher hay dÞch vô Telnet (minh ho¹ h×nh 1.1)
NhiÖm vô chÝnh cña Web Server lµ:
+ “TiÕp nhËn“ yªu cÇu ®a vµo tõ trªn m¹ng
+ Cung cÊp nh÷ng trang HTML
+ Cung cÊp vµ ph¸t triÓn øng dông trªn Web
+ T×m kiÕm file tõ mét “Vitual root”
+ Phôc vô yªu cÇu file tíi Client
Web Client-Server
World Wide Web ®îc x©y dùng vµ ho¹t ®éng theo m« h×nh Client/Server. C¸c Client dïng mét phÇn mÒm gäi lµ Web Browser. Web Browser tiÕp nhËn th«ng tin yªu cÇu tõ ngêi dïng sau ®ã göi c¸c yªu cÇu tíi m¸y Server xö lý.
Web Server còng lµ mét phÇn mÒm ch¹y trªn c¸c m¸y phôc vô, nhËn Request thùc hiÖn theo yªu cÇu råi tr¶ th«ng tin (Response) cho ngêi sö dông.
Giao thøc HTTP (Hypertext Transfer Protocol)
HTTP lµ giao thøc truyÒn th«ng mµ Client sö dông ®Ó liªn l¹c víi Server. Mäi giao thøc truyÒn th«ng ®Òu ®ßi hái mét ch¬ng tr×nh t¬ng øng trªn Server ®Ó “nghe” yªu cÇu ®a vµo tõ trªn m¹ng. VÝ dô FPT cã mét FPT daemon, Telnet cã mét Telnet daemon gièng nh HTTP còng cã mét HTTP daemon. Bëi vËy khi m¸y Server ho¹t ®éng ®· cã nh÷ng daemon ch¹y trªn Server, vÝ dô nh Web Listener trªn Oracle Web Server còng lµ mét Server daemon t¬ng øng.
HTTP còng t¬ng tù nh Telnet. Tuy nhiªn cã mét sù kh¸c biÖt quan träng gi÷a HTTP vµ Telnet ®ã lµ HTTP kh«ng duy tr× kÕt nèi víi Server. Sau khi Server phôc vô mét file tíi Client, nã chÊm døt sù kÕt nèi víi tr¹m cuèi. Trong thêi gian sau ®ã nÕu Client yªu cÇu mét file tõ Server, th× khi mét trang th«ng tin míi ®îc t¶i xuèng th× mét kÕt nèi míi míi ®îc x©y dùng víi Server.
Kh«ng cã mét tr¹ng th¸i th«ng tin nµo cã thÓ duy tr× l©u dµi gi÷a Client vµ Server vµ yªu cÇu kÕt nèi. NÕu th«ng tin ®· yªu cÇu mµ Client ph¶i b¶o vÖ nã hay n¾m gi÷ nã, th«ng tin yªu cÇu ®ã tr×nh diÖn l¹i víi kÕt nèi sau.
Ph©n lo¹i Web
Theo quan ®iÓm cña Martin Rennhackkawp ( T¹p chÝ DBMS 5/97) cho r»ng cã hÓ ph©n lo¹i Web thµnh 3 lo¹i lµ: Trang Web tÜnh, Form page vµ trang Web ®éng.
Trang Web tÜnh (Static Web Pages):
Trang Web tÜnh lµ tµi liÖu ®îc ph©n ph¸t rÊt ®¬n gi¶n tõ hÖ thèng file cña Server. PhÇn mÒm Web Server sÏ tiÕn hµnh t×m kiÕm vµ x¸c ®Þnh ®óng vÞ trÝ file ®ã vµ göi tr¶ kÕt qu¶ cho Client (Browser). ViÖc sö dông trang Web tÜnh cã nh÷ng u, nhîc ®iÓm râ rµng.
+ ¦u ®iÓm: Khi c¬ së d÷ liÖu lµ nhá th× viÖc ph©n ph¸t d÷ liÖu cã hiÖu qu¶, Server cã thÓ ®¸p øng nhu cÇu cña Client mét c¸ch nhanh chãng. KiÓu Web tÜnh sÏ lµ tèt nhÊt ®Ó sö dông khi th«ng tin cã s½n trªn æ ®Üa cøng, vµ kh«ng thay ®æi.
+ Nhîc ®iÓm: Kh«ng n¨ng ®éng, kh«ng ®¸p øng nhu cÇu th«ng tin v× vËy kh«ng ®¸p øng ®îc nh÷ng yªu cÇu phøc t¹p cña ngêi sö dông.
Qu¸ tr×nh ph©n ph¸t tµi liÖu tÜnh ®îc thÓ hiÖn nh sau:
Form Pages
VÒ mÆt b¶n chÊt Form Pages lµ trêng hîp ®Æc biÖt cña trang Web tÜnh. Nã cho phÐp nhËn ®îc ph¶n håi tõ phÝa ngêi sö dông th«ng qua form. Form pages ®îc x©y dùng dùa trªn ng«n ng÷ HTML.
VÝ dô
VÝ dô vÒ form pages
PhiÕu ®iÒu tra
Xin mêi ngµi tr¶ lêi vµi c©u hái sau
Tªn cña b¹n:
Nam
N÷
Gia ®×nh:
Thµnh Phè:
Hµ néi <INPUT Name="city" TYPE="Checkbox VALUE="Hµ néi"
H¶i Phßng <INPUT Name="city" TYPE="Checkbox VALUE="H¶i Phßng"
Hå ChÝ MinhOther
C¸m ¥n B¹n ®· tr¶ lêi c©u hái
Sau khi tr×nh duyÖt Web thùc hiÖn, nhËn ®îc kÕt qu¶ nh sau:
Trong vÝ dô trªn, c¸c thµnh phÇn vµ ®îc dïng ®Ó bè trÝ c¸c trêng ký tù vµ nhËn sè liÖu. NhiÒu bé duyÖt quy íc dïng c¸c phÝm Tab vµ Shift ®Ó chuyÓn dÞch gi÷a c¸c trêng vµ ENTER ®Ó SUBMIT, nghÜa lµ kÕt thóc qu¸ tr×nh vµo sè liÖu vµ göi ®i. Nót SUBMIT dïng ®Ó E_Mail hay göi th¼ng néi dung cña b¶ng ®Õn Server, tuú thuéc vµo thuéc tÝnh ACTION. Nót RESET tr¶ c¸c trêng nhËn vÒ gi¸ trÞ ban ®Çu.
Web ®éng:
Trang Web lo¹i nµy cã thÓ thao t¸c víi c¬ së d÷ liÖu ®Ó ®¸p øng nhu cÇu phøc t¹p cña ngêi sö dông. Ch¼ng h¹n nh khi ngêi sö dông cÇn cã nh÷ng th«ng tin thay ®æi hµng ngµy th× viÖc ph¶i thao t¸c víi c¬ së d÷ liÖu bªn ngoµi lµ cÇn thiÕt. Cã nhiÒu c¸ch thøc cã thÓ truy nhËp ®Õn c¬ së d÷ liÖu bªn ngoµi vÝ nh ISAPI (Internet Server Application Programming Interface), ASP (Active Server Pages) hay JAVA vµ ®iÓn h×nh lµ dïng ch¬ng tr×nh ch¹y ngoµi CGI (Common GateWay Interface -SÏ ®îc tr×nh bµy kü phÇn sau). C¬ chÕ ho¹t ®éng ®îc thÓ hiÖn nh h×nh vÏ1.3:
Khi Client göi yªu cÇu tíi Server th«ng qua CGI, ch¬ng tr×nh CGI sÏ mãc nèi víi C¬ së d÷ liÖu bªn ngoµi, thùc hiÖn ch¬ng tr×nh sau ®ã göi tr¶ kÕt qu¶ díi d¹ng HTML vµ hiÓn thÞ trªn trang Web.
Nhng viÖc thùc hiÖn ch¬ng tr×nh CGI cã vÊn ®Ò vÒ thêi gian tøc lµ viÖc t¶i files sÏ diÔn ra chËm bëi vËy ngêi ta ®a ra gi¶i ph¸p kh¾c phôc lµ dïng phÇn mÒm trung gian (MiddleWare) - ODBC (Open Database Connectivity).
ODBC lµ mét ch¬ng tr×nh øng dông chuÈn ®Ó truy nhËp d÷ liÖu. PhÇn mÒm ODBC cã chøc n¨ng kÕt nèi víi c¬ së d÷ liÖu (Connection Managenal), vµ do chØ hiÓu ®îc c©u lÖnh SQL nªn nã cßn gi÷ vai trß th«ng dÞch. ViÖc dïng ODBC còng cã nh÷ng u nhîc ®iÓm nh sau:
+ ¦u ®iÓm: kh¾c phôc ®îc t×nh tr¹ng qu¸ t¶i trªn Web Server vµ cã thÓ lµm viÖc ®îc víi nhiÒu c¬ së d÷ liÖu cïng mét thêi ®iÓm, tèt ®èi víi m¹ng LAN. Vµ do ®îc ra ®êi kh¸ sím vµ quen thuéc nªn c¸c c«ng ty s¶n xuÊt m¸y tÜnh còng chó ý hç trî ODBC .
+ Nhîc ®iÓm: Ph¶i cµi ®Æt tõng ODBC Driver t¬ng øng víi phÇn mÒm CSDL trªn Clients nÕu muèn ch¹y CSDL ®ã. MÆt kh¸c ODBC l¹i kh«ng phï hîp ®èi víi m¹ng diÖn réng.
H×nh I.4 thÓ hiÖn c¸ch thøc ODBC trong ®ã:
+ Odbc Manager : Göi ®i c¸c cuéc gäi tõ nh÷ng øng dông kh¸c ®Õn nh÷ng thiÕt bÞ chuÈn .
+ Driver: Xö lý c¸c chøc n¨ng ODBC, tr×nh diÖn c©u lÖnh SQL tíi BDMS x¸c ®Þnh, vµ tr¶ l¹i kÕt qu¶.
+ DBMSs: Xö lý yªu cÇu tõ ODBC Driver vµ tr¶ l¹i kÕt qu¶.
Ch¬ng II ng«n ng÷ siªu v¨n b¶n (HTML)
Kh¸i niÖm chung
Ng«n ng÷ siªu v¨n b¶n HTML (Hypertext Markup Langure) lµ mét c¸ch ®a vµo v¨n b¶n nhiÒu thuéc tÝnh cÇn thiÕt ®Ó cã thÓ truyÒn th«ng qu¶ng b¸ trªn m¹ng toµn cÇu WWW (World Wide Web). HTML cho phÐp ®a h×nh ¶nh ®å ho¹ vµo v¨n b¶n, vµ t¹o nh÷ng tµi liÖu siªu v¨n b¶n cã kh¶ n¨ng ®èi tho¹i t¬ng t¸c víi ngêi dïng.
HTML chñ yÕu xoay quanh kh¸i niÖm “tiªu thøc” (tag) lµm nÒn t¶ng. §Ó t¹o mét siªu v¨n b¶n, ta cã thÓ dïng bÊt cø mét ch¬ng tr×nh so¹n th¶o nµo vÝ dô nh NC, EDIT cña DOS, NotePad hay Write cña Windows 3.x, WordPad cña Win95. . . Vµ chØ cÇn n¾m v÷ng c¸c tiªu thøc cña HTML, vµ chó ý khi cÊt lªn ®Üa th× cÇn lu díi d¹ng TXT. Song cã mét h¹n chÕ lµ d¹ng v¨n b¶n khi so¹n víi khi xem sau nµy trªn WWW lµ kh«ng gièng nhau.
Ngµy nay do sù ph¸t triÓn cña m¹ng toµn cÇu, HTML còng ngµy cµng trë nªn phøc t¹p vµ hoµn thiÖn h¬n ®Ó ®¸p øng ®îc nh÷ng yªu cÇu míi n¶y sinh trong qu¸ tr×nh ph¸t triÓn ®ã (nh ©m thanh, h×nh ¶nh ®éng, hay ®iÒu khiÓn tõ xa, hiÖn thùc ¶o. . . ). Ngêi ta gäi ®ã lµ nh÷ng phiªn b¶n cña HTML vµ ®¸nh sè ®Ó biÓu thÞ.
Mét trong nh÷ng ®iÓm m¹nh cña HTML lµ mét v¨n b¶n bÊt kú nÕu tu©n thñ tiªu chuÈn HTML ®Òu cã thÓ hiÖn ®îc lªn mµn h×nh hay in ra, tãm l¹i lµ hiÓu ®îc, bëi bÊt kú lo¹i phÇn mÒm hay m¸y tÝnh nµo mµ ngêi dïng cã, kh«ng ph©n biÖt Netscape trªn Windows, hay Lynx trªn Unix, thËm chÝ cho ngêi khiÕm thÞ b»ng phÇn mÒm ®Æc biÖt.
§Æc t¶ vÒ HTML
Toµn bé c¸c thÎ cña HTML ®îc chia ra thµnh 7 nhãm thµnh phÇn nh sau vµ ®îc gäi lµ tõ kho¸ :
Tõ kho¸ x¸c lËp cÊu tróc tµi liÖu
Tõ kho¸ t¹o ®iÓm mãc nèi
Tõ kho¸ ®Þnh d¹ng khèi
Tõ kho¸ khai b¸o danh s¸ch
Tõ kho¸ khai b¸o lo¹i th«ng tin vµ ®Þnh d¹ng mÉu ch÷
Tõ kho¸ ®a h×nh ¶nh vµo tµi liÖu
Tõ kho¸ lËp mÉu biÓu b¶ng
C¸c tõ kho¸ ®Þnh d¹ng cÊu tróc tµi liÖu
C¸c thµnh phÇn x¸c ®Þnh cÊu tróc tµi liÖu lµ b¾t buéc ph¶i cã trong tµi liÖu HTML. Ngoµi phÇn më ®Çu x¸c ®Þnh tªn vµ mét sè thuéc tÝnh ®Ó ph©n biÖt gi÷a c¸c tµi liÖu, chØ cã nh÷ng thµnh phÇn sau lµ b¾t buéc ph¶i cã trong mét tµi liÖu HTML ®Ó phï hîp víi chuÈn. Sau ®©y lµ cÊu tróc c¬ së cña trang Web ®îc x©y dùng b»ng HTML Nh÷ng tõ kho¸ thiÕt yÕu ®ã vµ tr×nh tù xuÊt hiÖn cña chóng ®îc s¬ bé liÖt kª nh sau:
. . .
. . . . . . . .
. . .
CÆp tõ kho¸ nµy gióp nhËn d¹ng tµi liÖu cã chøa c¸c thµnh phÇn tu©n thñ theo chuÈn vÒ ng«n ng÷ HTML
. . .
Thµnh phÇn më ®Çu cña mét tµi liÖu HTML chøa c¸c th«ng tin vÒ tµi liÖu ®ã. Trong ®ã cÆp tõ kho¸ ®Æt tiªu ®Ò còng lµ b¾t buéc:
Giíi thiÖu chung vÒ trang Web
CÆp tõ kho¸ vµ kh«ng trùc tiÕp ¶nh hëng ®Õn c¸ch thÓ hiÖn tµi liÖu khi ta xem bé duyÖt.
C¸c thµnh phÇn sau ®©y liªn quan tíi thµnh phÇn më ®Çu tµi liÖu tuy kh«ng trùc tiÕp “t¹o d¸ng“ nhng nÕu sö dông l¹i cung cÊp nh÷ng th«ng tin quan träng ®èi víi bé duyÖt:
Cho phÐp khai b¸o ®Þa chØ c¬ së cña tµi liÖu
Cho phÐp t×m kiÕm trong tµi liÖu theo tõ kho¸
ChØ ra mèi quan hÖ gi÷a c¸c tµi liÖu
T¹o tªn gäi ®ång nhÊt ho¸ tµi liÖu
Cung cÊp th«ng tin h÷u Ých cho chÕ ®é Server/Client
ThÎ . . .:
PhÇn th©n cña trang Web chøa tÊt c¶ c¸c thµnh phÇn kh¸c còng nh néi dung tõ lêi v¨n ®Õn h×nh ¶nh cÊu thµnh mét tµi liÖu, song kh«ng dÝnh d¸ng g× ®Õn sù bµi trÝ cña tµi liÖu ®ã.
§iÓm mãc nèi . . .
§¸nh dÊu côm tõ chØ ®Õn mét kÕt nèi siªu v¨n b¶n (Hypertext link) mµ khi trá tíi nã, bé duyÖt sÏ dÉn d¾t ®Õn mét tµi liÖu hoÆc mét ®o¹n v¨n kh¸c. Cã nhiÒu thuéc tÝnh nhng hoÆc NAME hoÆc HREF lµ thuéc tÝnh b¾t buéc.
HREF
NÕu cã thuéc tÝnh HREF, côm tõ ®øng gi÷a sÏ trë thµnh siªu v¨n b¶n, nghÜa lµ nã trá ®Õn mét v¨n b¶n kh¸c chø kh«ng chØ mang néi dung thuÇn tuý. Khi chän vµo côm tõ ®ã, mét tµi liÖu kh¸c hoÆc mét ®o¹n tµi liÖu kh¸c trong cïng tµi liÖu ®ang xem mµ ®Þa chØ ®îc chØ ra bëi thuéc tÝnh HREF sÏ ®îc hiÖn lªn.
NAME
Dïng ®Ó ®Æt tªn cho ®iÓm mãc nèi vµ v× vËy ph¶i lµ duy nhÊt trong néi bé tµi liÖu hiÖn thêi mÆc dï tªn cã thÓ ®Æt mét c¸ch tuú ý
VÝ dô:
Cµ phª lµ mét vÝ dô vÒ lo¹i c©y
Tõ tµi liÖu kh¸c cã thÓ tham chiÕu tíi b»ng c¸ch ®Æt tªn gäi vµo sau ®Þa chØ, ng¨n c¸ch b»ng mét dÊu #.
TITLE
Thuéc tÝnh nµy chØ cã ý nghÜa th«ng b¸o vµ ®îc dïng ®Ó ®Æt ®Çu ®Ò cho tµi liÖu mµ ®Þa chØ ®ã do HREF chØ ra. §Çu ®Ò cÇn ph¶i lµ duy nhÊt ®èi víi tµi liÖu ®Ých.
Bé duyÖt cã thÓ hiÖn ®Çu ®Ò cña tµi liÖu tríc khi lÊy vÒ, ch¼ng h¹n nh mét ghi chó nhá bªn lÒ hay trong mét khung nhá khi con trá chuét di qua ®iÓm mãc nèi (cã thÓ lµ mét côm tõ hay mét h×nh ¶nh), hay khi ®ang t¶i tµi liÖu ra (nhÊt lµ khi qua ®êng truyÒn cã tèc ®é kh«ng cao l¾m).
Cã nh÷ng tµi liÖu kh«ng cã ®Çu ®Ò nh ®å ho¹, thùc ®¬n Gopher,. . .
C¸c tõ kho¸ ®Þnh d¹ng khèi
C¸c thµnh phÇn ®Þnh d¹ng khèi dïng ®Ó ®Þnh d¹ng c¶ mét ®o¹n v¨n b¶n vµ ph¶i n»m trong phÇn th©n cña tµi liÖu. Cã nh÷ng cÆp tõ kho¸ quan träng sau ®©y:
. . . §Þnh d¹ng phÇn ®Þa chØ
. . .(n lµ ch÷ sè tõ 1 ®Õn 6) §Þnh d¹ng s¸u møc tiªu ®Ò.
HTML cã 6 møc tiªu ®Ò bao hµm kiÓu ph«ng ch÷, c¸ch ®o¹n tríc sau còng nh kho¶ng trèng cÇn thiÕt ®Ó thÓ hiÖn tiªu ®Ò. Møc cao nhÊt lµ , kÕ ®Õn lµ...cho ®Õn .
C¸ch thÓ hiÖn phô thuéc vµo bé duyÖt, nhng th«ng thêng th×:
... Ch÷ ®Ëm, cì lín, c¨n gi÷a. Mét, hai dßng c¸ch trªn vµ díi.
... Ch÷ ®Ëm, cì lín c¨n lÒ tr¸i. Mét, hai dßng c¸ch trªn vµ díi.
... Ch÷ nghiªng, cì lín, c¨n lÒ tr¸i, h¬i lïi vµo trong. Mét hay hai dßng c¸ch trªn vµ díi.
... Ch÷ ®Ëm, cì thêng lïi vµo trong nhiÒu h¬n H3. Mét dßng c¸ch trªn vµ díi.
... Ch÷ nghiªng, cì thêng, lïi vµo trong nhiÒu h¬n H4. Mét dßng c¸ch trªn.
... Ch÷ ®Ëm, cì thêng, lïi vµo trong nhiÒu h¬n H5. Mét dßng c¸ch trªn.
§êng ph©n c¸ch ngang tµi liÖu
. . . Giíi h¹n mét Paragraph
ChØ lµ giíi h¹n mét Paragraph. C¸ch bµi trÝ do c¸c thµnh phÇn kh¸c t¹o thµnh. Thêng cã kho¶ng trèng kho¶ng mét dßng hay nöa dßng tríc paragraph, trõ khi n»m trong phÇn ®Þa chØ. Mét sè bé duyÖt thÓ hiÖn dßng ®Çu cña Paragraph tôt vµo .
BÎ dßng
B¾t buéc xuèng dßng t¹i vÞ trÝ gÆp tõ kho¸ nµy. Dßng míi ®îc c¨n lÒ nh dßng ®îc kÎ tù ®éng khi dßng ®ã qu¸ dµi.
. . . §o¹n v¨n b¶n ®· ®Þnh d¹ng s½n
Giíi h¹n ®o¹n v¨n b¶n ®· ®îc ®Þnh d¹ng s½n cÇn ®îc thÓ hiÖn b»ng ph«ng ch÷ cã ®é réng ký tù kh«ng ®æi. NÕu kh«ng cã thuéc tÝnh WIDTH ®i cïng th× bÒ réng mÆc ®Þnh lµ 80 ký tù/dßng. BÒ réng 40,80,132 ®îc thÓ hiÖn tèi u, cßn c¸c bÒ réng kh¸c cã thÓ ®îc lµm trßn trong thµnh phÇn ®Þnh d¹ng tríc:
DÊu xuèng dßng sÏ cã ý nghÜa chuyÓn sang dßng míi (chø kh«ng cßn lµ dÊu c¸ch)
kh«ng dïng nÕu cã sÏ ®îc coi nh lµ xuèng dßng.
§îc phÐp dïng c¸c thµnh phÇn liªn kÕt vµ nhÊn m¹nh.
Kh«ng ®îc chøa c¸c thµnh phÇn ®Þnh d¹ng paragraph (tiªu ®Ò, ®Þa chØ).
Ký tù TAB ph¶i hiÓu lµ sè dÊu c¸ch nhá nhÊt sao cho ®Õn ký tù tiÕp theo ë vÞ trÝ lµ béi cña 8. Tuy nhiªn kh«ng nªn dïng.
VÝ dô:
NguyÔn v¨n Trçi - Cö nh©n.
NguyÔn viÕt Xu©n - Kü s.
. . . TrÝch dÉn nguån tµi liÖu kh¸c
Dïng ®Ó trÝch dÉn mét ®o¹n v¨n b¶n,thêng ®îc thÓ hiÖn b»ng ch÷ nghiªng cã c¨n lÒ lïi vµo trong vµ thêng cã mét dßng trèng ë trªn vµ díi.
C¸c tõ kho¸ khai b¸o danh s¸ch
HTML hç trî nhiÒu kiÓu lo¹i danh s¸ch, tÊt c¶ ®Òu cã thÓ lång vµo nhau vµ chØ nªn dïng trong phÇn th©n cña tµi liÖu (. . .).
. . . Danh s¸ch ®Þnh nghÜa
Dïng ®Ó lËp danh s¸ch c¸c thuËt ng÷ vµ ®Þnh nghÜa t¬ng øng
vÝ dô
MÌo Lµ mét lo¹i ®éng vËt
Hoa Ngäc Lan Lµ mét loµi thùc vËt
Trong vÝ dô trªn th×:
ChØ tªn thuËt ng÷
ChØ phÇn ®Þnh nghÜa. Cã thÓ cã thªm thuéc tÝnh COMPACT ®Ó chØ dÉn thªm lµ xÕp vµ theo tõng cÆp. Lóc ®ã sÏ ph¶i viÕt lµ vµ tiÕp theo lµ .
. . . Danh s¸ch kiÓu th môc
Danh s¸ch c¸c phÇn tö mµ trong ®ã mçi phÇn tö dµi ®Õn kho¶ng 20 ký tù. Sau b¾t buéc ph¶i lµ (List Item)
. . . Danh s¸ch kiÓu thùc ®¬n
Danh s¸ch c¸c lùa chän trong mét thùc ®¬n. Sau ph¶i lµ .
vÝ dô
Con mÌo
Con mÌo con
. . . Danh s¸ch cã s¾p xÕp
Danh s¸ch cã s¾p xÕp theo tr×nh tù hay møc ®é quan träng. Sau ph¶i lµ vµ cã thÓ thªm thuéc tÝnh COMPACT .
. . . Danh s¸ch kh«ng cã s¾p xÕp
Gièng nhng danh s¸ch kh«ng ®îc s½p xÕp
C¸c tõ kho¸ khai b¸o lo¹i th«ng tin vµ ®Þnh d¹ng mÉu ch÷
Khai b¸o lo¹i th«ng tin
Cã nh÷ng cÆp tõ kho¸ tuy kh¸c nhau nhng l¹i thÓ hiÖn nh nhau, cô thÓ cã nh÷ng cÆp tõ kho¸ khai b¸o lo¹i th«ng tin nh sau:
. . . TrÝch dÉn
. . . VÝ dô vÒ m· lÖnh
. . . NhÊn m¹nh
. . . Ký tù do ngêi dïng gâ vµo trªn bµn phÝm
. . . Nguyªn v¨n
. . . RÊt nhÊn m¹nh
. . . ChØ tªn biÕn hay tham sè
§Þnh d¹ng mÉu ký tù
. . . ThÓ hiÖn ch÷ ®Ëm
. . . Ch÷ nghiªng
. . . Ch÷ ®¸nh trªn m¸y ch÷
Lång h×nh ¶nh
Dïng ®Ó lång h×nh ¶nh vµo tµi liÖu. Kh«ng dïng ®Ó chÌn siªu v¨n b¶n kh¸c. Cã thÓ thªm nh÷ng thuéc tÝnh sau
ALIGN
C¨n lÒ trªn (TOP), gi÷a (MIDLE) hay díi (BOTTOM), c¸c ký tù v¨n b¶n ®èi víi h×nh ¶nh.
ALT
Dïng trong trêng hîp cã thÓ bé duyÖt kh«ng hiÓn thÞ ®îc h×nh ¶nh ph¶i hiÖn dßng v¨n b¶n thay thÕ.
ISMAP
H×nh ¶nh cã d¹ng mét b¶n ®å, nghÜa lµ cã thÓ chøa c¸c vïng ®îc “¸nh x¹” ®Õn nh÷ng URL vµ khi bÊm vµo nh÷ng vÞ trÝ kh¸c nhau trªn h×nh vÏ ®a ®Õn tµi liÖu kh¸c nhau.
SRC
§©y lµ thuéc t×nh b¾t buéc, víi gÝa trÞ lµ mét URL cña h×nh ¶nh ®îc lång vµo. Có ph¸p còng nh ë HREF trong thµnh phÇn liªn kÕt.
C¸c tõ khãa lËp mÉu biÓu b¶ng (Forms)
Tõ HTML 2.0 trë ®i, c¸c tõ kho¸ lËp b¶ng biÓu ®îc ®a vµo cho phÐp nhËn ®îc ph¶n håi tõ phÝa ngêi dïng, b»ng c¸ch ®Æt nh÷ng trêng input (vµo sè liÖu) bªn c¹nh nh÷ng thµnh phÇn kh¸c, cho phÐp cã ®é linh ho¹t rÊt ®¸ng kÓ trong thiÕt kÕ b¶ng biÓu:
. . . Giíi h¹n mét b¶ng
Cã thÓ cã nhiÒu b¶ng trong mét tµi liÖu song thµnh phÇn nµy kh«ng ®îc phÐp lång nhau. Thuéc tÝnh ACTION lµ mét URL cho biÕt n¬i mµ néi dung cña b¶ng ®îc göi ®Õn ®Ó xö lý, mÆc ®Þnh lµ URL cña tµi liÖu hiÖn thêi nÕu kh«ng cã thuéc tÝnh nµy ®i kÌm. Ph¬ng thøc göi tuú thuéc vµo giao thøc truy nhËp mµ URL chØ ra còng nh gi¸ trÞ cña c¸c thuéc tÝnh METHOD vµ ENCTYPE. Mét c¸ch tæng thÓ:
METHOD dïng ®Ó chän ph¬ng thøc
ENCTYPE ®Þnh d¹ng khu«n cña sè liÖu trong trêng hîp giao thøc kh«ng bao hµm lu«n chÝnh khu«n d¹ng Êy.
NÕu thuéc tÝnh ACTION lµ mét URL víi giao thøc HTTP, thuéc tÝnh METHOD ph¶i chøa mét ph¬ng thøc HTTP theo tiªu chuÈn IETF. MÆc ®Þnh cña METHOD lµ GET. MÆc dï trong nhiÒu trêng hîp, ph¬ng thøc POST ®îc a chuéng h¬n. Víi ph¬ng thøc POST, thuéc tÝnh ENCTYPE lµ mét kiÓu MINE cho biÕt khu«n d¹ng cña sè liÖu ®a ®Õn, mÆc ®Þnh lµ application/x/_www_form_rlencoded (tªn øng dông/x_www_b¶ng m· ho¸ theo run length). Trong bÊt kú t×nh huèng nµo th× vÒ mÆt logic, néi dung cña b¶ng m· sÏ gåm nh÷ng cÆp tªn gäi/gi¸ trÞ. Tªn gäi thêng trïng víi gi¸ trÞ cña thuéc tÝnh NAME.
. . . Giíi h¹n mét trêng Input
Dïng ®Ó khai b¸o mét trêng mµ ngêi dïng ®a sè liÖu vµo. Gåm cã c¸c thuéc tÝnh nh sau:
ALIGN: C¸c gi¸ trÞ cho phÐp hoµn toµn gièng nh thuéc tÝnh ALIGN cña thµnh phÇn
CHECKED:
§Ó chØ mét nót chän kiÓu ®¸nh dÊu hay kiÓu nót Radio.
MAXLENGTH:
Sè ký tù tèi ®a cã thÓ gâ vµo mét trêng (mÆc ®Þnh lµ v« h¹n), ®îc phÐp lín h¬n SIZE vµ khi ®ã trêng nµy sÏ ®îc cuén.
NAME:
Thuéc tÝnh hay dïng nhÊt ®Ó chØ tªn gäi tîng trng, dïng khi truyÒn ®i néi dung.
SIZE
Khai b¸o kÝch thíc hay ®é chÝnh x¸c cña mét trêng tuú theo kiÓu cña nã. VÝ dô ®Ó khai b¸o mét trêng réng 24 ký tù th× ta khai b¸o nh sau:
INPUT TYPE =text SIZE=”24”
SRC
Mét URL cña h×nh ¶nh, chØ dïng víi TYPE=IMAGE trong HTML 2.0.
TYPE
Khai b¸o kiÓu sè liÖu ( ngÇm ®Þnh lµ ký tù), víi c¸c kiÓu sau:
+ CHECKBOX
Dïng cho kiÓu logic Bool víi gi¸ trÞ mÆc ®Þnh lµ ‘on’
+ HIDDEN
Kh«ng hiÖn lªn ®èi víi ngêi sö dông nhng vÉn ®îc göi cïng víi néi dung cña b¶ng.
+ IMAGE
Mét trêng mang h×nh ¶nh mµ khi bÊm vµo ®ã, b¶ng sÏ ®îc tr×nh vµ c¸c to¹ ®é cña ®iÓm chän tÝnh b»ng pixel tÝnh tõ gãc tr¸i trªn cña ¶nh cïng c¸c cÆp tªn /trÞ kh¸c, trong ®ã to¹ ®é x th× tªn cña trêng cã thªm .x, to¹ ®é y thªm .y vµo. Mäi thuéc tÝnh VALUE ®Òu bÞ bá qua. Cßn chÝnh h×nh ¶nh th× do thuéc tÝnh SRC chØ ra.
+ PASSWORD:
Còng gièng nh TEXT cã ®iÒu ký tù kh«ng hiÖn lªn khi ngêi dïng gâ vµo (nh khi vµo mËt khÈu).
+ RADIO:
§Ó nhËn mét gi¸ trÞ trong sè c¸c gi¸ trÞ cã thÓ cã, vµ ®ßi hái ph¶i cã VALUE ®i kÌm.
+ RESET: Lµ nót mµ khi bÊm vµo sÏ ®Æt c¸c trêng Input vÒ c¸c gi¸ trÞ ban ®Çu. Nh·n cña nót ®îc khai b¸o nh ë nót SUBMIT.
+ SUBMIT: Lµ nót mµ khi bÊm vµo sÏ kÕt thóc qu¸ tr×nh vµo sè liÖu vµ b¶ng sÏ ®îc göi ®i. Thuéc tÝnh VALUE cho phÐp g¸n nh·n cho nót. NÕu thuéc tÝnh NAME còng cã th× mét cÆp tªn/trÞ còng ®îc göi ®i.
+ TEXT: Dïng ®Ó vµo mét dßng kÝ tù, thêng ®i cïng víi SIZE vµ MAXLENGTH.
+ VALUE: Dïng ®Ó khai b¸o gi¸ trÞ ban ®Çu (còng cã nghÜa lµ mÆc ®Þnh) cña trêng kÝ tù hay sè, hoÆc gi¸ trÞ tr¶ l¹i khi ®îc chän ®èi víi trêng logic Bool. Thuéc tÝnh nµy b¾t buéc ®èi víi trêng thuéc tÝnh RADIO.
. . . Mét thµnh phÇn lùa chän th× bao gåm nhiÒu tuú chän.
Cho phÐp ngêi dïng chän tõ mét danh s¸ch mµ tõng phÇn tö ®îc khai b¸o b»ng víi c¸c thuéc tÝnh sau:
MULTIPLE: Cho phÐp chän nhiÒu phÇn tö cïng mét lóc ().
NAME: Khai b¸o tªn biÕn t¬ng øng
SIZE: Khai b¸o sè phÇn tö hiÖn lªn, nÕu >1 th× hép ®èi tho¹i sÏ lµ mét danh s¸ch.
Thµnh phÇn SELECT thêng ®îc thÓ hiÖn díi d¹ng mét danh s¸ch kÐo xuèng hoÆc kÐo lªn. NÕu kh«ng cã OPTION nµo cã SELECTD th× phÇn tö ®Çu tiªn trong danh s¸ch sÏ mÆc ®Þnh lµ ®îc chän.
VÝ dô
To¸n
Lý
Ho¸
Mét tuú chän trong mét thµnh phÇn lùa chän
ChØ xuÊt hiÖn trong mét thµnh phÇn . . ., biÓu thÞ mét tuú chän vµ cã thÓ cã c¸c thuéc tÝnh sau:
DISABLED: ChØ ra r»ng cha dïng ®Õn trong b¶ng nµy mµ sÏ dïng trong t¬ng lai.
SELECTED: ChØ ra r»ng tuú chän nµy lµ mÆc ®Þnh.
VALUE: NÕu cã sÏ cho biÕt gi¸ trÞ tr¶ l¹i nÕu ®îc chän, mÆc ®Þnh lµ lµ néi dung cña chÝnh thµnh phÇn nµy (nh÷ng g× mµ chÝnh ngêi sö dông nh×n thÊy).
. . . Mét trêng nhËn sè liÖu nhiÒu dßng,
cho phÐp ngêi dïng nhËp nhiÒu h¬n mét dßng ký tù
VÝ dô
Liªn hiÖp s¶n xuÊt phÇn mÒm (CSE)
Sè 21-Lý Nam §Õ-Hµ Néi
§o¹n n»m gi÷a vµ ®îc dïng lµm gi¸ trÞ ban ®Çu cho trêng nµy. lµ b¾t buéc kÓ c¶ khi gi¸ trÞ ban ®Çu ®ã kh«ng cã. Khi chuyÓn ®i c¸c dßng cÇn kÕt thóc b»ng CR/CL. C¸c thuéc tÝnh ROWS vµ COLS ®Ó khai b¸o kÝch thíc dßng vµ cét cña cöa sæ sè liÖu, nÕu sè liÖu nhiÒu h¬n th× bé duyÖt sÏ cho phÐp cuén (scroll).
LËp b¶ng
... Giíi h¹n b¶ng
MÆc ®Þnh b¶ng kh«ng cã ®êng bao nÕu kh«ng ®i víi thuéc tÝnh BORDER. Cã c¸c thuéc tÝnh sau:
§Ó ®Þnh nghÜa mét b¶ng cã ®êng bao, kh«ng lµm ¶nh hëng ®Õn ®é réng cña b¶ng.
BORDER=”gi¸ trÞ” cã c¸c gi¸ trÞ x¸c ®Þnh (0,1,2...) tîng trng cho c¸c mµu cña ®êng bao nÕu cho gi¸ trÞ =0 th× ®êng bao cã mµu gièng mµu mµn h×nh. Cho phÐp ®iÒu chØnh ®é dµy cña ®êng bao ngoµi ®Ëm h¬n ®êng bao trong ®Ó dÔ nh×n h¬n.
CELLSPACING= C¸c gi¸ trÞ lµ kho¶ng c¸ch gi÷a c¸c «
CELLPADING= C¸c gi¸ trÞ x¸c ®Þnh kho¶ng c¸ch gi÷a néi dung cña « vµ ®êng bao.
VÝ dô
cho ta b¶ng Compact nhÊt cã thÓ cã (dµnh tÊt c¶ cho néi dung).
WIDTH=
NÕu ®i cïng víi TABLE thuéc tÝnh nµy cã ý nghÜa m« t¶ chiÒu réng mong muèn cña b¶ng. Thêng th× bé duyÖt tù tÝnh to¸n sao cho b¶ng ®îc bè trÝ hîp lý. Dïng thuéc tÝnh nµy b¾t buéc bé duyÖt ph¶i cè g¾ng lµm sao xÕp ®îc c¸c « vµo b¶ng cã ®é réng mong muèn ®ã.
NÕu ®i cïng víi hay l¹i cã ý nghÜa t¬ng tù ®èi víi mét «.
. . . §Þnh nghÜa mét hµng
Khai b¸o mét hµng cña b¶ng, víi thuéc tÝnh ALIGHN vµ VALIGN ®Ó chØ ra c¸ch c¨n lÒ cña néi dung trong c¸c « cña hµng hiÖn thêi.
ROWSPAN: Cho biÕt « hiÖn thêi chiÕm mÊy hµng cña b¶ng, mÆc ®Þnh lµ 1.
ALIGN
NÕu n»m trong nã cã ý nghÜa ®èi víi ®Çu ®Ò cña b¶ng n»m trªn hay n»m díi, cã gi¸ trÞ hoÆc TOP hoÆc BOTTOM ngÇm ®Þnh lµ TOP. NÕu n»m trong , , hay cã thÓ cã c¸c gi¸ trÞ LEFT, CENTER hay RIGHT vµ ®iÒu khiÓn viÖc ®Æt néi dung cña « c¨n bªn tr¸i hay vµo gi÷a, hay ë « bªn ph¶i.
VALIGN
N»m trong , hay cã thÓ cã c¸c gi¸ trÞ TOP, MIDDLE, BOTTOM hay BASELINE ®Ó ®iÒu khiÓn viÖc ®Æt néi dung cña « lªn trªn, (vµo gi÷a theo chiÒu däc) hay xuèng díi vµ còng cã thÓ tÊt c¶ lµ c¸c « trong hµng cïng c¨n theo mét ®êng n»m nghang
. . . §Þnh nghÜa mét «
Cã nghÜa lµ d÷ liÖu b¶ng (Table Data), chØ ®îc xuÊt hiÖn trong cïng mét hµng cña b¶ng. Mçi hµng kh«ng nhÊt thiÕt ph¶i cã cïng sè « v× dßng ng¾n h¬n sÏ ®îc ch¾p thªn « rçng vµo bªn ph¶i. Mçi « chØ ®îc chøa c¸c thµnh phÇn b×nh thêng kh¸c n»m trong phÇn th©n cña tµi liÖu. C¸c thuéc t×nh mÆc ®Þnh lµ:
ALIGN=left vµ VALIGN=middle.
C¸c mÆc ®Þnh nµy cã thÓ thay ®æi bëi c¸c thuéc tÝnh trong vµ l¹i thay ®æi tiÕp bëi thuéc tÝnh ALIGN hoÆc VALIGN khai b¸o riªng cho tõng «. B×nh thêng mÆc ®Þnh th× néi dung sÏ ®îc “bÎ dßng” cho võa vµo khæ réng cña tõng «. Dïng thuéc tÝnh NOWRAP trong ®Ó cÊm viÖc ®ã. . . . còng cã thÓ chøa c¸c thuéc tÝnh NOWRAP, COLSPAN vµ ROWSPAN.
+ NOWRAP: Khi dïng thuéc tÝnh nµy ®Ò phßng « qu¸ réng.
+ COLSPAN: Cã thÓ xuÊt hiÖn trong bÊt kú « nµo ( hay) vµ chØ ra r»ng « ®ã chiÕm mÊy « cña b¶ng, mÆc ®Þnh lµ 1.
. . . ¤ chøa tiªu ®Ò
Cã nghÜa lµ tiªu ®Ò cña b¶ng (Table Header), c¸c « nµy t¬ng tù nh c¸c « b×nh thêng kh¸c ®îc ®Þnh nghÜa b»ng , cã ®iÒu ph«ng ch÷ lµ ®Ëm vµ cã thuéc tÝnh mÆc ®Þnh lµ ALIGN=Center.
. . . còng cã thÓ chøa thuéc tÝnh VALIGN, NOWRAP, COLSPAN vµ ROWSPAN.
. . . §Çu ®Ò cña b¶ng.
§Æt ®Çu ®Ò cho mét b¶ng nªn ph¶i n»m trong mét cÆp song kh«ng ®îc n»m trong hµng hay cét. Thuéc tÝnh mÆc ®Þnh lµ ALIGN=Top (®Çu ®Ò ®Æt ë ®Çu b¶ng), song cã thÓ ®Æt lµ ALIGN =Bottom (cuèi b¶ng). §Çu ®Ò cã thÓ chøa bÊt kú thµnh phÇn nµo mét « cã thÓ chøa vµ lu«n ®îc c¨n lÒ vµo gi÷a b¶ng (theo chiÒu ngang) vµ cã thÓ còng cã bÎ dßng cho phï hîp.
VÝ dô ta cã thÓ t¹o ®îc b¶ng gåm 2 dßng 3 cét nh sau
A B C
D E F
§Æc biÖt « rçng th× kh«ng cã ®êng bao, muèn « rçng cã ®êng bao ph¶i dïng dÊu c¸ch kh«ng bÎ dßng. Cã thÓ lîi dông ROWSPAN vµ COLSPAN ®Ó t¹o b¶ng cã « chång chÐo lªn nhau nhng kh«ng lªn l¹m dông.
III C¸c u nhîc ®iÓm cña HTML
._.¦u ®iÓm: Ng«n ng÷ HTML cã u ®iÓm so víi nhiÒu lo¹i ng«n ng÷ kh¸c ®ã lµ:
+ DÔ ®äc, dÔ hiÓu, dÔ sö dông
+ Kh«ng phô thuéc vµo HÖ ®iÒu hµnh
+ Gi¶m th«ng lîng ®êng truyÒn
+ Liªn kÕt nhiÒu d¹ng th«ng tin vµ c¸c dÞch vô th«ng tin kh¸c trªn M¹ng
Nhîc ®iÓm: Ng«n ng÷ HTML cã mét sè nhîc ®iÓm c¬ b¶n sau
+ Lµ ng«n ng÷ th«ng dÞch, do ®ã nã sÏ gi¶m tèc ®é thùc hiÖn cña c¸c øng dông trªn Web
+ Khã ®¶m b¶o vÒ an toµn vµ b¶o mËt
+ Kh«ng hç trî ®a ng«n ng÷.
PhÇn ii
truy nhËp c¬ së d÷ liÖu theo giao diÖn CGI
ch¬ng i Giíi thiÖu ch¬ng tr×nh CGI
Nh chóng ta ®· biÕt søc m¹nh cña HTML lµ cã kh¶ n¨ng s¾p xÕp mét sè lîng th«ng tin rÊt lín c¸c tËp tin vµo trong cïng mét trang. C¸c tËp tin xuÊt hiÖn trªn mét trang vÒ mÆt vËt lý cã thÓ lu tró trong cïng mét m¸y tÝnh díi d¹ng lµ chÝnh trang ®ã, hoÆc lu tró ë mét n¬i bÊt kú nµo kh¸c trªn WWW. HTML chØ chuyªn lµm nhiÖm vô lµ tham chiÕu vµo c¸c tËp tin nµy b»ng c¸ch b¸o cho Browser biÕt vÞ trÝ chÝnh x¸c cña chóng, nªn Browser cã thÓ t×m ®Õn chóng mét c¸ch nhanh chãng khi cÇn. Nhng chóng cã nhîc ®iÓm lµ chØ h¹n chÕ trong ph¹m vi néi dung tÜnh, nghÜa lµ nh÷ng th«ng tin mµ Web hiÓn thÞ ®îc chØ lµ th«ng tin kh«ng thay ®æi vÝ dô nh c¸c bµi b¸o, ®¬n thuèc. . . , chóng kh«ng thÓ cung cÊp c¸c lÖnh m¸y ®Æc biÖt ®Ó m¸y lµm theo, vµ ®Æc biÖt lµ chóng kh«ng thÓ khai th¸c c¬ së d÷ liÖu bªn ngoµi v× vËy kh«ng ®¸p øng ®îc nhu cÇu phøc t¹p cña USER. §Ó ®¸p øng ®îc nhu cÇu ®ã ngêi ta ®a ra gi¶i ph¸p lµ viÕt mét ch¬ng tr×nh cã kh¶ n¨ng mét mÆt giao tiÕp víi Web Server, mÆt kh¸c cã thÓ thao t¸c ®îc víi c¬ së d÷ liÖu. Mét ch¬ng tr×nh nh vËy cã thÓ gäi lµ “cæng” (gateway) gi÷a Web Server vµ C¬ së d÷ liÖu. Ch¬ng tr×nh ch¹y ngoµi ®îc cµi ®Æt lªn hÖ thèng mµy chñ ®ã chÝnh lµ CGI (common gateway interface).
C¸c kh¸i niÖm c¬ b¶n
Tµi liÖu tÜnh (Static Doccuments)
§ã lµ kiÓu tµi liÖu ®îc ph©n ph¸t rÊt ®¬n gi¶n tõ hÖ thèng file cña Server. Sau ®ã PhÇn mÒm Web Server sÏ tiÕn hµnh t×m kiÕm vµ x¸c ®Þnh ®óng vÞ trÝ file ®ã trªn æ cøng, më nã mét c¸ch trùc tiÕp vµ tr¶ l¹i kÕt qu¶ cho Client. Tµi liÖu tÜnh sÏ lµ tèt nhÊt ®Ó sö dông khi th«ng tin cã s½n trªn æ ®Üa cøng, vµ kh«ng thay ®æi. Khi c¬ së d÷ liÖu lµ nhá, c¸ch tiÕp cËn nµy cã hiÖu qu¶ râ rµng, Server cã thÓ ®¸p øng nhu cÇu cña Client mét c¸ch nhanh chãng. Tuy nhiªn nã cã h¹n chÕ lµ kh«ng n¨ng ®éng, kh«ng ®¸p øng nhu cÇu th«ng tin v× vËy kh«ng ®¸p øng ®îc nh÷ng yªu cÇu phøc t¹p cña ngêi sö dông. Qu¸ tr×nh ph©n ph¸t tµi liÖu tÜnh ®îc thÓ hiÖn ë h×nh 1.1.
Tµi liÖu ®éng (Dynamic doccuments - Doccument on the fly)
Kh«ng gièng nh tµi liÖu tÜnh, tµi liÖu ®éng ®îc sinh ra trong qu¸ tr×nh ®ang thùc hiÖn “on the fly”. Trong trêng hîp tµi liÖu tÜnh, cã thÓ ®äc d÷ liÖu tõ mét file ®ang tån t¹i th× nãi chung tµi liÖu ®éng cã thÓ kh«ng cÇn quan t©m ®Õn ®iÒu ®ã. VÝ dô, tµi liÖu ®éng cã thÓ ®îc sinh ra tõ c¬ së d÷ liÖu, tõ c¸c ph¬ng tiÖn khoa häc nµo ®ã nh hÖ thèng kiÓm tra ©m lîng. . . C¸c tµi liÖu mµ thêng xuyªn thay ®æi vµ göi tÝn hiÖu mét c¸ch trùc tiÕp ®Õn client nh chóng ®· ®îc t¹o, vµ sÏ ®îc lu tr÷ trong hÖ thèng file. Trong trêng hîp kh¸c, chóng cßn cã thÓ trïng khíp víi néi dung ®· ®îc hoµ trén, víi mét sè lîng néi dung ®· ®îc sinh ra khi trang ®îc ph©n ph¸t mét c¸ch thËt sù.
Sù kh¸c nhau c¬ b¶n gi÷a tµi liÖu tÜnh vµ tµi liÖu ®éng ®ã lµ tµi liÖu tÜnh th× ®îc ph©n ph¸t tõ hÖ thèng file trªn ®Üa cøng cßn tµi liÖu ®éng th× ®îc sinh ra mét c¸ch t¹m thêi ngay trong thêi gian lµm viÖc “on the fly”.
Mét c¸ch tiÕp cËn tíi tµi liÖu ®éng: C«ng nghÖ Server-side include
HÖ thèng HTML cã thÓ dÔ dµng t¹o ra nh÷ng liªn kÕt bÊt kú víi tµi liÖu nµo ®ã. Tuy nhiªn thi tho¶ng chóng còng mong muèn cã ®îc mét tµi liÖu HTML lín ®îc tËp hîp tõ nh÷ng tµi liÖu nhá h¬n. §Æt ra vÊn ®Ò lµ t¹i sao mét tµi liÖu Web l¹i kh«ng thÓ ®¬n gi¶n chØ lµ gåm nh÷ng tµi liÖu ®îc tham chiÕu ®Õn mét b¶n vËt lý chøa ®ùng b¶n copy thø hai. Hµng lo¹t nh÷ng version cña HTML kh«ng cho phÐp ®iÒu nµy. Tuy nhiªn kh«ng cã g× c¶n trë ®îc Web Server thùc hiÖn ®îc ®iÒu ®ã miÔn lµ c¸c version cña HTML bao gåm c¸c thµnh phÇn ®· ®îc cho phÐp. Khi Browser cã yªu cÇu tµi liÖu ®èi víi Server, Server ph©n tÝch tµi liÖu vµ nh×n mét c¸ch trùc tiÕp vµo tµi liÖu chÝnh (main doccument), sau ®ã Server sÏ truy cËp ®Õn tËp tµi liÖu (include document) vµ l¾p r¸p tµi liÖu hoµn chØnh råi ph¸t tÝn hiÖu hoµn thµnh nhiÖm vô vµ göi kÕt qu¶ tíi Browser. C¸ch tiÕp cËn nµy gäi lµ Server site include ®îc thÓ hiÖn b»ng s¬ ®å sau (h×nh 1.2).
2. Server ph©n tÝch tµi liÖu vµ t×m kiÕm
CGI (Common Gateway Interface)
CGI lµ g×:
CGI lµ mét chuÈn dïng ®Ó ph¸t triÓn c¸c øng dông ®éng lªn trang Web vµ sö dông giao thøc truyÒn siªu v¨n b¶n (HTTP) ®a ra c¸c néi dung ®éng nµy tíi Browser. Vµ chuÈn nµy ®· hç trî Web Server thao t¸c víi c¬ së d÷ liÖu. Tuy nhiªn, CGI rÊt khã sö dông vµ kh¶ n¨ng ph©n phèi t¬ng t¸c rÊt bÞ h¹n chÕ, CGI chñ yÕu ®îc dïng ®Ó truy nhËp th«ng tin th«ng qua c¸c Form. Khi ngêi sö dông nhËp th«ng tin vµo tõ bµn phÝm, Web Browser göi c¸c th«ng tin ®ã cho Web Server. Web Server nhËn c¸c th«ng tin ®ã gäi thùc hiÖn mét ng÷ tr×nh Gateway t¬ng øng vµ chuyÓn c¸c th«ng tin nµy cho Gateway th«ng qua chuÈn CGI. Khi ®ã c¸c th«ng tin tõ ngêi sö dông ®îc chuyÓn tíi Gateway th«ng qua c¸c biÕn m«i trêng hoÆc dßng nhËp chuÈn. Sau ®ã Gateway ph©n tÝch, xö lý c¸c th«ng tin ®ã vµ thùc hiÖn c«ng viÖc cña m×nh. Cuèi cïng Gateway tr¶ vÒ c¸c th«ng tin cho Web Server ®Ó Web Server chuyÓn c¸c th«ng tin nµy tíi ngêi sö dông hoÆc lu gi÷ d÷ liÖu trong c¬ së d÷ liÖu. Gateway cã thÓ lµ mét ng÷ tr×nh Script hay mét ch¬ng tr×nh ®îc viÕt b»ng C/C++,Perl. .
Môc tiªu cña CGI
ChuÈn CGI ®îc ph¸t triÓn bëi NCSA (National Center for Supercomputing Applications) ®Ó ®¸p øng nhu cÇu cña ngêi sö dông b»ng c¸ch ch¹y mét ch¬ng tr×nh ngoµi phï hîp. Trong phÇn thªm vµo mét giao diÖn chuÈn phï hîp, CGI t×m kiÕm vµ suy luËn ®Ó cã thÓ ®¶m b¶o cho thao t¸c nhËp vµo cña user, th«ng thêng Form giao diÖn sÏ kh«ng mÊt v× nhê giíi h¹n cña hÖ ®iÒu hµnh Server. ChuÈn CGI cè g¾ng cung cÊp mét ch¬ng tr×nh ch¹y ngoµi víi th«ng tin cã kh¶ n¨ng vÒ Server vµ Browser. Trong phÇn thªm vµo ta cã thÓ biÕt thªm th«ng tin cña user. ChuÈn CGI cè g¾ng ph¸t triÓn mét øng dông CGI thËt ®¬n gi¶n vµ dÔ sö dông. PhÇn lín Standard CGI ®Òu ®¹t ®îc nh÷ng thµnh c«ng .Râ rµng c¸ch tiÕp cËn nµy lµ hiÖu qu¶, ®Æc biÖt lµ khi kÕt hîp tèt víi hÖ ®iÒu hµnh, tÝnh dÔ dµng thÝch nghi vµ ®¬n gi¶n cña CGI Standard lµm nã trë nªn phæ biÕn ®Ó sö dông. Nhng ®«i khi nã còng cã nh÷ng h¹n chÕ nhÊt ®Þnh ®ã lµ khi d÷ liÖu ®a vµo qu¸ phøc t¹p, ®Æc biÖt lµ khi c«ng viÖc ®ßi hái chÝnh x¸c vµ tØ mØ. Tuy nhiªn nã vÉn rÊt phæ biÕn vµ ph¸t triÓn víi nhiÒu c«ng cô cã s½n, ®Æc biÖt lµ tèt ®èi víi C& PERN (CGI programming in C & PERN).
C¸ch thøc ho¹t ®éng cña mét ch¬ng tr×nh CGI
PhÇn lín tµi liÖu ®éng ®Òu tu©n thñ theo luËt phèi hîp cña Server. §iÒu ®ã cã nghÜa lµ tµi liÖu ®éng ®îc sinh ra mét c¸ch toµn vÑn bëi mét ch¬ng tr×nh ngoµi ®îc thùc hiÖn bëi yªu cÇu cña User. Ch¬ng tr×nh ngoµi sÏ tiÕp nhËn tham sè tõ v¨n b¶n nh mét ®Çu vµo chuÈn vµ ®a ra mét kÕt qu¶ nh mét ®Çu ra chuÈn. Khi Browser yªu cÇu tµi liÖu tõ phÝa Server, Server nhËn ®îc tÝn hiÖu yªu cÇu vµ thùc hiÖn CGI, Ch¬ng tr×nh CGI sÏ sö dông nh÷ng tµi nguyªn bªn ngoµi nh ®Üa files, c¬ së d÷ liÖu vµ c¸c ph¬ng tiÖn khoa häc. Sau khi thùc hiÖn xong ch¬ng tr×nh CGI ®a ra mét tµi liÖu Web míi. Server ph¸t tÝn hiÖu hoµn thµnh nhiÖm vô vµ göi tr¶ tµi liÖu cho Browser (Minh ho¹ h×nh1.3).
ChuÈn CGI
CGI Standanrd cã môc ®Ých x¸c ®Þnh s½n mét giao diÖn gi÷a Web Server vµ ch¬ng tr×nh. Nh÷ng ®iÒu cÇn cho mét chuÈn ®ã lµ tµi liÖu ®éng b¶n th©n nã tù sinh ra trang Web khi ch¹y mét ch¬ng tr×nh. Khi Server thùc hiÖn mét ch¬ng tr×nh ®Ó tho¶ m·n yªu cÇu tõ Browser. Browser sau khi ®a ra yªu cÇu sö dông HTTP. Server sÏ tr¶ lêi b»ng c¸ch hoÆc cÊp ph¸t mét tµi liÖu, hoÆc m· tr¹ng th¸i, hoÆc ®a ra mét URL kh¸c ®îc chÊp nhËn tõ kÕt qu¶ cña mét giao thøc, V× vËy ch¬ng tr×nh CGI thêng xuyªn cÇn ®Õn HTTP mét c¸ch trùc tiÕp. §©y lµ mét khÝa c¹nh chÝnh yÕu vµ quan träng trong CGI programming. Yªu cÇu cña HTTP cã thÓ cã vµi kiÓu kh¸c nhau, ngêi ta gäi lµ ph¬ng ph¸p. Cã hai ph¬ng ph¸p chÝnh ®ã lµ ph¬ng ph¸p POST vµ GET.
Ph¬ng ph¸p GET
Ph¬ng ph¸p ®îc sö dông khi cã mét yªu cÇu mét tµi liÖu cña ngêi sö dông. NÕu ®· yªu cÇu mét URL cho ch¬ng tr×nh CGI th× ch¬ng tr×nh CGI sÏ sinh ra mét tµi liÖu míi, mét m· lçi. Ch¬ng tr×nh CGI cã thÓ ®¸nh dÊu nh÷ng t×nh huèng ®· thùc hiÖn vµo biÕn m«i trêng REQUEST_METHOD chøa ®ùng vµo x©u GET. Th«ng tin yªu cÇu cña ngêi dïng sÏ ®îc lu tr÷ trong biÕn m«i trêng QUERY_STRING.
Ph¬ng ph¸p POST
Ph¬ng ph¸p POST ®îc sö dông ®Ó truyÒn th«ng tin tõ Browser göi ®Õn Server. Trong phÇn lín c¸c trêng hîp th«ng tin yªu cÇu ®îc lu vµo biÕn trong Standard Input. Ch¬ng tr×nh CGI sÏ ®äc c¸c th«ng tin tr×nh diÖn tõ Standard input vµ thùc hiÖn ch¬ng tr×nh. Trong trêng hîp nµy biÕn m«i trêng REQUEST-METHOD sÏ ®îc ®Æt vµo x©u POST. Sau khi thùc hiÖn nhiÖm vô ch¬ng tr×nh ®îc gäi sÏ sinh ra mét tµi liÖu míi, mét m· lçi hay mét URL kh¸c.
Sù kh¸c nhau gi÷a ph¬ng ph¸p GET & POST
Sù kh¸c biÖt c¬ b¶n gi÷a hai ph¬ng ph¸p nµy lµ ë c¸ch truyÒn d÷ liÖu d¹ng Form tíi ch¬ng tr×nh CGI. NÕu sö dông ph¬ng ph¸p GET, th× khi Client yªu cÇu tíi Server x©u QUERY sÏ ®îc ghi tiÕp vµo URL cña ch¬ng tr×nh. ¦u ®iÓm cña ph¬ng ph¸p nµy lµ ë chç cã thÓ truy nhËp ch¬ng tr×nh mµ kh«ng cÇn Form. Cßn víi ph¬ng ph¸p POST th× ®é daig d÷ liÖu sÏ kh«ng bÞ h¹n chÕ nh dïng ph¬ng ph¸p GET
Dßng vµo chuÈn (Standard Input)
Mét ch¬ng tr×nh ch¹y ngoµi chuÈn cã d¹ng d÷ liÖu sÏ ®îc lu tr÷ trong biÕn m«i trêng hay th«ng qua mét dßng lÖnh. C¸ch tiÕp cËn nh vËy cã thÓ gÆp rñi ro víi mét hÖ ®iÒu hµnh lµ khi sè lîng th«ng tin qu¸ lín. Tuy nhiªn chuÈn CGI chÊp nhËn c¸ch tiÕp cËn nµy, nã cho phÐp vµ cæ vò c¸ch tiÕp cËn nµy víi mét kiÓu d÷ liÖu th«ng qua ch¬ng tr×nh ch¹y ngoµi nh Standard input, cã nghÜa lµ d÷ liÖu cã thÓ truy nhËp th«ng qua Standard I/O. Trong ng«n ng÷ lËp tr×nh C gäi lµ c¸c hµm. Khi kh«ng cã d÷ liÖu ®îc tr×nh diÖn tõ ngêi sö dông hay mét form d÷ liÖu ®· ®îc tr×nh diÖn víi ph¬ng ph¸p GET, th× chuÈn vµo còng kh«ng chøa ®ùng th«ng tin.
Tuy nhiªn khi d÷ liÖu ®îc göi vµo theo ph¬ng ph¸p POST, th× d÷ liÖu sÏ ®îc xuÊt hiÖn trong dßng chuÈn vµo (Standart Input)
Dßng ra chuÈn (CGI Standard Output)
Khi ch¹y mét ch¬ng tr×nh CGI thêng mong ®îi ®a ra kÕt qu¶ lµ mét trong ba ®èi tîng nh sau:
Mét tµi liÖu Web ®óng ®¾n: trong trêng hîp nµy cÇn quan t©m ®Õn kiÓu d÷ liÖu sÏ ®a ra.
Mét m· lçi: NÕu mét lçi xuÊt hiÖn ch¬ng tr×nh CGI cã thÓ göi ra mét m· tr¹ng th¸i cña tµi liÖu, hoÆc mét th«ng b¸o lçi cho ngêi dïng
§a ra mét URL kh¸c: NÕu Server kh«ng trùc tiÕp gi¶i quyÕt ®îc yªu cÇu cña ngêi sö dông th× nã sÏ cung cÊp mét ®Þa chØ URL kh¸c.
ch¬ng ii x©y dùng mét ch¬ng tr×nh CGI trªn C
TruyÒn sè liÖu cho CGI gateway
Web Server cã thÓ chuyÓn th«ng tin cho gateway b»ng tham sè dßng lÖnh, b»ng biÕn m«i trêng hoÆc b»ng dßng nhËp chuÈn.
TruyÒn th«ng tin qua tham sè dßng lÖnh
Ta xem xÐt trêng hîp Web Server truyÒn th«ng tin cho c¸c gateway qua tham sè dßng lÖnh (command line argument). Trong trêng hîp nµy, Web Server t¸ch chuçi tham sè dßng lÖnh thµnh c¸c tõ riªng rÏ vµ ph©n c¸ch chóng b»ng c¸c dÊu céng (“+”) råi ®Æt chóng vµo tham sè dßng lÖnh. Tõ ®Çu tiªn cña chuçi yªu cÇu sÏ trë thµnh phÇn tö ®Çu tiªn ngay sau tªn cña ng÷ tr×nh. Chó ý lµ nÕu chuçi yªu cÇu dµi qu¸ ®é dµi quy ®Þnh cña tham sè dßng lÖnh th× Server sÏ kh«ng ghi gi¸ trÞ g× vµo tham sè dßng lÖnh mµ biÕn m«i trêng QUERY_STRING sÏ chøa gi¸ trÞ ®ã.
TruyÒn th«ng tin qua biÕn m«i trêng
Víi trêng hîp nµy, c¸c th«ng tin vÒ yªu cÇu cña Web Browser ®îc Web Server truyÒn cho ng÷ tr×nh CGI th«ng qua c¸c biÕn m«i trêng cña Server. Ph¬ng thøc truy nhËp c¸c biÕn m«i trêng cña ng÷ tr×nh CGI phô thuéc vµo ng«n ng÷ viÕt nªn ng÷ tr×nh ®ã. NÕu mét biÕn m«i trêng kh«ng thÝch hîp trong ng÷ c¶nh yªu cÇu th× nã sÏ kh«ng ®îc thiÕt lËp hoÆc sÏ ®îc ®Æt gi¸ trÞ lµ mét chuçi rçng. C¸c biÕn m«i trêng sau ®©y ®îc dïng ®Ó chuyÓn th«ng tin cho Web Server tíi c¸c ng÷ tr×nh CGI:
QUERY_STRING: NÕu URL cã chøa chuçi yªu cÇu, biÕn nµy sÏ chøa gi¸ trÞ cña chuçi yªu cÇu ®ã.
CONTENT_TYPE: BiÕn nµy sÏ ®îc x¸c ®Þnh trong trêng hîp nÕu d÷ liÖu ®îc g¾n vµo yªu cÇu vµ chuyÓn qua dßng nhËp chuÈn. Nã chØ ra kiÓu MINE cña d÷ liÖu ®ã.
CONTENT_LENGTH: Chøa gi¸ trÞ ®é dµi cña d÷ liÖu nÕu d÷ liÖu ®îc g¾n vµo yªu cÇu vµ chuyÓn qua dßng nhËp chuÈn cña GateWay.
PATH_INFO: Chøa bÊt kú d÷ liÖu nµo ®îc thªm vµo URL
PATH_TRANSLATED: Chøa th«ng tin ®îc ®a ra trong biÕn PATH_INFO nhng ®îc thªm vµo ®Çu ®êng dÉn tíi gèc cña Web Server.
GATEWAY_INTERFACE: X¸c ®Þnh sè hiÖu phiªn b¶n cña CGI mµ Web Server ®ang sö dông, díi d¹ng tªn/sè hiÖu.
REMOTE_USER: tªn cña ngêi sö dông cña m¸y göi yªu cÇu.
REMOTE_ADDR: §Þa chØ Internet cña m¸y göi yªu cÇu .
REMOTE_HOST: Tªn cña m¸y göi yªu cÇu
AUTH_TYPE: ph¬ng thøc x¸c thùc ®îc Server sö dông .
REQUERY_METHOD: ChØ ra ph¬ng thøc yªu cÇu. Víi c¸c yªu cÇu HTTP, c¸c ph¬ng thøc yªu cÇu cã thÓ lµ GET, POST, PUT vµ HEAD.
SCRIPT_NAME: Chøa ®êng dÉn ¶o tíi ng÷ tr×nh ®ang ®îc thi hµnh.
SERVER_NAME: Tªn hoÆc ®Þa chØ IP cña Web Server.
SERVER_PORT: Sè hiÖu cña cæng nhËn ®îc yªu cÇu .
SERVER_PROTOCOL: Tªn vµ sè hiÖu phiªn b¶n cña giao thøc yªu cÇu
SERVER_SOFTWARE: X¸c ®Þnh phÇn mÒm Server ®ang dïng.
Nh÷ng th«ng tin trong phÇn ®Çu cña HTTP còng cã thÓ ®îc Web Server chuyÓn cho ng÷ tr×nh qua nh÷ng biÕn cã tªn b¾t ®Çu b»ng HTTP. Mét sè biÕn th«ng thêng lµ:
HTTP_ACCEPT chØ ra c¸c kiÓu MINE, mµ Web Browser chÊp nhËn ®îc
HTTP_USER_AGENT Chuçi nhËn d¹ng kh¸ch hµng. Th«ng thêng lµ tªn vµ sè hiÖu phiªn b¶n cña Web Browser.
HÇu hÕt viÖc truy cËp d÷ liÖu vµo cña mét ch¬ng tr×nh CGI lµ th«ng qua c¸c biÕn m«i trêng.
TruyÒn th«ng tin qua dßng nhËp chuÈn
NÕu mét yªu cÇu ®îc t¹o bëi ph¬ng thøc HTTP POST, d÷ liÖu tõ Web Browser ®îc Web Server göi cho ng÷ tr×nh CGI (gateway) qua dßng nhËp chuÈn cña nã. C¸c kiÓu MINE cña d÷ liÖu vµ ®é dµi cña d÷ liÖu ®îc chøa trong c¸c biÕn m«i trêng CONTENT_TYPE vµ CONTENT_LENGTH.
Xö lý c¸c FORM
Xö lý c¸c Form lµ mét trong nh÷ng øng dông quan träng nhÊt cña CGI. Form do HTML t¹o ra cho phÐp ngêi sö dông nhËp c¸c th«ng tin hay d÷ liÖu. Sau khi nhËp c¸c th«ng tin hay d÷ liÖu ®ã ®îc göi tíi Server nh»m thøc hiÖn ch¬ng tr×nh (cã liªn quan ®Õn form) ®Ó gi¶i m· form ®ã. Ch¬ng tr×nh xö lý th«ng tin vµ sau ®ã göi tr¶ l¹i cho ngêi sö dông.
Truy cËp d÷ liÖu tõ Form
C¸c x©u query
Mét c¸ch ®Ó göi d÷ liÖu d¹ng Form tíi ch¬ng tr×nh CGI lµ ghi tiÕp c¸c th«ng tin vÒ form vµo ®Þa chØ URL ®¹t sau dÊu hái. C¸c d¹ng URL cã thÓ nh sau:
Sau dÊu chÊm hái ®îc gäi lµ x©u query (query string). Khi chuyÓn ®Þa chØ URL vµ x©u query tíi Server, Server sÏ gäi ch¬ng tr×nh CGI ®îc chØ ®Þnh ë phÇn URL tríc dÊu hái vµ lu tr÷ ë phÇn sau dÊu hái vµo biÕn m«i trêng
Ch¬ng tr×nh xö lý Form
§Ó thùc hiÖn mét ch¬ng tr×nh CGI cÇn ph¶i b¾t ®Çu tõ mét trang HTML cã chøa mét URL chØ ®Õn øng dông CGI ®ã. Mét trang HTML ®ã cã thÓ viÕt nh sau:
chµo b¹n
CGI Application Example
Ten ban :
Tuoi ban:
Form nhËp d÷ liÖu:
Trong Form trªn ta thÊy cã hai nót: Ch¹y, Click here vµ NhËp l¹i
Nót Ch¹y, Click here dïng ®Ó chuyÓn nh÷ng th«ng tin trong Form tíi ch¬ng tr×nh CGI. Sau khi nhËp nh÷ng th«ng tin cÇn thiÕt vµ chän Ch¹y, click here ta sÏ nhËn ®îc kÕt qu¶ vÒ nh÷ng th«ng tin tr¹ng th¸i nh ®é dµi chuçi yªu cÇu, ph¬ng ph¸p truy nhËp, tªn m¸y chñ, giao thøc sö dông . . .do ch¬ng tr×nh CGI cung cÊp.
Nót NhËp l¹i dïng ®Ó xo¸ c¸c th«ng tin ®· ®iÒn trong Form.
Néi dung ch¬ng tr×nh CGI (ktra.c) ®îc viÕt b»ng ng«n ng÷ C tr×nh bµy chi tiÕt trong phÇn phô lôc.
KÕt qu¶ tr¶ l¹i cña ch¬ng tr×ng CGI trªn mµn h×nh Web Browser:
Ho¹t ®éng cña ch¬ng tr×nh CGI
LÊy d÷ liÖu tõ Form vµ xö lý d÷ liÖu
Sau khi ngêi dïng nhËp d÷ liÖu vµo Form vµ tr×nh diÖn lªn Server, nÕu sö dông ph¬ng ph¸p yªu cÇu lµ ph¬ng ph¸p POST th× Web Server sÏ x¸c ®Þnh mét sè gi¸ trÞ t¬ng øng vµo mét sè biÕn m«i trêng vµ ®a d÷ liÖu cña ngêi dïng vµo trong dßng vµo chuÈn (Standard Input) cña ch¬ng tr×nh CGI. Khi ®ã ch¬ng tr×nh CGI tham kh¶o c¸c biÕn m«i trêng råi lÊy d÷ liÖu tõ dßng vµo chuÈn ®ã ®Ó gi¶i quyÕt yªu cÇu. Cßn nÕu tr×nh diÖn yªu cÇu b»ng ph¬ng ph¸p GET th× ngoµi viÖc ®Æt gi¸ trÞ cho c¸c biÕn m«i trêng th«ng thêng, Web Server ®a d÷ liÖu nhËn ®îc tõ ngêi dïng vµo biÕn m«i trêng QUERY_STRING, ch¬ng tr×nh CGI lÊy d÷ liÖu tõ ®ã.
Cô thÓ víi ch¬ng tr×nh ktra.c lµ ch¬ng tr×nh kiÓm tra tr¹ng th¸i Web Server, khi ngêi dïng nhËp c¸c th«ng tin tªn, tuæi vµ tr×nh diÖn lªn Web Server, vµ ch¬ng tr×nh sÏ nhËn ®îc d÷ liÖu tõ Web Server. Ch¬ng tr×nh gåm cã c¸c thñ tôc sau:
Thñ tôc strcvrt cã chøc n¨ng chuyÓn ®æi kÝ tù thµnh d¹ng x©u.
Thñ tôc TwoHex2Int chuyÓn ®æi m· ESCAPE thµnh kÝ tù.
Thñ tôc urlDecode gi¶i m· d÷ liÖu
Thñ tôc Main ®äc d÷ liÖu tõ Stdin vµ ®a ra d÷ liÖu díi d¹ng HTML chuÈn.
Tríc tiªn ch¬ng tr×nh CGI sÏ tiÕn hµnh kiÓm tra xem ph¬ng thøc yªu cÇu cña Client lµ ph¬ng thøc nµo b»ng c¸ch ®äc d÷ liÖu trong biÕn m«i trêng REQUES_METHOD víi dßng lÖnh:
pRequestMethod = getenv("REQUEST_METHOD") ;
if (pRequestMethod == NULL || pRequestMethod[0] == '\0')
{
printf("\nERROR:Request Method error\n") ;
goto error ;
}
if ( strcmp( pRequestMethod, "POST" ) == 0 )
. . . . .
Ngoµi viÖc ®äc biÕn m«i trêng REQUEST_METHOD, ch¬ng tr×nh CGI cßn cã thÓ tham kh¶o mét sè biÕn m«i trêng kh¸c nÕu nã thÊy cÇn. VÝ dô muèn biÕt th«ng tin vÒ phÇn mÒm Server ®ang sö dông th× ta ®äc d÷ liÖu tõ biÕn m«i trêng SERVER_SOFWARE b»ng dßng lÖnh:
p = getenv("SERVER_SOFTWARE") ;
if ( p != NULL && *p != '\0' )
printf(p) ;
else
printf(" ") ;
Do d÷ liÖu ®îc göi lªn theo ph¬ng theo ph¬ng thøc POST nªn ch¬ng tr×nh CGI sÏ ®äc biÕn m«i trêng CONTENT_LENGTH ®Ó biÕt ®é dµi d÷ liÖu råi tiÕn hµnh ®äc d÷ liÖu tõ Standard Input vµ xö lý d÷ liÖu.
p = getenv("CONTENT_LENGTH") ;
if ( p != NULL && *p != '\0' )
ContentLengh = atoi(p) ;
else
ContentLength = 0 ;
i = 0 ;
while ( i < ContentLength )
{
x = fgetc(stdin) ;
if ( x == EOF )
break ;
InputBuffer[i++] = x ;
}
Sau nhËn ®îc d÷ liÖu ch¬ng tr×nh CGI sÏ tiÕn hµnh gi¶i m· d÷ liÖu ®ã (v× mét sè ký hiÖu ®Æc biÖt ®· ®îc m· ho¸) b»ng thñ tôc urlDecode, thñ tôc ®ã ®îc viÕt nh sau:
void urlDecode( char *p )
{
char *pD = p ;
while (*p)
{
if ( *p == '%' )
{
p++ ;
if ( isxdigit(p[0]) && isxdigit(p[1]) )
{
*pD++ = (char) TwoHex2Int(p) ;
p += 2 ;
}
}
else
{
*pD++ = *p++ ;
}
}
*pD = '\0' ;
}
§a kÕt qu¶ ®a ra tõ CGI Gateway
KÕt qu¶ tr¶ vÒ tõ ng÷ tr×nh CGI (gateway) ®îc Server nhËn vµ chuyÓn nã cho ngêi göi yªu cÇu (Web Server). Khi ngêi sö dông gäi URL cña mét ch¬ng tr×nh CGI nµo ®ã vµ göi tíi Server ®Ó t×m file, nÕu Server nhËn ra ®Þa chØ ®îc yªu cÇu lµ mét ch¬ng tr×nh CGI, Server sÏ kh«ng tr¶ l¹i toµn bé néi dung file mµ thay vµo ®ã nã sÏ ch¹y ch¬ng tr×nh.
C¸c Gateway CGI muèn t¹o ra c¸c t liÖu th«ng tin ®Ó tr¶ vÒ cho ngêi sö dông ph¶i th«ng b¸o cho Web Server vÒ lo¹i th«ng tin mµ nã göi cho Server d¹ng nh sau:
Content_type: type/subtype
Type vµ Subtype lµ kiÓu MINE cho th«ng tin mµ Gateway cÇn göi. NÕu cÇn göi mét tÖp d¹ng v¨n b¶n (ASCII) th× type/submit ph¶i lµ "text/plain ", cßn nÕu cÇn göi mét t liÖu HTML th× type/subtype ph¶i lµ "text/html".
Trong ch¬ng tr×nh ktra.c do muèn lÊy kÕt qu¶ tr¶ vÒ díi d¹ng HTML chuÈn nªn göi th«ng b¸o cho Web Server biÕt d¹ng th«ng tin cÇn tr¶ vÒ cho ngêi dïng b»ng c¸ch:
printf("Content-Type: text/html\n\n") ;
Theo dßng lÖnh nµy, Web Server tù ®éng tr¶ l¹i kÕt qu¶ thùc hiÖn ch¬ng tr×nh ktra.exe díi d¹ng HTML chuÈn (xem hµm main() cña ch¬ng tr×nh ktra.c ë phô lôc 1).
C¸c Gateway còng kh«ng nhÊt thiÕt ph¶i tr¶ vÒ mét t liÖu mµ nã cã thÓ tr¶ vÒ mét URL tíi mét tËp tin hay mét th«ng tin kh¸c. Khi ®ã Web Server sÏ dùa vµo URL nµy ®Ó x¸c ®Þnh vµ lÊy th«ng tin hay tÖp ®ã råi göi nã cho Web Browser. §Ó thùc hiÖn ®îc c«ng viÖc nµy c¸c gateway ph¶i göi cho Server dßng sau ®©y:
Location: URL address
Th«ng tin kÕt qu¶ tõ ch¬ng tr×nh CGI:
Nh ta ®· biÕt ë phÇn trªn, khi ch¹y mét ch¬ng tr×nh CGI, Server thay v× ®a ra v¨n b¶n tÜnh sÏ ®a ra kÕt qu¶ cña ch¬ng tr×nh. Tuy nhiªn, vÊn ®Ò lµ ë chç ch¬ng tr×nh CGI ph¶i lµm sao t¹o th«ng tin ra ®Ó phï hîp nhÊt víi Browser.
Th«ng tin th«ng thêng nhÊt do mét ch¬ng tr×nh CGI t¹o ra lµ mét v¨n b¶n ®¬n gi¶n ë d¹ng plain text hay HTML ®Ó cho Browser hiÓn thÞ nh ®èi víi c¸c v¨n b¶n kh¸c trªn Web. Tuy nhiªn CGI cßn cã kh¶ n¨ng cung cÊp c¸c tiÖn Ých nh sau:
Tr¶ l¹i ®å ho¹ hay c¸c d÷ liÖu nhÞ ph©n kh¸c
ChØ cho Browser biÕt cã cÊt v¨n b¶n hay kh«ng
Göi c¸c m· tr¹ng th¸i HTTP ®Æc biÖt tíi Browser
ChØ cho Server göi mét v¨n b¶n cã s½n
C¸c kü thuËt trªn ®ßi hái cÇn ph¶i biÕt thªm ®«i chót vÒ c¸c Header cña ch¬ng tr×nh CGI.
C¸c Header CGI
Header thêng thÊy nhÊt lµ Content-type, lµ HTTP header chøa kiÓu néi dung MINE m« t¶ d÷ liÖu. Ngoµi ra c¸c header kh¸c cßn cã thÓ m« t¶:
KÝch thíc d÷ liÖu
C¸c v¨n b¶n kh¸c mµ Server ph¶i tr¶ vÒ
C¸c m· tr¹ng th¸i HTTP
Sau ®©y lµ mét sè header th«ng thêng:
Header Content-length: m« t¶ ®é dµi (theo bytes) luång d÷ liÖu ra. Sö dông d÷ liÖu nhÞ ph©n.
Header Expires: M« t¶ ngµy giê cña cña c¸c v¨n b¶n kh«ng cßn gi¸ trÞ vµ Browser cÇn t¶i l¹i (reload)
Header Location: §Þnh híng l¹i cho Server.
Header Pragma: ChØ ®Þnh cã cÊt v¨n b¶n ®i hay kh«ng
Header Status: Tr¹ng th¸i cña yªu cÇu.
Díi ®©y sÏ t×m hiÓu s©u mét chót vÒ c¸c header trªn:
+ Accept types vµ Content Types
C¸c ch¬ng tr×nh CGI cã thÓ tr¶ l¹i gÇn nh bÊt cø d¹ng v¨n b¶n nµo mµ Client cã thÓ xö lý ®îc: vÝ dô nh file text, file HTML hay cã thÓ c¶ Postscript, PDF, SGML ..v.v. .Do vËy Client sÏ chuyÓn danh s¸ch c¸c kiÓu file nã chÊp nhËn tíi Server khi Server yªu cÇu. Server sÏ lu tr÷ th«ng tin nµy vµo biÕn m«i trêng HTTP_ACCEPT vµ ch¬ng tr×nh CGI cã thÓ kiÓm tra biÕn nµy ®Ó b¶o ®¶m r»ng ®· tr¶ vÒ mét file cã d¹ng mµ Browser cã thÓ xö lý ®îc.
Khi tr¶ vÒ mét tµi liÖu, ch¬ng tr×nh CGI còng cÇn ph¶i sö dông Header Content- type ®Ó chØ cho Client biÕt nã ®ang göi lo¹i d÷ liÖu nµo, nh vËy Browser cã thÓ ®Þnh d¹ng vµ hiÓn thÞ v¨n b¶n mét c¸ch chuÈn x¸c.
+ Header content-length
Header nµy chØ ®Þnh kÝch thíc d÷ liÖu ®Þnh truyÒn ®i. Sö dông header nµy cho phÐp tr¸nh ®îc c¸c lçi d÷ liÖu tõ Server khi ®ang xö lý d÷ liÖu nhÞ ph©n bëi Server sÏ biÕt ®îc sè byte tõ luång d÷ liÖu.
+ Sö dông Header Location ®Ó ®Þnh híng l¹i Server
Ch¬ng tr×nh CGI cã thÓ lÖnh cho Server lÊy mét v¨n b¶n ®· cã s½n vµ hiÓn thÞ v¨n b¶n ®ã qu¸ tr×nh nµy gäi lµ ®Þnh híng l¹i Server.
Lý do ®Ó ngêi ta sö dông kÜ thuËt nµy lµ nh»m tr¶ l¹i mét v¨n b¶n tÝnh sau khi ngêi sö dông ®· thùc hiÖn mét thao t¸c nµo ®ã. VÝ dô nh sau khi hä ®· ®iÒn vµo mét Form b¹n muèn hiÓn thÞ mét vµi dßng c¸m ¬n. VÒ nguyªn t¾c ch¬ng tr×nh CGI sau mçi lÇn gäi cã thÓ t¹o vµ hiÓn thÞ Message ®ã, nhng hiÖu qu¶ h¬n vÉn lµ göi c¸c c©u lÖnh cho Server ®Ó ®Þnh híng l¹i vµ lÊy mét file cã chøa Message c¸m ¬n ®ã.
§Ó ®Þnh híng l¹i Server, ngêi ta sö dông Header Location ®Ó chØ cho Server biÕt cÇn ph¶i chuyÓn nh÷ng g× vµ Server sÏ lÊy v¨n b¶n ®ã.
+ C¸c header Expires vµ Pragma
HÇu hÕt c¸c Browser sÏ cÊt trong cache v¨n b¶n mµ truy nhËp nh»m tiÕt kiÖm tµi nguyªn v× mçi lÇn t×m v¨n b¶n ®ã Browser sÏ kh«ng lÊy l¹i v¨n b¶n ®ã n÷a.
Tuy vËy, ®èi víi c¸c v¨n b¶n ¶o do ch¬ng tr×nh CGI t¹o ra th× ®©y sÏ lµ mét ®iÒu phiÒn phøc v× khi Browser truy nhËp vµo mét ch¬ng tr×nh do CGI t¹o ra th«ng thêng nã sÏ cÊt v¨n b¶n ®ã. C¸c lÇn sau khi truy cËp v¨n b¶n ®ã th× Client sÏ kh«ng yªu cÇu Server mµ sö dông lu«n v¨n b¶n ®· cÊt do vËy th«ng tin cung cÊp cho ngêi sö dông cã thÓ kh«ng chÝnh x¸c n÷a vÝ dô ngµy th¸ng- cã trong v¨n b¶n l¹i lµ cña lÇn truy nhËp tríc vµ do ®ã sÏ kh«ng cßn gi¸ trÞ. §Ó h¹n chÕ nhîc ®iÓm ®ã ngêi ta sö dông c¸c Header Exprires vµ Pragma ®Ó cho Client kh«ng cÊt v¨n b¶n ®ã ®i.
+ C¸c m· tr¹ng th¸i
Giao thøc HTTP sö dông c¸c m· tr¹ng th¸i ®Ó liªn l¹c víi tr¹ng th¸i cña c¸c yªu cÇu ch¼ng h¹n nÕu v¨n b¶n cÇn truy cËp kh«ng tån t¹i th× sÏ tr¶ vÒ m· tr¹ng th¸i "404" tíi Browser vµ nÕu v¨n b¶n ®· bÞ rêi ®i n¬i kh¸c th× tr¶ vÒ m· "301".
Header Status chØ c¸c m· tr¹ng th¸i gåm cã 3 sè, tiÕp theo lµ x©u chØ näi dung m· tr¹ng th¸i ®ã, vÝ dô:
M· 200: Truy cËp thµnh c«ng
M· 204: Kh«ng cã tÝn hiÖu tr¶ lêi
M· 301: V¨n b¶n ®· bÞ chuyÓn
M· 401: Kh«ng ®îc quyÒn truy cËp
M· 404: Kh«ng t×m thÊy
M· 500: Lçi bªn trong Server
M· 501: Kh«ng sö dông (not implemented).
ch¬ng iii oracle WebServer vµ x©y dùng ch¬ng tr×nh CGI truy nhËp CSDL oracle
a. oracle WebServer
KiÕn tróc cña Oracle Web Server
Oracle WebServer bao gåm c¸c thµnh phÇn chÝnh nh sau (thÓ hiÖn trong h×nh vÏ ( 2.1) :
+ Web Listener
+ Web Request Broker
+ Sercure Socket Layer
+ Web Server Manager
+ CGI Interface
+ PL/SQL Agent
Web Listener
Lµ mét giao thøc m¹nh trong viÖc gi¶i quyÕt yªu cÇu vµ ®a ra tµi liÖu siªu ph¬ng tiÖn göi tíi Web Browser. Nã hç trî tÊt c¶ nh÷ng chuÈn chøc n¨ng Web Server nh:
+ HÖ thèng file ¶o
+ Domain Name Services
+ Hç trî vÒ S¬ ®å ¶nh
+ Hç trî vÒ CGI
+ Giao thøc kÕt nèi an toµn
+ B¶o vÖ file vµ ph©n quyÒn cho user
Web Request Broker:
§©y lµ phÇn träng t©m cña WebServer bao gåm :
+ WRB Dispatcher
+ WRB Cartrigger
+ WRB Services
Mét c©u hái ®ång bé cho mét øng dông cña Oracle WebServer sö dông ®Ó thùc hiÖn nh÷ng øng dông trªn Server.
Sercure Sockets Layer
SSL lµ chuÈn cho an toµn d÷ liÖu trªn m¹ng. Mét vÊn ®Ò cã ¶nh hëng ®Õn viÖc kÕt giao th«ng tin trªn m¹ng ®ã lµ mäi kÕt nèi gi÷a hai m¸y tÝnh trªn m¹ng gi¶i quyÕt nhiÒu bíc trung gian víi hµng lo¹t m¸y tÝnh tõ khi tiÕp nhËn vµ quay trë l¹i th«ng tin mét c¸ch thµnh c«ng cho ®Õn khi t×m ®îc ®Õn ®Ých. TiÕn tr×nh nµy ®îc gäi lµ routing lµ c¬ së chñ yÕu cho toµn bé viÖc kÕt nèi m¹ng, vµ bÊt kú m¸y tÝnh nµo trong “chuçi dÉn ®êng” hoµn thµnh viÖc truy cËp d÷ liÖu.
Qu¶n trÞ Web Server
§Ó gióp ®ì viÖc qu¶n lý Web site, Oracle Web Server cung cÊp mét tËp hîp trang Web cã thÓ sö dông chóng ®Ó tiÕn hµnh lµm nhiÖm vô qu¶n lý mét c¸ch cã hiÖu qu¶ nhÊt. Cã nh÷ng trang ®¬n gi¶n lµ so¹n th¶o nh÷ng files cÊu h×nh Web Server sö dông, b¹n cã thÓ sö dông c«ng cô kh¸c ®Ó säan th¶o files mét c¸ch trùc tiÕp.
Giao diÖn CGI
Mét c«ng nghÖ chuÈn ®îc sö dông bëi Web Listener thùc hiÖn mét ch¬ng tr×nh ngoµi nh (c, perl) sinh ra HTML Doccument.
PL/SQL Agent
§©y lµ ch¬ng tr×nh Oracle WebServer sö dông ®Ó thùc hiÖn nh÷ng thñ tôc ®îc viÕt trªn PL/SQL, øng dông cña Oracle trªn Oracle7 Server.
Nguyªn t¾c ho¹t ®éng cña Oracle Web Server
Oracle WebServer lµ mét HTTP víi mét c¬ së d÷ liÖu kh«ng ®Þnh tríc. Khi WebServer tiÕp nhËn mét URL tõ Browser trªn WWW hoÆc tõ m¹ng côc bé sö dông giao thøc Web, nã chøa ®ùng th«ng tin tõ c¬ së d÷ liÖu hay file hÖ thèng cÇn thiÕt ®Ó tr¶ lêi yªu cÇu. HÖ thèng file sö dông Static Web pages, hay cho CGI Script. C¬ së d÷ liÖu sö dông cho trang Web sinh ra mét “live” data. Server Web Listener chÊp nhËn mét URL tõ Web Browser vµ göi ra ngoµi khi Web Listener tiÕp nhËn URL. Web listener x¸c ®Þnh c©u hái vµ sö dông nh÷ng dÞch vô truy cËp th«ng qua WRB (Web Request Brocker) mét ch¬ng tr×nh ®îc truy cËp b»ng CGI Interface hay truy cËp th«ng qua file hÖ thèng cña c«ng nghÖ trªn Listener.
Khi Web Browser göi yªu cÇu díi d¹ng URL tíi Web Listener, Web Listener sÏ tiÕp nhËn ph©n tÝch URL vµ x¸c ®Þnh dÞch vô thùc hiÖn yªu cÇu hoÆc th«ng qua WRB. NÕu yªu cÇu mét tµi liÖu tÜnh th× tµi liÖu ®ã sÏ ®îc lÊy tõ hÖ thèng files. NÕu yªu cÇu lµ giµnh cho mét øng dông cña CGI th× tiÕn tr×nh CGI sÏ ho¹t ®éng. NÕu Web Listener kh«ng ®¸p øng ®îc yªu cÇu th× sÏ göi qua WRB sau ®ã WRB sÏ göi yªu cÇu ®ã tíi Cartridger nh PL/SQL, Java, LiveHTML. NÕu WRB truy cËp ngoµi th× Listener sÏ th«ng qua c©u hái cho WRB Dispatcher cho mét tiÕn tr×nh, sau ®ã quay trë l¹i gi¶i quyÕt nhiÖm vô .
WRB Dischaper tù thùc hiÖn yªu cÇu víi sù gióp ®ì cña mét “xÝch” (pool) cña tiÕn tr×nh ®îc gäi ®ã lµ ®îc gäi lµ WRB Executable Engines (WRBXs). Mét giao diÖn kh¸c WRBX lµ quay trë l¹i sö dông øng dông WRB API. Cã nh÷ng øng dông ®îc gäi lµ WRB cartridges. WRB API ®· ®îc thiÕt kÕ . Sù kÕt hîp gi÷a mét Cartridges vµ WRB API t¹o ra mét WRB Service. Th«ng thêng th× cã 3 lo¹i dÞch vô mµ Oracle WebServer hç trî lµ :
PL/SQL Cartridges : Thùc hiÖn c¸c thñ tôc PL/SQL sinh m· HTML ®ång thêi sö dông Oracle Data.
Java cartridges : Thùc hiÖn Java trªn Server.
Live HTML : HiÖn ra Web page. Web page ®îc thùc hiÖn bëi HÖ ®iÒu hµnh.
Gi¶i thÝch h×nh 2.2
1. Web Browser ®a ra yªu cÇu URL cho Web Listener
Web Listener göi yªu cÇu tíi WRB
NÕu PL/SQL ®îc chän th× sÏ mãc nèi vµo c¬ së d÷ liÖu
Thñ tôc PL/SQL sÏ sinh tµi liÖu HTML
PL/SQL Agent th«ng qua tµi liÖu HTML tíi Web Listener
Web Listener göi tµi liÖu HTML tíi Browser
The Web Listener (OWL)
Oracle Web Listener lµ mét giao thøc truyÒn th«ng HTTP. Web Listener cã nhiÖm vô tiÕp nhËn yªu cÇu tõ Web Browser göi ®Õn WRB vµ sau ®ã l¹i nhËn kÕt qu¶ ®Ó göi tr¶ cho Browser. Cho phÐp xö lý ®ång thêi nhiÒu c©u hái trong cïng thêi gian th«ng qua chuÈn HTTP hay HTTP trªn SSL. Web Listener vµ Web Client kÕt nèi víi nhau th«ng qua giao thøc HTTP.(H×nh vÏ 2.3)
Mçi tiÕn tr×nh Oracle Web Listenner ®Òu chÊp nhËn kÕt nèi nhiÒu Web Browser trªn mét hay nhiÒu ®Þa chØ IP/ hoÆc cæng kÕt hîp sö dông HTTP ®Ó gi¶i m· yªu cÇu tõ siªu v¨n b¶n vµ giao thøc ®iÒu khiÓn truyÒn th«ng TCP/IP (Transmission Control Protocol) /giao thøc Internet (Internet Protocol) ®îc sö dông nh mét giao thøc kÕt nèi líp díi. Mét sè tiÕn tr×nh Web Listener cã thÓ ch¹y trªn mét m¸y vµo cïng mét thêi ®iÓm.
Th«ng thêng khi Web Listener më mét file ®· ®îc yªu cÇu, File sÏ më vµ ¸nh x¹ vµo bé nhí trong cho ®Õn khi Clients sö dông xong vµ kÕt thóc nã. Web Listener sÏ ®ãng file vµ gi¶i phãng memory mapping kÕt nèi víi nã. Web Listener cho phÐp x¸c ®Þnh râ c¸c file ë trong cache. Cached file sÏ më khi client yªu cÇu chóng.
VÒ vÊn ®Ò an toµn d÷ liÖu, Oracle Web Listener cho phÐp t¹o fil._.
Các file đính kèm theo tài liệu này:
- 20388.doc