8515-1 (588362), страница 3

Файл №588362 8515-1 (Использование Internet/intranet технологий для организации доступа к базам данных) 3 страница8515-1 (588362) страница 32016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Стандартный входной поток;

Командная строка.

Переменные окружения

Ниже приводится значение некоторых переменных, объявленных в стандарте CGI:

CONTENT_LENGTH - значение этой переменной соответствует длине стандартного входного потока в символах;

QUERY_STRING - значение этой переменной соответствует строке символов следующей за знаком "?" в URL соответствующему данному запросу. Эта информация не декодируется сервером.

2. Стандартный вывод

CGI - модуль выводит информацию в стандартный выходной поток. Этот вывод может представлять собой или документ, сгенерированный cgi-модулем, или инструкцию серверу, где получить необходимый документ. Обычно cgi-модуль производит свой вывод. Преимущество такого подхода в том, что cgi-модуль не должен формировать полный HTTP заголовок на каждый запрос.

Вывод cgi-модуля должен начинаться с заголовка содержащего определенные строки и завершаться двумя символами CR (0x10). Любые строки не являющиеся директивами сервера, посылаются непосредственно клиенту. На данный момент, CGI спецификация определяет три директивы сервера:

Content-type

MIME или тип возвращаемого документа. Например:

Content-type: text/html

сообщает серверу, что следующие за этим сообщением данные - есть документ в формате HTML;

Location

указывает серверу, что возвращается не сам документ, а ссылка на него. Если аргументом является URL, то сервер передаст указание клиенту на перенаправление запроса. Если аргумент представляет собой виртуальный путь, сервер вернет клиенту заданный этим путем документ, как если бы клиент запрашивал этот документ непосредственно.

Status

задает серверу HTTP/1.0 строку-статус, которая будет послана клиенту в формате: nnn xxxxx

где: nnn - 3-х цифровой код статуса

ххххх - строка причины

Например: HTTP/1.0 200 OK

Server: NCSA/1.0a6

Content-type: text/plain

<динамически генерируемый текст сообщения3. Стандартный входной поток

В случае метода запроса POST данные передаются как содержимое HTTP запроса и будут посланы в стандартный входной поток. Данные передаются cgi-модулю в следующей форме:

name=value&name1=value1&...&nameN=valueN

где name - имя переменной,

value - значение переменной,

N - количество переменных

На файловый дескриптор стандартного потока ввода посылается CONTENT_LENGTH байт. Так же сервер передает cgi-модулю CONTENT_TYPE (тип данных). Сервер не посылает символ конца файла после передачи CONTENT_LENGTH байт данных или после того, как cgi-модуль их прочитает. Переменные окружения CONTENT_LENGTH и CONTENT_TYPE устанавливаются в тот момент, когда сервер выполняет cgi-модуль. Таким образом, если в результате исполнения формы с аргументом тега FORM - METHOD="POST" сформирована строка данных firm=МММ&price=100023, то сервер установит значение CONTENT_LENGTH равным 21 и CONTENT_TYPE в

application/x-www-form-urlencoded, а в стандартный поток ввода посылается блок данных.

В случае метода GET, строка данных передается как часть URL.

Например

http://host/cgi-bin/script?name1=value1&name2=value2

В этом случае переменная окружения QUERY_STRING принимает значение

name1=value1&name2=value2

4. Аргументы командной строки

СGI-модуль в командной строке от сервера получает:

остаток URL после имени cgi-модуля в качестве первого параметра (первый параметр будет пуст, если присутствовало только имя cgi-модуля);

список ключевых слов в качестве остатка командной строки для скрипта поиска, или чередующиеся имена полей формы с добавленным знаком равенства и соответствующих значений переменных.

Ключевые слова, имена и значения полей формы передаются декодированными (из HTTP-URL формата кодирования) и перекодированными в соответствии с правилами кодирования Bourne shell [12] так, что cgi-модуль в командной строке получит информацию без необходимости осуществлять дополнительные преобразования (рассматривается реализация на Unix-платформе).

Исходя из разницы методов запросов GET и POST, можно определить последовательность действий для обработки входных данных cgi-модуля для разных типов запросов.

I. Для метода GET

Получить значение переменной QUERY_STRING;

Декодировать имена и их значения (учитывая, что все пробелы при декодировании сервером были заменены символом "+" и все символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.);

Сформировать структуру соответствия "имя - значение" для дальнейшего использования в cgi-модуле.

II. Для метода POST

Получить из стандартного входного потока CONTENT_LENGTH символов;

Декодировать имена и их значения (учитывая, что все пробелы при декодировании сервером были заменены символом "+" и все символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.);

Сформировать структуру соответствия "имя-значение" для дальнейшего использования в cgi-модуле.

После формирования структуры "имя-значение" можно приступить к решению задач, ради которых, собственно, создавался cgi-модуль. Следующим важным моментом является динамическое формирование cgi-модулем HTML-документа (оформление результата работы модуля). Например, таблицы выборки из базы данных.

Для этого cgi-модуль должен выдать в стандартный выходной поток заголовок, состоящий из строки:

Content-type: text/html и пустой строки (двух символов CR).

После этого заголовка можно выдавать любой текст в формате HTML.

Как уже говорилось ранее, CGI-скрипт играет роль посредника между Web-сервером и другими видами серверов, в частности с сервером баз данных. В качестве языка CGI-скриптов часто выступает язык Perl [11] (Practical Extraction and Report Language)- интерпретируемый язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Здесь будет освящен вопрос доступа к базе данных Oracle из языка perl.

Это возможно благодаря наличию в свободно-доступной библиотеке Perl-модулей (доступна на http://www.perl.com/CPAN/) пакетов для работы с базами данных: DBI и DBD-Oracle. DBI представляет собой абстрагированный от конкретного SQL-сервера интерфейс-надстройку над интерфейсом DBD-xxxx, который закреплен за конкретным SQL-сервером.

Ниже приводятся описание некоторых функций из пакета DBI:

$dbh = DBI->connect('dbi:Oracle:'.'db_alias', 'db_user', 'db_pwd', {RaiseError => 1});

$dbh->{RaiseError} = 1; # do this, or check every call for errors

- установка соединения с базой данных Oracle

$cursor = $dbh->prepare("SELECT Fie1d, Field2 FROM Table1 ORDER BY Field2");

$cursor->execute;

while (@row = $cursor->fetchrow_array) {

print "$row[0], $row[1] \n";

}

- выполнение запроса к базе данных (значения полей Field1, Filed2 помещаются в массив @row)

my($Field1, $Field2, $Field3);

$cursor = $dbh->prepare("SELECT Field1, Field2, Field3 FROM Table1");

$cursor->bind_columns(undef, \($Field1, $Field2, $Field3));

$cursor->execute;

while $cursor->fetch) {

print "$Field1, $Field2, $Field3 \n";

}

- выполнение запроса к базе данных (значения полей Field1, Field2, Field3 помещаются в переменные $Field1, $Field2, $Field3)

$rc = $cursor->finish;

$rc = $dbh->disconnect;

- закрытие курсора и отсоединение от базы данных.

Рассмотрим реализацию, базирующуюся на Web-сервере Apache для Unix-систем. Для того чтобы Web-сервер мог выполнять CGI-скрипты, написанные на языке perl, файл с perl-программой должен иметь атрибут ⌠исполняемый■. Если файлы с программой расположены в каталоге, отличном от каталога, прописанного в директиве ScriptAlias (обычно cgi-bin) файла конфигурации Web-сервера srm.conf, то дополнительно необходимо создать строку, вида

AddHandler cgi-script .cgi

в файле srm.conf (предполагается, что файлы будут иметь расширение .cgi). После внесения любых изменений в файлы конфигурации Web-сервера, его необходимо перезапустить командой

$ Apache_HOME/sbin/apachectl restart

где Apache_HOME √ каталог, где расположен Web-сервер.

Первой строкой perl-программы должна быть строка, вида

#!/usr/local/bin/perl

задающая путь до интерпретатора языка perl в системе.

4. Приложения технологогии доступа к базам данных через Web

4.1 Реализация информационно-поисковой системы ⌠Библиографический каталог по программированию и базам данных■ с помощью технологии Oracle Web deployment

Ключевым моментом в вопросе реализации системы является выбор инструментальных средств. В качестве СУБД для реализации была выбрана реляционная СУБД Oracle для Windows NT. Это связано с мощностью и гибкостью сервера Oracle как многопользовательского сервера баз данных, а также с широким набором средств разработки для этой системы. Немаловажно также было и то, что Oracle поставляет технологию, называемую Web deployment, которая позволяет легко помещать работающие приложения Oracle в Web.

Согласно технологическому циклу разработки приложений для Web, описанному в главе 3, процесс реализации разбился на подзадачи реализации отдельных частей (на сервере баз данных, на сервере приложений и на клиенте):

Перенос базы данных

Были подготовлены текстовые файлы SQL-сценариев (SQL - Structure Query Language √ базовый язык Oracle [7]), создающие структуру базы данных (см. Приложение). В системе MS Access реализована служебная программа Import, генерирующая файл SQL-сценария с данными из базы данных MS Access. Такой подход делает базу данных легко переносимой, так как она может быть представлена как совокупность текстовых файлов, содержащих SQL инструкции. Для создания структуры базы данных и занесения данных необходимо выполнить эти файлы, работающие в пакетном режиме, с помощью инструментов SQL *Plus (или SQL Worksheet), представляющих собой SQL-консоль Oracle.

Для упрощения процесса переноса базы данных были созданы командные файлы MS-DOS (а для CGI-реализации √ командные файлы Unix), вызывающие утилиту SQL *Plus с необходимыми параметрами.

Настройка сервера приложений

разработка и тестирование формы; В качестве основного инструментария использовался пакет Forms Builder 5.0, входящий в систему разработки Oracle Developer/2000 R2.0. С его помощью была разработана клиентская часть системы (и сгененрирован FMX-файл), работающая в среде Developer/2000 Forms Runtime (см. Приложение).

настройка сервера приложений (создание виртуальных каталогов); В качестве сервера приложений использовался Microsoft Internet Information Server.

запуск и настройка сервера форм;

обеспечение доступа к приложению через сервер приложений (создание ссылки на приложение, регистрация специального пользователя). Был создан пользователь Oracle (с именем Bibl), имеющий право только на чтение данных из таблиц базы данных.

Клиентская часть

В качестве клиентов, были опробованы следующие Web-обозреватели:

Microsoft Internet Explorer 4.0,

Netscape Communicator 4.04 (более ранние версии не рассматривались, в силу того, что они заведомо несовместимы со стандартом JDK 1.1.x).

Корректная поддержка руского языка в Java-апплетах существовала лишь в Microsoft Internet Explorer 4.0 rus, поэтому в качестве клиентской части было решено взять этот обозреватель. Однако, интерфейс с использованием Java является недостаточно эффективным в силу низких скоростных характеристик имеющихся каналов связи, а также недостаточной надежности построенных на основе описаной технологии приложений. Поэтому, для рализации было решено использовать интерфейс на базе CGI, который является более эффективным в данном контексте.

4.2 Реализация информационно-поисковой системы ⌠Библиографический каталог по программированию и базам данных■ с использованием механизма CGI

В данной разработке в качестве Web-сервера выступала машина под управлением ОС Linux и Web-сервером Apache. На этой же машине была установлена СУБД Oracle в объеме клиентской инсталляции (около 30 Мб). Сервер баз данных под управлением СУБД Oracle был установлен на машине с системой Windows NT.

Физически система представляет собой набор CGI-скриптов, написанных на языке perl. Ниже следует описание функциональности каждого скрипта с указанием параметров его вызова.

search.cgi √ скрипт, который выполняет поиск и печатает его результаты в форматированном виде (может передавать управление скрипту card.cgi)

Параметры вызова:

search.cgi?search_string=search_string&search_type=search_type&portion=portion

где search_string √ искомая подстрока (или код записи при поиске по ссылке),

search_type √ тип поиска (1 √ шифр, 2 √ автор, 3 √ название, 4 - ключевое слово, 5 √ тема),

portion √ указатель текущего блока записей относительно всех записей, возвращенных запросом

card.cgi √ скрипт, выводящий информацию по выбранной единице библиографического каталога

Параметры вызова:

Характеристики

Тип файла
Документ
Размер
401,18 Kb
Учебное заведение
Неизвестно

Список файлов ВКР

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее