Truy nhập cơ sở dữ liệu bằng web

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

doc93 trang | Chia sẻ: huyen82 | Lượt xem: 1672 | Lượt tải: 0download
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 h­ng 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 tr­ng 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 l­u 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 l­u 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 tr­ng 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 tr­ng 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. Nh­ng 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 l­u 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“ nh­ng 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 nh­ng 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, nh­ng 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 nh­ng 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 nh­ng 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 tr­ng, 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 nh­ng 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 ch­a 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 tr­ng 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 nh­ng 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Ó l­u tró trong cïng mét m¸y tÝnh d­íi d¹ng lµ chÝnh trang ®ã, hoÆc l­u 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. Nh­ng 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 l­u 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 l­u 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. Nh­ng ®«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 l­u 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 l­u 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 l­u 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 nh­ng ®­î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µ l­u 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Ï l­u 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 ®ã, nh­ng 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:

  • doc20388.doc
Tài liệu liên quan