М И Н И СТ Е РСТ В О О БРА ЗО В А Н И Я РО ССИ Й СК О Й Ф Е Д Е РА Ц И И В О РО Н Е Ж СК И Й ГО СУ Д А РСТ В Е Н Н Ы Й У Н И В Е РСИ Т Е Т
Р азраб о тка Internet-п ри л о ж ени й У чебно-метод и ческоепособи епо специ альности «При клад наяматемати ка и и нформати ка» 010200
В оронеж , 2003
2
У тв ерж д ено научно-метод и чески м сов етом протокол № __ от________ 2003 г. факультета ПМ М
Состав и тели : Руд алев В .Г. А ртемов а Л .Ф .
Пособи епод готов лено на кафед ретехни ческой ки бернети ки и ав томати ческого регули ров ани яфакультета при клад ной математи ки , и нформати ки и механи ки В оронеж ского госуд арств енного уни в ерси тета. Рекоменд уетсяд лястуд ентов д лястуд ентов 4 курса д /о факультета ПМ М .
3
В д анной работе, яв ляю щ ейся прод олж ени ем сери и ранее и зд анны х пособи й [6-7], рассматри в аю тся основ ополагаю щ и е в опросы публи каци и баз д анны х в Internet. При в од ятся основ ны е поняти я и терми ны компью терны х сетей, базов ы е конструкци и язы ка HTML. О пи сы в аю тся протокол HTTP и технологи яCGI, метод и ка созд ани яInternet-при лож ени й баз д анны х сред ств ами Delphi. С о дер ж а н и е 1. О снов ны епоняти я … … … … … … … … … … … … … … … 1.1. Сетев ы епротоколы … … … … … … … … … … … … … … 1.2. А д реса TCP/IP … … … … … … … … … … … … … … … … … 1.3. А д ресаци яресурсов … … … … … … … … … … … … … … 1.4. Протокол HTTP … … … … … … … … … … … … … … 1.5. Web-серверы … … … … … … … … … … … … … … … 2. Публи каци ябаз д анны х в Internet … … … … … … … … … … 2.1. Базов ы етехнологи и … … … … … … … … … … … … … 2.2. Internet-программи ров ани есред ств ами Delphi … … … … Зад ани я … … … … … … … … … … … … … … … … … … … … Л и тература … … … … … … … … … … … … … … … … … … … При лож ени е1. К онструкци и язы ка HTML … … … … … … … … При лож ени е2. К лассTWebRequest … … … … … … … … … … …
3 3 6 8 8 10 11 11 14 26 26 26 29
1. О сн о вн ы епо н яти я 1.1. С етевы епр о то ко лы Протокол – наборформали зов анны х прав и л, регули рую щ и х перед ачу и нформаци и по сети . Послед няязад ача чрезв ы чайно слож на и многообразна. Реш и ть целы й комплекстехни чески х и программны х проблем (проекти ров ани есетев ого оборуд ов ани я, помехоустойчи в ая перед ача и нформаци и по каналам св язи , алгори тмы и справ лени я ош и бок, метод ы и нтерпретаци и би тов ой послед ов ательности и т.д . и т.п.) в рамках од ного протокола затруд ни тельно. Поэтому в перед ачеучаств ую тнесколько протоколов , каж д ы й и з которы х отв ечаетза св ой участокработы . Протоколы образую т многоуров нев ую и ерархи ческую мод ель. Протокол каж д ого уров няреали зов ан в в и д еотд ельного программного мод уля. Д ляв ы полнени я св ои х зад ачмод уль обращ ается с запросом только кмод улю непосред ств енно ни ж ележ ащ его уров ня, а результаты работы перед ает непосред ств енно в ы ш ележ ащ ему уров ню . М од ули незав и си мы и общ аю тся через станд артны е наборы функци й – и нтерфейсы . Т рад и ци онно, каки в лю бы х компонентах операци онны х си стем, ни ж ни еуров ни теснеепри в язаны каппаратуре, в ерхни е– к при клад ному программному обеспечени ю . И ерархи чески органи зов анны й набор протоколов , д остаточны й д ля в заи мод ейств и я узлов в сети , назы в ается с т еко м пр о т о ко л о в . Протокол каж д ого уров ня опред еляет послед ов ательность и формат сообщ ени й, которы ми обмени в аю тся сетев ы е компоненты од ного уров ня, леж ащ и е в
4
разны х узлах. Забегаяв перед , скаж ем, что напри мер, компоненты Web-серв ери Web-браузер относятся кпри клад ному уров ню и обмени в аю тся с помощ ью протокола HTTP (см. п. 1.4). О бщ епри знанной и рекоменд уемой яв ляется семи уров нев ая мод ель OSI (Open System Interconnection, мод ель в заи мод ейств и яоткры ты х си стем). О д нако архи тектура многи х сетей, напри мер, сетей TCP/IP, яв ляетсянесколько упрощ енной и неполностью соотв етств уетмод ели OSI (см. ри с.).
М од ель OSI При клад ной Пред став и тельны й
СтекTCP/IP WWW, FTP, Telnet, SMTP, …
Сеансов ы й Т ранспортны й
TCP
Сетев ой
IP
К анальны й
Ethernet
Ф и зи чески й
В и таяпара, оптов олокно и пр.
К ратко охарактери зуем уров ни мод ели OSI при мени тельно кстеку TCP/IP. Н а ф изичес ко м ур о в не регламенти рую тся фи зи чески е характери сти ки соед и нени й в сетях. Н а д анном уров не станд арти зов аны кабели , разъемы , уров ни си гналов и т.п. При мером протокола фи зи ческого уров ня яв ляется специ фи каци я 100Base-T, которая опред еляет кабель (неэкрани ров анную в и тую пару категори и 5), ти п разъема (RJ-45) и электри чески е характери сти ки перед аю щ ей сред ы , обеспечи в аю щ аяперед ачу д анны х со скоростью д о 100М би т/сек. Протокол канал ь но го ур о в ня тесно при в язан ктопологи и сети (общ ая ш и на, зв езд а и д р.). Зд есь реш аетсязад ача перед ачи д анны х в нутри сети по и зв естны м аппаратны м MAC-ад ресам узлов . При мером такого протокола яв ляется Ethernet. В наи болеераспространенной топологи и «Зв езд а» компью теры объед и нены в сеть через ко нцент р ат о р ы (Hub) и ли ко м м ут ат о р ы (Switch), см. ри с. К омпью теры под клю чаю тся к концентратору через разъемы (порты ) на его корпусе. Сообщ ени я, перед ав аемы е меж д у узлами , разби в аю тся на фрагменты (кад ры ), снабж аемы е Ethernet-заголов ком. В заголов ке, в частности , указаны MAC-ад реса получателя и при емни ка. К онцентраторуси ли в ает си гналы и перед аети х на в сепорты , т.е. в сем узлам сети . Т отузел, ад рескоторого сов пад ает с указанны м в заголов ке, при ни мает кад р, остальны е отбрасы в ает. О тсю д а основ ны е нед остатки концентраторов – перегруж енность сетев ого трафи ка и в озмож ность в ы ход а кад ра в о в неш ню ю сеть, д лякоторой он непред назначен.
5
Послед неенаруш аетбезопасность сети . Сейчасконцентраторы пов сю д у в ы тесняю тсякоммутаторами . К оммутаторзапоми наетд лякаж д ого порта MAC-ад рес компью тера, кнему под клю ченного, и перед аеткад рт о л ь ко в нуж ныйпо р т . Ко м м у та то р
Узел
Узел
Узел
Узел
Сет ев о йур о в ень служ и тд ляобразов ани яед и ной транспортной си стемы , объед и няю щ ей несколько сетей, при чем эти сети могут и спользов ать сов ерш енно разли чны е при нци пы перед ачи сообщ ени й меж д у конечны ми узлами . Л окальны е сети под разд елени й в нутри пред при яти я обы чно объед и нены коммутаторами . Соед и нени есетей пред при яти й в Internet прои сход и тчерез м ар шр ут изат о р ы (Router). В отли чи е отканального уров ня, на сетев ом уров неи спользую тся не аппаратны е, а IP-ад реса (см. п.1.2). М арш рути заторы , в отли чи е от коммутаторов и концентраторов , работаю т на сетев ом уров не и умею т в ы би рать опти мальны й марш рут д остав ки сообщ ени я. М арш рут – послед ов ательность марш рути заторов , через которы епроход и тпакет. Портам марш рути заторов такж еназначены IP-ад реса. Зад ача т р анс по р т но го ур о в ня – над еж ная д остав ка сообщ ени й. И сход ная би тов аяпослед ов ательность разби в аетсяна пакеты , каж д ы й и з которы х д остав ляется д о цели ав тономно. Пакеты снабж аю тся заголов ком, сод ерж ащ и м и нформаци ю , необход и мую д ля в осстанов лени я и сход ного сообщ ени я, и и нформаци ю (контрольную сумму) д ля пров ерки целостности д остав ленного сообщ ени я. В случае прав и льного при ема узлу-перед атчи ку посы лается под тв ерж д ени е, при отсутств и и под тв ерж д ени яоргани зуетсяпов торнаяперед ача пакета. В отли чи еотпротокола IP, мод ули протокола TCP неперед аю тсообщ ени емеж д у прои зв ольны ми узлами сети , а устанав ли в аю тлоги ческоесоед и нени ем еж ду пр икл адным и пр о цес с ам и, на ни х в ы полняю щ и ми ся; такоесоед и нени еназы в аю т TCP-с о единением . Д ля перед ачи сообщ ени я TCP в ы зы в ает ни ж ележ ащ и е мод ули IP. Пакеты , поступаю щ и е на транспортны й уров ень, органи зую тся операци онной си стемой в в и д емнож еств а очеред ей кточкам в ход а при клад ны х процессов . В терми нологи и TCP/IP таки еочеред и назы в аю тсяпо р т ам и. Н омер порта в сов окупности с IP-ад ресом узла од нозначно и д енти фи ци руетпри клад ной процесс; этот наборпараметров назы в ается с о кет о м (socket). Д ополни тельны й и д енти фи катор(номерпорта) необход и м, таккакна од ном узлемогут функци они ров ать несколько при клад ны х процессов , напри мер, несколько серв еров (WWW, FTP и д р.). Н азначени е номеров портов д ля наи более распространенны х сетев ы х служ б в ы полняетсяцентрали зов анно. Н апри мер, номер21 закреплен за FTP серверами , 80 – WWW-серверами , 23 – служ бой telnet.
6
Сеанс о в ыйур о в ень устанав ли в аетправ и ла под клю чени я пользов ателей при работев сети . П р едс т ав ит ел ь ныйур о в ень реш аетнекоторы ед ополни тельны езад ачи пред став лени я и нформаци и , напри мерш и фраци ю -д еш и фраци ю . Н а этом уров не функци они рует и зв естны й протокол кри птозащ и щ енного туннели ров ани яSSL [4] . Н а в ерхнем пр икл адно м ур о в не опред еляется в заи мод ейств и е компью теров в сети на уров не при лож ени й. И менно зд есь опред еляю тся прав и ла и нтерпретаци и программой полученной би тов ой послед ов ательности . Перед ача и нформаци и по стеку прои сход и т св ерху в ни з. Д анны е, сформи ров анны е при клад ны м процессом (напри мер, Web-сервером), поступаю т на в ход мод уля TCP, гд е разби в аю тся на пакеты и снабж аю тся TCP-заголов ком. Д алее на сетев ом уров не каж д ы й пакет д ополняется IP-заголов ком, при этом TCPзаголов оксохраняется. В конечном и тогепакетд остав ляетсяд о цели сред ств ами канального уров ня, д ляэтого он д ополняетсяEthernet-заголов ком и при ни маетслед ую щ и й упрощ енны й в и д (если сети св язаны по Ethernet-технологи и ). Ethernetза го ло во к
IP-за го ло во к
TCP-за го ло во к
Да н н ы е
Замечани е. Е сли участокмеж д у и сход ной и целев ой сетью построен по д ругой технологи и (неEthernet), то Ethernet-заголов окпакета соотв етств енно заменяется. При д остав кепакета в сеть назначени язаголов ки послед ов ательно отбрасы в аю тся. М од уль IP отбрасы в аетEthernet-заголов ок. М од уль TCP отбрасы в аетIPзаголов ок, пров еряетконтрольную сумму, если в сев поряд ке– в клю чаетпакет в в осстанав ли в аемую послед ов ательность д анны х, если нет– перед аетмод улю IP запросстребов ани ем пов торной перед ачи пакета. Д алеед анны еперед аю тсяWeb–кли енту (браузеру), и нтерпрети рую тсяи м какHTML-страни ца и отображ аю тсяв его окне. 1.2. Адр еса TCP/IP
Internet – объед и нени екомпью терны х сетей, и спользую щ и х д ляобмена и нформаци ей протокол TCP/IP. В стеке TCP/IP разли чаю т три в и д а ад ресов : аппар ат ные, IP-адр ес а и си мв ольны едо м енные адр ес а. Аппар ат ные адр ес а (MACад реса, формат 6 бай т) назначаю тся сетев ы м ад аптерам прои зв од и телями оборуд ов ани я и яв ляю тся уни кальны ми , так как управ ляю тся централи зов анно. А ппаратны е ад реса и спользую тся на базов ом уров не д ля д остав ки д анны х в нут р и под сети , яв ляю щ ейся частью состав ной сети . Поэтому и х такж е назы в аю тл о кал ь ным и. IP-адр ес а пред став ляю тсобой основ ной ти п ад ресов , на основ ани и которы х сетев ой уров ень перед ает пакеты м еж ду сетями . Е го преи мущ еств о – объед и нени еномера сети и номера узла сети . В аж но помни ть, что IP-ад ресназначается не самому компью теру, а его сетев ой плате (сетев ому и нтерфейсу), которы х у
7
од ного компью тера мож етбы ть несколько. Д алее д ля простоты и злож ени я мы не буд ем пров од и ть разли чи й меж д у ад ресом компью тера и и нтерфей са и назы в ать и х ад ресом сетев ого узла. В нутри локальной компью терной сети IP-ад реса назначаю тсяад ми ни стратором сети д остаточно прои зв ольно. Н азначени е ад ресов прои зв од и тся на в клад ке Сет ев о е о кр уж ение – Св о йст в а – К о нф игур ация - П р о т о ко л TCP/IP – Св о йс т в а (см. ри сунок, учи ты в ай те, что указанная послед ов ательность мож ет разли чатьсяв разны х в ерси ях Windows).
Е сли ж есетев ой и нтерфей скомпью тера яв ляется частью в неш ней сети , его IPад рес назначается ад ми ни стратором послед ней сети и ли зад ается ав томати чески с помощ ью специ альны х DHCP-серверов [4]. У ни кальность IP-ад ресов узлов , в ход ящ и х в Internet, обеспечи в ается меж д ународ ны ми органи заци ями . IP-ад рес– это 32-разряд ноечи сло, запи сы в аемоеобы чно в точечно-д есяти чной форме, напри мер, 192.168.18.5. IP-адр ес о бъединяет адр ес ко м пь ют ер а и адр ес с ет и. Гаранти руется, что каж д ая сеть (под сеть), если она не и золи ров ана от д руги х сетей, и меетсв ой уни кальны й и д енти фи катор. Ч тобы опред ели ть, какая часть IP-ад реса относи тся кад ресу узла, а какая и д енти фи ци рует под сеть, сов местно сIP-ад ресом при меняю т32-разряд ную маску под сети . Е сли би тмаски рав ен 1, то соотв етств ую щ и й би т IP-ад реса относи тся кад ресу сети , и наче – к ад ресу узла. Н апри мер, если IP-ад рес192.168.18.5, а маска 255.255.255.0, то ад рес узла – 0.0.0.5 и ад рес под сети - 192.168.18.0 и ли 11000000 10101000 00010010 000000002.
8
Сеть – это группа компью теров сод и наков ы ми старш и ми би тами в IP-ад ресе. В пов сед нев ной практи ке чи слов ы е IP-ад реса неуд обны , поэтому конечны е пользов атели при меняю т си мв ольны е д оменны е и мена, строящ и еся по и ерархи ческому при нци пу. Состав ляю щ и е полного д оменного и мени разд еляю тся точкой и перечи сляю тся в след ую щ ем поряд ке (слев а направ о): сначала и мя оконечного узла (компью тера), затем и мя группы узлов - д омена (напри мер, и мя органи заци и ), затем и мя более крупной группы (д омена) и т.д . д о и мени д омена самого в ы сокого уров ня, которы е объед и няю т органи заци и по географи ческому (RU, UK, US, … ), темати ческому (COM, ORG, NET, GOV) и ли д ругому при знаку. Н апри мер, ад рес web-сервера глав ного корпуса В ГУ – www.main.vsu.ru. В сетях TCP/IP соотв етств и е меж д у IP-ад ресом и д оменны м ад ресом устанав ли в ает си стема серверов DNS (Domain Name System) на основ е специ альны х табли ц. Н а зав ерш аю щ ем этапепри д остав кесообщ ени яв нутри сети на основ е IP-ад реса опред еляется аппаратны й ад рес, но реш ается это уж е на канальном уров не д райв ерами Ethernet с помощ ью ARP-табли ц (Address Resolution Protocol, ARP), сод ерж ащ и х и скомы есоотв етств и я. 1.3. Адр еса ци я р есу р со в А д ресресурса в форматеURL (Universal Resource Locator) и меетв и д пр о т о ко л ://адр ес _узл а[:по р т ]/пут ь /им я_ф айла_р ес ур с а, гд е пр о т о ко л – обозначени е од ного и з протоколов уров ня процессов и при лож ени й, и спользуемы х д ляобращ ени якресурсу. Д ляWeb это Http. адр ес _узл а – д оменноеи мяи ли IP-ад рескомпью тера, под клю ченного кInternet, по р т – номерпорта, по которому кли ент обращ ается ксерверу д ля установ лени яTCP-соед и нени я, пут ь – путь к каталогу, гд е наход и тся ресурс, опред еляемы й параметром им я_ф айла_р ес ур с а. При мени тельно ксерв ерны м при лож ени ям структура URL и меетв и д http://адр ес _узл а[:по р т ]/пут ь /им я_пр ил о ж ения/дейст в ие?запр о с напри мер, http://localhost/scripts/pog1.exe/p?name=Bill 1.4. Пр о то ко л HTTP HTTP (Hyper Text Transpher Protocol, протокол перед ачи ги пертекста) – в ы сокоуров нев ы й протокол, обеспечи в аю щ и й работу служ бы World Wide Web. При в ед ем кратко основ ны еэлементы протокола [3] . С еанс взаи м о д ействи я с Web-серверо м : • У станов лени еTCP-соед и нени я
9
• Запроскли ента (требов ани еперед ать ресурс) • О тв етсервера (код ресурса) • Разры в TCP-соед и нени я Зап ро с кл и ента: • Строка состояни я Заголов окзапроса • Полязаголов ка • Пустаястрока • Т ело запроса Строка состояни я: М ет о д_запр о с а URL_р ес ур с а Вер с ия пр о т о ко л а_HTTP М ет о д_запр о с а опред еляет способ перед ачи запроса на ресурс с ад ресом URL. Д опускаю тся метод ы GET, POST, HEAD, PUT и д р. Ч ащ е при меняю тся метод ы GET и POST. О ба метод а, несмотря на проти в ополож ны е назв ани я, пред назначены какд ляперед ачи , таки д ляполучени яи нформаци и . Получи в запросGET (получи ть), серверв клю чаетресурс(HTML-файл, графи ку и пр.) в состав отв ета. Е сли URL в клю чает ад рес CGI-программы , то GET, наоборот, и спользуется д ля перед ачи д анны х (и нформаци онной части запроса) серверу через URL. О снов ноеназначени еметод а POST – перед ача д анны х на сервер, при чем д анны еперед аю тсянечерез URL, а через тело запроса. URL_р ес ур с а - см. п. 1.3. Вер с ия пр о т о ко л а_HTTP и меетформатHTTP/в ер с ия.м о диф икация, напри мер HTTP/1.1. Полязаголов ка сод ерж атд ополни тельную и нформаци ю , напри мер, E-mail кли ента (см. При лож ени е). Запи сы в аю тсяв в и д е И м я_по л я: Значение, напри мерFrom:
[email protected] . Т ело запроса часто отсутств ует. О твет сервера: • • • •
Строка состояни я Полязаголов ка Пустаястрока Т ело отв ета
Заголов окотв ета
Строка состояни я: Вер с ия_пр о т о ко л а К о д_О т в ет а П о яс нение В ерси я протокола запи сы в ается такж е, каки в запросе. К од отв ета - трехзначноечи сло, результатобслуж и в ани я запроса. Пояснени ед убли руеткод отв ета в си мв ольном в и д е. Н апри мер, если запрос не бы л понят сервером, строка состояни ябуд ети меть в и д HTTP/1.0 400 Bad Request. Перваяци фра код а, при ни маю щ аязначени я1..5, опред еляетслед ую щ и еклассы отв етов :
10
• 1 – и нформаци онное сообщ ени е, что серверпрод олж ает обработку запроса • 2 – успеш наяобработка запроса • 3 – в ременное и ли постоянное и зменени е местополож ени я ресурса, запроснеобслуж ен • 4 – ош и бка в запросе • 5 – ош и бка сервера Структура полей заголов ка такаяж е, какв запросекли ента. У казы в аю тсяи мяи номерв ерси и сервера, в ремя в секунд ах с момента созд ани я ресурса, спи сок метод ов , д опусти мы х д ляд анного ресурса, MIME-ти п д анны х, сод ерж ащ и хсяв отв етеи д р.[3] Специ фи каци яMIME (Multipurpose Internet Mail Extension – многоцелев оепочтов ое расш и рени е И нтернет) первоначально пред назначалась д ля перед ачи разли чны х форматов д анны х в состав е электронны х пи сем, но и спользуется такж е и в WWW. Д анны еобозначаю тся: т ип/по дт ип. При меры : text/html, image/gif, image/jpeg, audio/midi, audio/x-wav video/avi, video/mpeg, application/msword и т.п. 1.5. Web-сер вер ы
Web-сервер – это программа, функци они рую щ ая на компью тере, пред остав ляю щ ем Internet-ресурсы . К ли ент (браузер) и Web-сервер обмени в аю тся по протоколу HTTP. За Web-сервером станд артно закреплен порт с номером 80. Св ои ресурсы серверхрани т в си стеме каталогов , при чем некоторы е каталоги (в и ртуальны е) могутбы ть разнесены в пространств е и наход и ться на разли чны х логи чески х и ли сетев ы х д и сках. Web-серверы разли чаю тся, преж д е в сего, над еж ностью , устой чи в остью ко в злому и коли честв ом под д ерж и в аемы х Internet-технологи й (CGI, ASP, ISAPI и пр.). В состав операци онны х си стем Windows NT/2000 и ли XP в ход и тмощ ны й полнофункци ональны й серверInternet Information Services (IIS). Е го усеченны й в ари антPersonal Web Server (PWS) пред назначен д ля работы в Windows 95/98. Ш и роко при меняетсясерверApache, в ерси и которого сущ еств ую ткакд ляUnix, таки д ляWindows. В состав еHTML-ред акторов FrontPage и мею тсясв ои д остаточно просты есерверы , в полнепри год ны ед ляцелей обучени я. К акобращ аться кWeb-серверу? Е сли сервернаход и тсяна д ругом компью тере В аш ей локальной сети , неяв ляю щ и мся частью Internet, то в качеств е ад реса в браузере мож но указать ли бо сетев ое и мя компью тера (см. в клад ку М ой компью тер-Св ойств а/Сетев ая и д енти фи каци я), ли бо IP-ад рес его сетев ого и нтерфейса в локальной сети , напри мер, http://c1r214n09 и ли http://196.168.18.9. М ож но просто указы в ать c1r214n09 и ли 196.168.18.9. Е сли компью терссерв ером в ход и т в Internet, то след ует указы в ать его IP-ад рес, пред остав ленны й пров айд ером Internet и ли соотв етств ую щ и й ему д оменны й ад рес.
11
Е сли сервернаход и тсяна В аш ем компью тере, то локально (сэтого ж екомпью тера) кнему мож но такж е обрати ться, указав в ад ресной строке браузера специ ально пред назначенноеи мя http://loс alhost и ли ад рес http://127.0.0.1. Э ти м ад ресам соотв етств уетнекотораякорнев аяпапка на ж естком д и скесервера. Д ля IIS (и ли PWS) это D:\Inetpub\wwwroot. Браузероты ски в аетв корнев ой папкесервера с т р аницу по ум о л чанию - файл default.html (д ляIIS) и ли фай л index.html (д ля Apache) и откры в ает его. В прочем, в настройках сервера и мя страни цы по умолчани ю мож но легко и змени ть. Разработчи ку сайтов настоятельно рекоменд уется в нутри HTML страни ц указы в ать не абсолю тны е URL-ад реса, форматы которы х при в ед ены в ы ш е, а относи тельны еад реса ресурсов в д ерев екаталогов серв ера, след уяобщ и м прав и лам DOS. Э то и збав и т разработчи ка от многи х проблем при переи менов ани и сервера и ли переносе сай та на серверс д руги м д оменны м ад ресом. Т ем более неразумно указы в ать полны е пути к файлам, напри мер, d:\inetpub\wwwroot\page.htm. Н апри мер, д лясозд ани яв файлеindex.htm ги перссы лки на файл page2.htm, наход ящ и й сяв том ж екаталоге, след уетзапи сать Гиперссылка ,
а на файл page3.htm в под каталоге SUBCAT Гиперссылка .
Д лязапуска скри пта D:\inetpub\scripts\prog.exe и з файла D:\inetpub\WWWroot\Index.htm в место строки Гиперссылка
в файл Index.htm лучш езапи сать Гиперссылка .
2. Пу бли ка ци я ба з да н н ы х в Internet 2.1. Ба зо вы етехн о ло ги и
Программы форми ров ани я акти в ны х Web-страни ц, в заи мод ейств ую щ и е с базами д анны х, мож но услов но разд ели ть на д в е группы : программы , в ы полняю щ и еся на стороне кли ента, и программы , в ы полняю щ и еся на стороне серв ера. Сред и перв ы х ш и роко при меняю тся Java-апплеты , обеспечи в аю щ и е эффекти в ны й уд аленны й д оступ кБД благод арятехнологи и JDBC [3]. В послед неев ремяпопулярны «ги бри д ны е» под ход ы ASP и PHP, суть которы х состои т в разд елени и программного код а, запи санного на HTML-страни це на кли ентскую и серверную части . К ли ентская часть в ы полняется в сред е браузера и форми рует, в основ ном, пользов ательски й и нтерфейс при лож ени я, а помеченная специ альны ми тегами серверная часть в ы полняется на серв ере и отв ечаетза д оступ кбазам д анны х [7].
12
Сред и собств енно серверны х при лож ени й особое место зани маю т CGIтехнологи и , и стори чески ранее д руги х сформи ров ав ш и еся и получи в ш и е ш и рокое распространени е. В частности , на основ е CGI функци они рует популярней ш ая сред а Perl. Специ фи каци я CGI (Common Gateway Interface) яв ляется станд артом в заи мод ейств и я Web-сервера и в неш ней при клад ной программы . Т аки епрограммы , назы в аемы е CGI-с кр ипт ам и и ли шл юзам и, в заи мод ейств ую тссерверами баз д анны х, электронны ми табли цами и пр. и перед аю тсерверу Web-страни цы , сформи ров анны е и ми д и нами чески . Ш лю з запускается Webсервером (см. ри с.) и при ни мает от него и нформаци ю через переменны е окруж ени я, форми руемы есервером (если и спользуется метод GET) и ли через станд артны й в ход ной поток(метод POST). О тв етсерв еру (д и нами чески сформи ров анны й HTML-д окумент, сод ерж ащ и й и нформаци ю и з базы д анны х) перед ается через станд артны й в ы ход ной поток. Д алеесерверпереправ ляетего по протоколу Http на кли ентскую маш и ну. К л и ент
С ервер
Internet Браузер
HTTP
Вх. п о то к,
Webп ерем енные сервер о круж ени я
Вых. п о то к
CGIскри п т
SQL зап ро с
С ервер б аз д анных
Н аб о р д анных
И нформаци яш лю зу перед аетсяв след ую щ ей форме: И м я1=значение1&И м я2=значение2 … , Гд е им я – и мя переменной и з оператора HTML FORM, значение – еереальное значени е. В зав и си мости от метод а перед ачи запроса, указанного в FORM, эта строка яв ляется частью URL (метод GET) и ли в ход и т в тело Http-запроса (метод POST). В первом случаесерв ерперед аетстроку скри пту через переменную окруж ени яQUERY_STRING, в о в тором – через станд артны й потокв в од а. Перечень переменны х окруж ени ясм. в При лож ени и . Д ля перед ачи отв ета серверу скри пт в ы в од и т в в ы ход ной поток(с помощ ью оператора write) a) заголов ок, б) пустую строку, в ) HTML-д окумент. Ч ащ ев сего заголов оксостои ти з од ной строки content-type: text/html, в которой указы в аетсяMIME-ти п перед ав аемого сообщ ени я. О чев и д но, простота механи зма CGI позв оляет пи сать ш лю зы на обы чны х язы ках в ы сокого уров ня (С, Fortran, Pascal). Прои ллю стри руем работу CGI след ую щ ей программой на Ф ортране. Программа разби раетполученную отбраузера строку и в озв ращ ает ее кли енту. Н апри мер, при получени и Name="Bill", программа отв ечает "Hello, Bill!'.
13
use portlib ! п о д кл ю чаем станд . б и б л и о теку character*40 s,rmStr,sName, srvName integer i call GETENV ("request_method",rmStr) ! см о три м п ерем енную о круж ени я request_method if (rmStr.eq."POST") then ! есл и м ето д POST read (*,*) s ! чи таем зап ро с со станд артно го устро йства вво д а else if (rmStr.eq."GET") then ! есл и м ето д GET CALL GETENV ("query_string",s) ! чи таем зап ро с и з п ерем енно й о круж ени я query_string end if i=scan(s,'name=')+4 ! Н ахо д и м но м ервхо ж д ени я п о д стро ки п о сл е name= sName= s(i:len(s)) ! Выд ел я ем п о д стро ку if (sName(1:1).eq.'%') then ! т.к. в URL-ад ресе русски е б уквы зам енены ! на %ко д call TransCode (Sname,s) !п ереко д и руем русски е б уквы в о б ычно е ! п ред ставл ени е sname=s end if sName='Hello, ' //sname(1:len_trim(sname)) // '!' ! Фо рм и руем о твет и нап равл я ем на станд артно е устро йство выво д а write(*,*) 'content-type: text/html' ! станд артный заго л о во к write(*,*) ! п устая стро ка write(*,*) sname ! С о д ерж ани е о твета ! В закл ю чени е карти нка write (*,*) 'Это я: ' write(*,*) '' end subroutine TransCode (sName,sRes) ! Переко д и ро вка implicit none character*40 sRes, sName ! вхо д - sName, резул ьтат - sRes character*2 s2 integer x,i,k,l i=1 k=1 sres='' ! О чи стка стро ки (в Fortran'е все м асси вы п еред аю тся п о ссыл ке) l=len(sName) ! Дл и на стро ки с о тсеченным и хво сто вым и п ро б ел ам и do i=1,l,3 ! Про см о трстро ки if (sName(i:i)=='%') then ! есл и не % s2=sName((i+1):(i+2)) read (s2,'(z3)') x ! п рео б разо вани е чи сл а и з шестнад цатери чно го sres(k:k)=char(x) ! в д еся ти чно е k=k+1 end if end do end
Д лятести ров ани япри мера помести те откомпи ли ров анны й файл fp.exe в папку d:\inetpub\scripts, фай л pic.jpg в папку d:\inetpub\wwwroot\images и набери тев ад ресной строкебраузера http://localhost/scripts/fp.exe?name=Bill
14
При мерпод готов лен спомощ ью компи лятора Compaq Visual Fortran 6.5. К ак в и д и те, д аж е в простейш ем случае под обное ни зкоуров нев ое программи ров ани етруд оемко и требуетд етального знани япротоколов .
2.2. Internet-пр о гр а м м и р о ва н и е ср едства м и Delphi
В пред ы д ущ ем при мере при ход и лось «в ручную » программи ров ать в заи мод ейств и есервера и ш лю за. В Delphi д ляреш ени яэти х зад ачсущ еств уетнесколько специ али зи ров анны х компонентов , располож енны х на страни це Internet пали тры компонентов . Сред ств а Delphi, в есьма уд обны е д ля созд ани я небольш и х Internet-при лож ени й , и спользую тся сейчас реж е, чем таки е и нструменты , как Perl, PHP, ASP, но и мею т, по мнени ю ав тора, несколько несомненны х преи мущ еств . В о-первы х, программы на Delphi легко и нтегри рую тся с хорош о проработанны ми технологи ями Borland д ля работы с серверами баз д анны х Interbase, Oracle и д р. (Зд есь могут и cпользов аться какуни в ерсальны е мед ленны е BDEкомпоненты [2,6], таки специ али зи ров анны е бы строд ейств ую щ и е компоненты , построенны ена базеAPI многи х серверов [7].) Д лясрав нени я, популярны й скри птов ы й язы к PHP и спользуется чащ е в сего с маломощ ны м сервером MySQL, в котором отсутств ую тмехани змы транзакци й, управ лени я ссы лочной целостностью и д руги е механи змы , обойти сь без которы х мож но ли ш ь в небольш и х проектах. Т ехнологи и ASP и ASP.NET ори енти ров аны преи мущ еств енно на СУ БД фи рмы Microsoft (MS Access и MS SQL Server). В о-в торы х, появ лени е в ерси и сов мести мой с Delphi сред ы программи ров ани я Kylix д ляработы в Unix, откры в аетнов ы еперспекти в ы технологи ям Borland, если при нять в о в ни мани ераспространенность серв еров Unix в Internet. В -третьи х, Internet-компоненты яв ляю тся д ля программи ста на Delphi наи более бы стры м и эффекти в ны м способом осв оени я программи ров ани я д ля Internet, промеж уточны м этапом ксозд ани ю крупны х и нформаци онны х си стем на основ еJava и ли Microsoft .Net. Рассмотри м метод и ку при менени я компонентов Delphi на при мере созд ани я фрагмента и нформаци онного сайта фи рмы , торгую щ ей компью терны м оборуд ов ани ем. Д ля работы необход и мо установ и ть на компью терлю бой Web-сервер, напри мерIIS, Personal Web Server, FrontPage Server. В есьма полезен, но необязателен HTML-ред акторнапод оби еFrontPage 98 и ли FrontPage 2000. 1) В оспользов ав ш и сь станд артны ми сред ств ами InterBase, созд айте табли цу Specification со след ую щ ей структурой: CREATE TABLE SPECIFICATION ( NUM INTEGER NOT NULL PRIMARY KEY, Перви чны й клю ч BRAND CHAR(10), Т оргов аямарка
15
MODEL CHAR(20), Н азв ани емод ели PRICE INTEGER, Ц ена $ DIAG INTEGER, Размертрубки по д и агонали , в д ю ймах TUBE_TYPE CHAR(15), Т и п трубки MAX_RESOLUTION CHAR(12), М акси мально д опусти моеразреш ени е REFFRESH_RATE INTEGER, М акс. частота обнов лени я, Гц SECURITY CHAR(6), Станд артбезопасности URL CHAR(20), Сайтфи рмы -прои зв од и теля COMMENT BLOB SUB_TYPE 1 SEGMENT SIZE 80, К омментари й PHOTO BLOB SUB_TYPE 2 SEGMENT SIZE 80 Ф ото ) Зареги стри руйтеали асMonitors. 2) О ткройте нов ы й проектFile-New/Web Server Application. Появ и тся д и алогов оеокно
в котором отметьтеCGI Stand-alone executable. К акой в ари ант лучш е в ы брать? И зв естны й нед остатокCGI-программ (порож д ени е при каж д ом обращ ени и ксерверу нов ого процесса) д ля учебны х целей неи меетособого значени я. ISAPI-программы , реали зуемы ев в и д ед и нами чески компонуемы х би бли отек, и спользую тAPI сервера – «оболочку» над CGI. О чев и д но, д и нами чески е би бли отеки ISAPI более уд обны , таккакобеспечи в аю т эффекти в ны й сов местны й д оступ многи х пользов ателей. Н о метод и ка и х созд ани яни чем неотли чаетсяотCGI, а отлад ка яв ляетсяболееслож ной . После в ы бора ти па проекта откроется Web-мод уль (под обны й и зв естному В ам Data-мод улю ), в котором размести теслед ую щ и екомпоненты , см. ри с.
16
К омпоненты ppHeader, ppFooter: TPageProducer пред назначены д ля перед ачи серверу прои зв ольного текста в в и д е HTML-д окумента. Т екстмож но прочи тать через метод function Content: String. В д анном случаеони буд ут сод ерж ать общ и й д ля в сех страни ц заголов оки зав ерш аю щ ую часть соотв етств енно. К омпонент dstMon: TDataSetTableProducer заполняет HTMLд окументи нформаци ей, и зв леченной и з набора д анны х (TTable и ли TQuery), и перед ает его серверу. В д анном при мере – это часть табли цы с краткой и нформаци ей о мони торе. К омпонент ав томати чески пред став ляет результат в в и д етабли цы , св ойств а которой легко настраи в аю тсяв и зуально. Прои зв ольная и нформаци я (заголов очная и зав ерш аю щ ая части страни цы ) в клю чается в д окументчерез св ойств а Footer и Header: Tstrings. К омпонент dspDetail: TdataSetPageProducer под обен компоненту TPageProducer, но форми руемы й д окументмож етсод ерж ать специ альны е теги , которы еав томати чески заменяю тся на од нои менны еполятекущ ей запи си св язанного набора д анны х. Н апри мер, тег заменяется на поле Num набора д анны х. Е сли од нои менны х полей нет, то замену след ует пропи сать «в ручную » в обработчи кесобы ти й OnHTMLTag. Н и ж е этот компонент и спользуется д ля перед ачи серверу графи ческой и текстов ой и нформаци и о мони торе. О тв ет серв еру перед ается через св ойств о content: String объекта Response: TResponse, д ляэтого необход и мо в ы зв ать метод function content: string
17
компонента, напри мер, Response.Content:=DstMon.Content. 3) Н астройтекомпоненты след ую щ и м образом. TdataBaseName: Name DataBase1 AliasName Monitors DataBaseName Db1 LoginPromt
False
У казани е: при настройкесв ойств а Params укаж и те и мяпользов ателяи пароль. TTable: Name DataBaseName TableName
TbMon Db1 Specification
У казани е: в ы зов и те ред акторполей и созд айте стати чески е поля с осмы сленны ми заголов ками : ти п Э Л Т , макси мальнаячастота обнов лени яи т.д . TPageProducer: Name HtmlDoc
PpHeader Мониторы
TPageProducer: Name HtmlDoc
PpFooter
(С) Designed by Vasya Pupkin
TQuery Name DataBaseName
QrDetail Db1
SQL
SELECT * FROM specification WHERE Num=:Num
Params[0].value
0
Params[0].type
Integer
У казани е: в ы зов и те ред актор полей , созд айте «стати чески е» поля BRAND, MODEL, DIAG, COMMENT, PHOTO, установ и те д ля ни х русски е заголов ки (М арка, М од ель и т.п.) в св ойств естати ческого поляDisplayLabel. TdataSetTableProducer: Name
DstMon
DataSet
TbMon
В контекстном меню TdataSetTableProducer в ы зов и теResponse Editor:
18
Н аж ми те кнопку Add All Fields (в торая справ а в в ерху), что при в ед ет котображ ени ю в сех полей табли цы . Э ти поля появ ятся в окне браузера. Т аккакВ ы не забы ли указать русски е назв ани я при созд ани и стати чески х полей, то и менно они появ ятся в заголов ке табли цы . Ч тобы не загромож д ать окно ли ш ней и нформаци ей , уд али те поля PHOTO и COMMENT (прав ая кнопка мы ш и , пункт контекстного меню Delete). Сод ерж и моеэти х полей буд етв ы в од и тьсяпо отд ельному запросу спомощ ью компонентов qrDetail и dspDetail. Замени м сод ерж и мое ячейки табли цы с назв ани ем М од ель (ячейка споряд ков ы м номером 1) ги перссы лкой, щ елкнув по которой мож но перейти на страни цу с более под робной и нформаци ей о мони торе. В став и м такж еги перссы лку с Web-ад ресом фи рмы в ячейку сномером 8. Д ляэтого созд ад и м обработчи ксобы ти й OnFormatCell компонента (д анное собы ти ев озни каетпри заполнени и ячейки табли цы и нформаци ей CellData): procedure TWebModule1.DstMonFormatCell(Sender: TObject; CellRow, CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs, CellData: String); begin if (CellRow>0) and (CellColumn=8) then CellData:= ''+CellData+''; if (CellRow>0) and (CellColumn=1) then CellData:=''+CellData+''; end;
З а м еча н и е 1. О брати те в ни мани е на послед ни й оператор: форми руется ги перссы лка, запускаю щ ая скри пт с в ари антом /info и с параметром Num, сод ерж ащ и м текущ еезначени еперви чного клю ча.
19
TdataSetPageProducer: Name
DspDetail
Dataset
QrDetail
HTMLDoc
Фирма-производитель: | |
Модель: | |
Диагональ (дюймов): | |
| |
Зад ача д анного компонента – в ы д ача страни цы спод робной и нформаци ей о тов аре, в клю чаю щ ей пояснени яи фотографи ю - реш аетсяспомощ ью его св ойств а HTMLDoc. Зд есь указы в аю тся лю бы е необход и мы е теги . В д анном конкретном случае форми руется табли ца и з трех строки д в ух столбцов . В место тегов буд ут под став лены значени я од нои менны х столбцов текущ ей запи си табли цы . О д нако под станов ку Memo-полей и графи чески х полей необход и мо обработать программно. Д ляэтого напи ш ем след ую щ и й обработчи ксобы ти й. procedure TWebModule1.dspDetailHTMLTag(Sender: TObject; Tag: TTag; const TagString: String; TagParams: TStrings; var ReplaceText: String); begin // TagString – содержимое специального тега, // ReplaceText – то, что вместо него подставляется with qrDetail do begin if TagString='Comment' then ReplaceText:=FieldByName('Comment').asString; if TagString='Photo' then // Вставляем рисунок ReplaceText:= ''; end; end;
4) След ую щ и й этап – д и спетчери заци я скри пта. Зд есь необход и мо указать в се в ари анты отв ета в зав и си мости от значени я параметра PathInfo («д ейств и е» и ли «в ари антд ейств и я» ), перед ав аемого в запросе.
20
Щ елкнем прав ой кнопкой в лю бом местеWeb-мод уляи в ы зов ем ред акторд ейств и й – Action Editor. Д обав и м послед ов ательно четы ре д ей ств и я, наж и мая кнопку Add New (крайняялев аяв окнеред актора). С помощ ью и нспектора объектов установ и м св ойств а д ейств и й, какпоказано на ри сунке.
Д ей ств и я(Actions) яв ляю тсясв ойств ом Web-мод уляи образую тколлекци ю property Actions: TWebActionItems;
К лассTwebActionItems сод ерж и тсв ойств а property Items[Index: Integer]: TWebActionItem; default;
св ой ств а и собы ти якоторы х необход и мо зд есь опред ели ть через и нспектор объектов . property PathInfo: string;
О пред еляетназв ани е д ей ств и я, перед ав аемоечерез URI http://адрес/путь/скрипт /pathinfo?запрос
property Default: boolean У казы в ает, д олж но ли д анноед ейств и еоб-
property Enabled: Boolean;
рабаты в ать лю бой запрос, которы й необработан д руги м д оступны м д ейств и ем У казы в ает, мож етли д ейств и еотв ечать на сообщ ени язапроса HTTP ссоотв етств ую щ и ми MethodType и PathInfo
property Name: string;
И мякомпонента
property MethodType: TMethodType;
О пред еляетспособ в ы полнени яHTTPзапроса - GET, POST и ли д р. К омпонент, опред еляю щ и й сод ерж ани еотв ета Request.Content по д анному д ейств и ю
property Producer: TCustomContentProducer;
Е сли в послед нем св ойств еуказан экземпляркомпонента-прод ю сера, напри мер dstMon, то это при в ед ет к ав томати ческому при св аи в ани ю Response.Content:=DstMon.Content. Е сли св ойств о Producer не при св оено, то конструкци ю Response.Content:=DstMon.Content над о запи сать яв но в обработчи кесобы ти й OnAction объекта TwebActionItem.
21
О пред ели теобработчи ки собы ти й: • OnAction д ляд ейств и я waDefault procedure TWebModule1.WebModule1waDefaultAction(Sender: Tobject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin Response.Content := ppHeader.Content+ 'Недопустимый запрос!' + ppFooter.Content; end;
• OnAction д ляд ейств и яwaStart (д ейств и е, форми рую щ ее основ ную табли цу): procedure TWebModule1.WebModule1waStartAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin tbMon.open; ScriptName:=Request.Scriptname; Response.Content:=ppHeader.Content+dstMon.Content +ppFooter.Content; end;
Переменную ScriptName: string опи ш и текакглобальную по отнош ени ю кобработчи кам (в началесекци и реали заци и мод уля). В этой переменной буд ет храни тьсяи мяCGI-программы (см. при лож ени е). Вни м ани е! Ч тени еи з объекта Request д олж но прои сход и ть раньш е, чем в ы зов метод а Content (неочев и д наяи нед окументи ров аннаяособенность). • OnAction д ляд ейств и яwaInfo (д ейств и е, форми рую щ ее табли цу с д ополни тельной и нформаци ей): procedure TWebModule1.WebModule1waInfoAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin with qrDetail do begin Close; ParamByName('Num').AsFloat:= StrToFloat(Request.QueryFields.Values['Num']); Open; end; Response.Content:= ppHeader.Content+dspDetail.Content+ppFooter.Content; end;
З а м еча н и е 2. Н айд и тев ы ш еЗ а м еча н и е 1 о том, какскри пту перед ав ался номермони тора NUM. В д анном обработчи кестрока ParamByName('Num').AsFloat:= StrToFloat(Request.QueryFields.Values['Num']);
при ни маетэтотномер(он храни тсяв св ойств еQueryFields объекта Re-
22
quest) и заноси тего в од нои менны й параметрSQL-оператора SELECT * FROM specification WHERE Num=:Num,
в озв ращ аю щ его серверу, а затем и кли енту под робную и нформаци ю о в ы бранном мони торе. • OnAction д ляд ейств и я waImage (перед ача графи ки и з базы д анны х [1]): procedure TWebModule1.WebModule1waImageAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var jpg: TJpegImage; s: TMemoryStream; B: TBitMap; begin with qrDetail do begin Close; ParamByName('Num').AsFloat:= StrToFloat(Request.QueryFields.Values['Num']); Open; end; try Jpg:=TJpegImage.Create; B:=TBitMap.Create; B.Assign(qrDetailPhoto); Jpg.Assign(B); // Преобразуем формат BMP в JPEG S:=TMemoryStream.Create; // Создаем поток B.SaveToStream(S); // Сохраняем картинку в поток S.Position:=0; Response.ContentType:='Image/jpeg'; Response.ContentStream:=S; // Передаем клиенту finally jpg.Free; B.Free; end;
В се в ы ш епри в ед енны е обработчи ки сод ерж ат параметры Request: TwebRequest и Response: TwebResponse. Первы й и з ни х сод ерж и т HTTP-запрос кскри пту и д ругую и нформаци ю о кли енте и сервере, в зятую и з переменны х окруж ени я. Т акая и нформаци я в аж на при созд ани и программы , поэтому она при в ед ена в при лож ени и . В торой объектсод ерж и тотв етскри пта HTML-текст, перед ав аемы й серверу. Послекомпи ляци и проекта скопи руйтеи сполняемы й фай л monitorov_net.exe в папку Web-сервера D:\InetPub\Scripts и ли в д ругую папку сервера, д оступ ккоторой помечен «В ы полнени е» , см. ри сунок. Н и когд а не д елайте папку д оступной д ля чтени я и не копи руйте проект в корнев ую папку сервера: при обращ ени и кскри пту в место в ы полнени я он буд ет скопи ров ан на маш и ну-кли ентна рад ость хакеру. Л учш есразу (д о компи ляци и ) указать папку D:\InetPub\Scripts в опци и Output Directory проекта в Delphi.
23
Ч тобы лучш е скры ть местонахож д ени е скри пта, созд ав ай те в и ртуальны е каталоги . Д ля этого в полеК аталог в в ед и теспеци фи каци ю сущ еств ую щ его каталога, напри мер, F:\Ivanov\MyFolder, в поле псев д они мы – и мя MyFolder. В и ртуальны й каталог MyFolder буд ет в и д ен в си стеме каталогов сервера, и кнему мож но обращ атьсяспомощ ью ад реса http://localhost/MyFolder/им я_ф айла. Д ля тести ров ани я программы набери те в ад ресной строке браузера http://localhost/scripts/monitorov_net.exe . ПараметрPathInfo зд есь неуказы в ается, поэтому в скри пте сработает обработчи к OnAction д ля д ейств и я waStart, у которого св ойств о PathInfo пусто.
При в ы боремод ели мони тора запускаетсяскри птсв ари антом info, напри мер, http://localhost/scripts/monitorov_net.exe/info?Num=4, и щ ущ и й в обработчи кесобы ти яOnAction д ляд ей ств и яwaInfo мони торс перв и чны м клю чом Num=4 и форми рую щ и й страни цу:
24
Н емного в и д ои змени м проект, д обав и в в него функци ю пои ска мони торов по запраш и в аемой фи рме-прозв од и телю . Созд айтефайл index.html в корнев ой папкесервера и запи ш и тев него строки , опред еляю щ и еформу в в од а: Поиск по фирмам <SELECT NAME="Firma" SIZE=1> Все фирмы LG Samsung Nec
В программеопи ш и теглобальную переменную Firma: String и созд айте обработчи ксобы ти яOnFilterRecord д ляtbMon: procedure TWebModule1.tbMonFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=UpperCase(TbMonBrand.Value)=UpperCase(Firma); end;
Ф и льтракти в и зи руйтев началеобработчи ка waStartAction: procedure TWebModule1.WebModule1waStartAction(Sender: TObject;
25
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var Otvet: string; begin ScriptName:=Request.Scriptname; with Request do begin // Вспомним анекдот про программиста и стакан if Method='GET' then Firma:=QueryFields.Values['Firma'] else Firma:=ContentFields.Values['Firma'] end; with tbMon do begin close; Filtered:=False; if Firma'ALL' then Filtered:=True; open; if Recordcount>0 then Otvet:=dstMon.Content else Otvet:='Ничего не найдено'; end; Response.Content:=ppHeader.Content+otvet+ppFooter.Content; end;
Т еперь при в ы борена пои сков ой страни цесай та назв ани яфи рмы на серверотправ и тсязапросв и д а http://localhost/scripts/monitorov_net.exe?Firma=LG
26
З а да н и я 1. Д оработайте проект, созд ав хорош о оформленную глав ную страни цу сайта, запускаю щ ую скри пт, с функци ями пои ска по ценов ой группе, параметрам Э Л Т и д р. 2. Созд айте ад ми ни страти в ную страни цу сайта, пред назначенную д ля в в од а и ред акти ров ани я и нформаци и (и спользуйте SQL-операторы Insert и Update). Пред усмотри теаутори заци ю ад ми ни стратора спомощ ью учетного и мени и пароля. 3. РазработайтеInternet-в ари анты при лож ени й баз д анны х, напи санны х В ами на 4 курсе.
Л и тер а ту р а 1. А лександ ров ски й А .Д . Delphi 5.0. Разработка корпорати в ны х при лож ени й. – М .: Д М К , 2000. – 512 с. 2. Д арахв ели д зе П.Г., М арков Е .П. Программи ров ани е в Delphi 7. - СПб.: «BHV-Санкт-Петербург» , 2003. - 794 с. 3. В ей тман В . Программи ров ани ед ляWeb. - М .: «В и льямс» , 2000. –368 с. 4. К омпью терны е сети . При нци пы , технологи и , протоколы / В .Г.О ли фер, Н .А .О ли фер. – СПб: «Пи тер» , 2000. – 672 с. 5. БремнерЛ ., И зи Э ., Сервати О . Intranet. Би бли отека программи ста. – М н.: “Попурри ”, 1998. – 512 c. 6. Разработка при лож ени й баз д анны х в сред е Delphi. Ч асть 1. / Сост.: В .Г.Руд алев , Ю .А .К ры ж анов ская; В оронеж . гос. ун-т- В оронеж , 2002. – 59 с. 7. Разработка при лож ени й баз д анны х в сред е Delphi. Ч асть 2. / Сост.: В .Г.Руд алев , Ю .А .К ры ж анов ская; В оронеж . гос. ун-т- В оронеж , 2003. – 38 с. Пр и ло ж ен и е1. К онструкци и язы ка HTML. Н и ж е при в од ятся кратки е справ очны е св ед ени я по наи более часто и спользуемы м конструкци ям язы ка. Болеепод робноеопи сани еHTML см. в [4,6]. Т ег
О пи сани е
<TITLE>Загл ав ие
Строка, которая отображ ается в заголов ке окна браузера
Текс т гипер с с ыл ки
Ги перссы лка д ляпереход а по указанному ад ресу
В став ка в д окументфай ла си зображ ени ем, наход ящ егося по указанному ад ресу. Е сли ш и ри на и в ы сота указаны (в пи кселах и ли в процентах от размера окна браузера), и зображ ени е растяги в а-
27
етсяи ли сж и мается
Текс т абзаца
Т екст формати руется в в и д е абзаца с указанны м ти пом в ы рав ни в ани я (по лев ому краю , по прав ому краю , по центру). А бзацы отд еляю тся д руг от д руга ув ели ченны м меж строчны м и нтервалом
т екс т заго л о в ка
Заголов ок1-го уров ня (самы й крупны й). А налоги чно опи сы в аю тсязаголов ки H2..H6
т екс т , т екс т , т екс т
Т екст в ы д еляется ж и рны м ш ри фтом, курси в ом, под черки в ани ем
Текс т
Д ля текста зад ается размери цв ет ш ри фта. Ц в ет зад аетсяли бо константами red, green и д р., ли бо в ш естнад цатери чном пред став лени и #RRGGBB.
о пр едел ения пункт о в и ли
Н умеров анны еи ли марки ров анны еспи ски
т екс т пункт а О пред елени япункта спи ска
Перев од строки
®
Зареги стри ров анны й тов арны й знак
©
Знакав торского прав а
 
Пробел, неуд аляемы й браузером
О пред еляеттабли цу. Сод ерж и топред елени яв сех строк.
О пр едел ения ячеек
О пред еляетстроку табли цы . Сод ерж и топред елени яв сех ячеек.
.. | О пред елени е ячей ки табли цы . Сод ерж и т текст, теги , ги перссы лки и т.п.
О пр едел ения эл ем ент о в в в о да
О пред еляет форму в в од а д анны х. У казы в аю тся URL-ад рес серверного при лож ени я, обрабаты в аю щ его д анны е и метод пересы лки д анны х на серв ер(GET и ли POST)
28
О пред еляетэлементв в од а. Значени ями TYPE яв ляю тсяTEXT (строка ред акти ров ани я), PASSWORD (строка в в од а пароля), CHECKBOX (в ы клю чатель), RADIO (переклю чатель), SUBMIT (под тв ерж д ени ев в од а и пересы лка д анны х на сервер), RESET (отказ отв в од а и сброс элементов в в од а в начальноесостояни е), IMAGE (и зображ ени е). Д анны есерверу перед аю тсячерез им я, указанноев параметреNAME. Н апри мер, в случае посленаж ати якнопки SUBMIT серверполучи т Firma=LG. Д ляэлементов TEXT параметрVALUE сод ерж и т начальны й текст в строке, д ля SUBMIT и RESET – над пи сь на кнопке. Д ля TEXT указы в ается такж е параметрSIZE=чис л о о т о бр аж аем ых с им в о ло в. Д ля элементов CHECBOX и RADIO значени е параметра VALUE элемента пересы лаетсяна серв ер, если этот элемент отмечен. Параметр CHECKED (значени е не указы в ается) сообщ ает браузеру, что д анны й элементд олж ен бы ть помечен по умолчани ю . Д ля элементов CHECKBOX значени я параметра NAME д олж ны отли чаться, а д ля элементов RADIO, в ход ящ и х в од ну группу, д олж ны сов пад ать. Д ля элементов IMAGE указы в аю тся параметры SRC=”Адр ес изо бр аж ения” и BORDER=т о л щ ина р ам ки. Н а страни це размещ ается и зображ ени е, серв еру перед аю тсякоорд и наты точки , в которой наход и лсякурсормы ш и в моментщ елчка по и зображ ени ю . Э лемент позв оляет строи ть кнопки в в и д е сегменти ров анного и зображ ени я и опред елять, какой и з сегментов бы л в ы бран
<SELECT NAME=им я SIZE=чис л о с т р о к> о пр едел ения с т р о к
Спи сокв в од а, и спользуемы й в нутри формы . ПараметрSIZE сод ерж и тчи сло в и д и мы х строк
29
Текс т
О пред еляет строку спи ска SELECT. У казанны й текст отображ ается в спи ске. Серверу перед ается сод ерж и мое параметра VALUE в ы бранной строки через им я, указанноев параметреName оператора SELECT
М ногострочны й текст
Д ля многострочного текста указы в аю тся параметры ROWS и COLS – размерокна по в ерти кали и по гори зонтали в си мв олах, соотв етств енно
Пр и ло ж ен и е2. К лассTWebRequest. К ласс TWebRequest и нкапсули рует механи зм в ы зов а CGI-при лож ени я. В табли це при в ед ено соотв етств и е св ой ств класса и переменны х окруж ени я, форми руемы х сервером при в ы зов еCGI-при лож ени я. С во йство
Перем енная о круж ени я
О п и сани е
URL: string;
-
И д енти фи катор ресурса, опред еленны й в HTTP-запросе
Host:string;
HHTP_HOST
И мя сервера, и зв леченное и з URL, напри мер, www.vsu.ru
ScriptName: string;
SCRIPT_NAME
И мяскри пта (спутем), и зв леченноеи з URL. Н апри мер, в ад ресе http://www.vsu.ru/lib/finder.exe/info?autor= Gates и мяскри пта lib/finder.exe
PathInfo: string;
PATH_INFO
В ари ант д ейств и я, опред еленны й в запросе. Н апри мер, д ля пред ы д ущ его запроса это /info
Referer: string;
HTTP_REFERER
URI д окумента, и ни ци и ров ав ш его запрос, ад ресотправ и теля. Н апри мер, если ги перссы лка http://www.vsu.ru/lib/finder.exe/info?autor= Gates наход и лась на страни це http://localhost/default.htm, то переменная буд етсод ерж ать послед неезначени е.
From:string;
HTTP_FROM
E-Mail ад ресотправ и телязапроса
30
RemoteHost: string;
REMOTE_HOST
IP-ад ресотправ и теля
Content: string
-
Т екст и нформаци онного запроса при и спользов ани и метод ов POST и ли PUT
ContentFields: TStrings;
-
Пред ы д ущ еесв ойств о в в и д епар И м я=Значение
ContentLength: Integer;
CONTENT_LENGTH
Д ли на запроса в байтах
ContentType: string;
CONTENT_TYPE
В и д Content в соотв етств и и со специ фи каци ей MIME (какправ и ло, Text/html)
Query:sring;
QUERY_STRING
И нформаци оннаячасть запроса. Н апри мер, в запросе http://www.vsu.ru/lib/finder.exe/info?autor= Gates&Name=Bill св ойств о буд етсод ерж ать autor=Gates&Name=Bill
QueryFields: TStrings;
-
Запросв в и д епарим я=значение. Н апри мер, в пред ы д ущ ем случаеэто autor=gates Name=Bill Получи ть значени епо зад анному и мени мож но по и зв естному В ам в екторному св ой ств у Values класса TStrings (см. при меры в текстепособи я)
Method: string;
REQUEST_METHOD Сод ер ж и т метод перед ачи (PUT, GET и ли
UserAgent: string
USER_AGENT
д р.), и спользуемы й кли ентом И нформаци я о кли енте, в клю чаю щ ая назв ани еи в ерси ю браузера.
31
Состав и тели : Руд алев В алери й Геннад ьев и ч А ртемов а Л ю д ми ла Ф ед оров на Ред акторТ и хоми ров а О .А .