This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
М И Н И СТ Е РСТ В О О БРА ЗО В А Н И Я РО ССИ Й СК О Й Ф Е Д Е РА Ц И И В О РО Н Е Ж СК И Й ГО СУ Д А РСТ В Е Н Н Ы Й У Н И В Е РСИ Т Е Т
Р азраб о тка 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 в место строки Гиперссылка
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> заменяется на поле 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
Фирма-производитель:
<#Brand>
Модель:
<#Model>
Диагональ (дюймов):
<#Diag>
<#Photo>
<#Comment>
Зад ача д анного компонента – в ы д ача страни цы спод робной и нформаци ей о тов аре, в клю чаю щ ей пояснени яи фотографи ю - реш аетсяспомощ ью его св ойств а 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 в корнев ой папкесервера и запи ш и тев него строки , опред еляю щ и еформу в в од а:
В программеопи ш и теглобальную переменную 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