Лекция 6

Download Report

Transcript Лекция 6

Лекция 6
• Active Server Pages (ASP)
–
–
–
–
–
–
–
–
Основы.
GLOBAL.ASA
Объекты и компоненты.
Объект Application.
Объект Session.
Объект Request.
Объект Response.
Объект Server.
Основы ASP
• Active Server Pages — активные
серверные страницы.
• ASP
сценарий
на
VBScript,
который исполняется на сервере.
Когда
запрашивается
страница,
этот сценарий порождает HTMLтекст.
• Клиент никогда не видит кода, а
только
результирующий
HTML,
который
воспринимает
любая
программа просмотра.
Пример
• Пример демонстрирует
простую ASP-страницу, которая
создает приветствие в
соответствии со временем
суток. В нем текущий час
определяется при помощи кода
Hour(Now), где Now — функция
VBScript, возвращающая
текущий момент времени и
дату.
Пример
• Листинг 1. Простой пример ASP.
<%@ LANGUAGE="VBSCRIPT" %><HTML> <head>
<MEТА HTTP-EQUIV="Content-Type" CONTENT="text/html;
CHARSET=windows-1251">
<TITLE>Simple ASP Example</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF">
<% Dim strGreeting
If Hour(Now) < 12 Then
strGreeting = "Доброе утро!"
ElseIf Hour(Now) > 11 And Hour(Now) < 18 Then
StrGreeting = "Добрый день"
ElseIf Hour(Now) > 17 Then
strGreeting = "Добрый вечер!"
End If %>
<CENTER><H1><%=strGreeting%> </Н1></BODY></HTML>
Особенности
• Код в листинге, окруженный
угловыми скобками и знаками
процента (<%...%>) - серверный
код, который выполняется перед
тем, как страница будет послана
программе просмотра.
• <%@ LANGUAGE="VBSCRIPT" %> - на
каком языке написан сценарий на
данной странице. Можно использовать
JavaScript.
• <%=strGreeting%> - переменной
strGreeting предшествует знак
Файл GLOBAL.ASA.
• В Интернете сложно создать
настоящее приложение.
Взаимодействие программы
просмотра и Web-сервера
представляет собой лишенную
состояния транзакцию, в ходе
которой сервер посылает клиенту
Web-страницу и затем забывает о
его существовании. Когда клиент
запрашивает другую Web-страницу,
сервер ничего не помнит о
Файл GLOBAL.ASA.
• Для определения начала и
завершения — как всего
приложения, так и отдельных
пользовательских сессий — в ASP
используется файл GLOBAL.ASA.
• Он реагирует на четыре ключевых
события: Application_OnStart
(запуск приложения),
Application_OnEnd (завершение
приложения), Session_OnStart
(начало сессии) и Session_OnEnd
(завершение сессии).
Файл GLOBAL.ASA.
• Листинг 2. Файл GLOBAL.ASA.
<SCRIPT LANGUAGE="VBSCRIPT" RUNAT="Server">
Sub Session_OnStart
End Sub
Sub Session_OnEnd
End Sub
Sub Application_OnStart
End Sub
Sub Application_OnEnd
End Sub
</SCRIPT>
Файл GLOBAL.ASA.
• Для обозначения разделов
сценария GLOBAL.ASA содержит
теги <SCRIPT>. Эти теги имеют
особый атрибут RUNAT=Server,
который означает, что
содержащийся в теге код на
VBScript должен исполняться на
сервере, а не на клиенте.
Функционально RUNAT=Server
означает то же, что и сочетания
угловых скобок и знака процента,
используемые для обозначения
Файл GLOBAL.ASA.
• Формулировка,
предложенная
Microsoft, определяет Интернетприложение
как
виртуальный
каталог со всеми его файлами.
• Если пользователь запрашивает
Web-страницу
из
виртуального
каталога под названием Bookstore,
то
тем
самым
он
запускает
приложение
Bookstore,
и
в
GLOBAL.ASA
возбуждаются
события
Application_OnStart
и
Session_OnStart.
Файл GLOBAL.ASA.
• Согласно этому определению с
приложением одновременно могут
работать
несколько
программ
просмотра.
• Событие
Application_OnStart
происходит только один раз: когда
первый пользователь запрашивает
Web-страницу
из
виртуального
каталога.
• Когда страницы из этого каталога
запрашивают другие пользователи,
возбуждается
только
событие
Файл GLOBAL.ASA.
• Для
конкретной
программы
просмотра сессия длится, пока
программа
продолжает
запрашивать
страницы
виртуального каталога.
• Если пользователь не запрашивает
Web-страницы
(из
данного
виртуального
каталога)
на
протяжении
20
минут
(по
умолчанию), сессия завершается,
и
возбуждается
событие
Session_OnEnd.
Объекты и
компоненты.
• VBScript
не
является
полнофункциональным
языком.
Так, в VBScript нет встроенных
функций доступа к данным; не
умеет он и открывать текстовые
файлы.
• Все это и многое другое реализуется
объектами и компонентами ASP.
• ASP-объекты и компоненты — это
компоненты
ActiveX,
подобные
обычным DLL ActiveX.
Объекты и
компоненты.
• ASP-объекты
—
это
элементы
управления ActiveX, которые в коде
на VBScript доступны всегда: их не
нужно создавать явно. В число
объектов ASP входят Application,
Session,
Request,
Response
и
Server.
• ASP-компоненты
это
DLL,
существующие вне структуры ASP.
ASP-компоненты
нужно
явно
создавать
в
коде.
ASP
поддерживает
компоненты
Объект Application.
• Объект Application (приложение)
позволяет создавать переменные
приложения (application variables),
доступные
всем
пользователям
данного приложения. Все, кто
обращается
к
Web-страницам
данного виртуального каталога,
могут
совместно
использовать
любую переменную приложения
определенную для этого каталога.
• В листинге 3 приведен пример
программы,
в
ней
переменная
Объект Application.
• Листинг 3. Объект Application.
<%@ LANGUAGE ="VBScript"%>
<html><head><title>Application Variables</TITLE>
</HEAD><BODY><CENTER>
Эта страница последний раз посещалась:
<%=Application("Time")%>
<% Application.Lock
Application("Time")=Now
Application.UnLock %>
</BODY></HTML>
Объект Application.
• Имя может быть произвольным, а
переменная
может
содержать
любую информацию, будь то число
или текст.
• Такие переменные доступны
нескольким пользователям
одновременно.
• Для разрешения коллизий объект
Application поддерживает методы
Lock и UnLock. Метод Lock
блокирует весь объект Application,
поэтому после изменения
Объект Application.
• Переменные приложения пригодны
лишь для временного хранения
данных, их нельзя использовать
для долговременного хранения.
• Все
данные
в
переменных
приложения уничтожаются, когда
происходит
событие
Application_OnEnd. Так что, если вы
хотите, чтобы они сохранились
после завершения приложения,
позаботьтесь о их переносе в файл
Объект Session.
• ASP поддерживает
переменные для
индивидуального
пользователя при помощи
объекта Session (сессия),
который позволяет создавать
переменные сессии (session
variables).
Sub Session_OnStart
Session("Company")="NewTech"
Session("Email")="[email protected]"
End Sub
Объект Session.
• Переменные
сессии
можно
создавать на любой Web-странице
или в файле GLOBAL.ASA, а
доступны они на любой Webстранице приложения, в котором
эти
переменные
были
первоначально созданы.
• Получить значения переменных
сессии можно, считывая их из
объекта Session. Следующий пример
считывает
переменные
сессии
выводит их в полях ввода:
<FORM><P><INPUT TYPE="TEXT" VALUE=
Объект Session.
• Как ASP запоминает переменные
сессии для каждого пользователя
приложения:
• эти переменные сохраняются на
сервере для каждого клиента.
Программа просмотра получает от
сервера
уникальный
идентификатор,
позволяющий
определить,
какой
набор
переменных кому принадлежит.
Клиент
этот
идентификатор
(Globally Unique Identifier, GUID)
Объект Session.
• Для установки или считывания
времени жизни сессии (в
минутах)
применяется
свойство
Timeout
объекта
Session:
• Session.Timeout=30
• Для
принудительного
окончания
сессии
и
ликвидации
сессионных
переменных применяют метод
Объект Request.
• Для передачи данных серверу
программа просмотра
использует отправку формы
(form submission).
• Данные имеют вид пар
Поле=Значение, отсылаемых
серверу открытым текстом.
• На
сервере
эти
данные
разбирает по полям объект
Request.
Например,
Объект Request.
• Request.Form применяется, когда
данные были отправлены методом
POST и именно этому сценарию.
• Если
для
отправки
данных
используется
метод
GET
или
сценарий вызывается с передачей
параметров в гиперссылке
<A HREF=dat.asp?Name=Tech&[email protected]>
Чтобы отправить данные, щелкните здесь!</A>
• то для разбота данных применяют
свойство Request.QueryString:
<%=Request.QueryString("Name")%>
Объект Request.
• Request.Cookies используются для
извлечения
информации
из
кукисов
(cookies),
отосланных
вместе
с
запросом
строке
пользовательского
агента
программы просмотра.
• Листинг
5
демонстрирует
применение
свойства
ServerVariables для определения
имени компьютера, с которого
клиент вызвал сценарий.
Объект Request.
Определение
компьютера пользователя.
• Листинг
5.
<%@ LANGUAGE="VBSCRIPT"%>
<html><head><title>Server Variables</TITLE>
</HEAD><BODY><CENTER>Вы вошли с компьютера
<%=Request.ServerVariables("Remote_Host")%>
</BODY></HTML>
• Переменные сервера представляют
широкий
круг
информации
о
клиенте и Web-сервере. Доступ к
каждой конкретной переменной
сводится
к
чтению
соответствующей переменной.
Объект Response.
• Фактически
в
комбинации
<%=переменная%> знак равенства
представляет собой сокращенное
обозначение метода Write объекта
Response.
• Следующие
две
строки
кода
эквивалентны:
<%="NewTech"%>
<%Response.Write "NewTech"%>
• Поскольку
объект
Response
используется очень часто, такое
сокращение оправдано.
Объект Response.
• Полезное
свойство
объекта
Response - Expires. Оно задает
время (в минутах) за которое
страница
устаревает.
Если
установить его в нуль, то страница
будет
устаревать
в
момент
загрузки и Internet Explorer не
будет ее кэшировать. Кэширование
сильно влияет на разработку и
может
привести
к
тому,
что
приложение
будет
функционировать неправильно. IE
Объект Response.
• Рассмотрим такой фрагмент кода,
показывающий текущее время и
дату:
<CENTER>Сейчас <%=Now%>
• Когда IE запрашивают страницу с
этим
кодом,
на
сервере
выполняется
сценарий,
и
на
странице
появляется
текущее
время. Однако, если программа
просмотра переходит к другой
странице, а затем возвращается к
этой, со временем, то время не
Объект Response.
• В
листинге
6
приведена
исправленная
версия
примера,
устаревающая
уже
в
момент
загрузки.
• Листинг
6.
Страница,
устаревающая
загрузки.
уже
в
момент
<%@ LANGUAGE="VBSCRIPT"%>
<%Response.Expires=-1%>
<HTML><HEAD><TITLE>Forcing a Page to Expire
</TITLE></HEAD><BODY>
<Н1>Сейчас <%Response.Write Now%>
</BODY> </HTML>
Объект Response.
• Еще один полезный метод
объекта Response - Redirect,
перенаправляющий программу
просмотра на указанный URL:
<% Response.Redirect "enter.asp"%>
Объект Response.
• Кроме
методов
(Write
и
Redirect) и свойства Expires у
объекта
Response
имеется
коллекция (набор однотипных
объектов) Cookies. Создание
элемента коллекции означает
запись теневой посылки на
компьютер
посетителя.
Каждый элемент коллекции
имеет
имя,
одно
или
несколько
значений
и
Объект Response.
• срок жизни (Expires),
• имя
папки
на
сервере,
сценарии из которой имеют
право чтения этой теневой
посылки (Path),
• имя
сервера,
сценарии
которого имеют право чтения
этой
теневой
посылки
(Domain).
Объект Response.
• Обязательным
параметром
теневой
посылки
является
только
ее
имя.
Остальные
параметры можно не указывать.
В этом случае:
• Отсутствие значения приводит к
стиранию теневой посылки с
компьютера посетителя;
• Отсутствие
срока
жизни
приводит к устареванию теневой
Объект Response.
• Отсутствие
имени
папки
означает разрешение чтения
теневой посылки сценариями
из текущей папки;
• Отсутствие
имени
сервера
означает разрешение чтения
теневой посылки сценариям
любого сервера (если они
знают имя теневой посылки).
Объект Response.
• Приведем пример записи теневой
посылки:
• Response.Cookies("visit")("Value “) =
data
• Response.Cookies("visit").Expires =
Date + 365
• Response.Cookies("visit").Path= " / "
• Response.Cookies("visit").Domain=
Request.ServerVariables(“SERVER_N
AME “)
Объект Server.
• Объект Server (сервер) содержит
функции, никак не связаны между
собой.
• Самая важная функция объекта
Server — это метод CreateObject,
который
создает
экземпляр
компонента ActiveX.
• Аргументом метода CreateObject
служит
ProgID
(программный
идентификатор)
требуемого
компонента ActiveX.
• ProgID — это содержательное имя
Объект Server.
• Следующая строчка показывает,
как
при
помощи
CreateObject
создать экземпляр компонента с
ProgID Excel.Sheet.
Set MyObject =
Server.CreateObject("Excel.Sheet")
• Другим полезным методом объекта
Server
является
MapPath,
возвращающий фактический путь,
соответствующий
заданному
виртуальному каталогу.