Internet технологии Основная страница    Литература    Тематические ссылки
(конспект)
 Работа в Internet Основы HTML Web-дизайн Web-мастеринг
Введение
E-mail
Поиск информации
FTP
Введение
Ссылки и иллюстрации
Таблицы и списки
Фреймы и формы
Введение
DreamWeaver

HomeSite
Каскадные таблицы стилей CSS
Photoshop 5.5 для Web-дизайна
AdobeImageReady 2.0
Ulead GifAnimator 2.0
JavaScript
CGI
IIS 4.0
>> ASP. VBScript
Работа с БД
Perl
Java
Курс: Web-мастеринг
Active Server Pages (ASP). VBScript. Примеры
1. Введение
2. Основы синтаксиса языка VBScript
   2.1. Операции и операторы
   2.2. Функции
   2.3. Подпрограммы
3. Объекты ASP
   3.1. Server
   3.2. Объект Request
   3.3. Объект Response
4. Как написать собственную программу. Примеры
5. Компоненты ASP. Примеры.

.. ../ /

1. Введение.

Технология ASP - набор взаимосвязанных объектов, которые так же обладают своими методами и свойствами. Эти объекты являются специфическими, они ориентированы на взаимодействие с сервером из браузера. Со стороны сервера объекты ASP могут считывать или устанавливать переменные CGI (они на любом сервере одинаковые). Технология ASP встроена в IIS 4.0 и Personal Web Server (PWS). Microsoft поставляет ASP со встроенным языком VBScript. Анонсируют, что так же встроен JavaScript, но это под сомнением, т.к. реально он там не работает. Объявляют, что поставляют компилятор под любой язык. Существует полноценный язык программирования Visual Basic for Application (VBA). Это наиболее полная версия языка Visual Basic. Мы будем рассматривать очень частный случай, который ориентирован только на работу с Web-приложениями: VBScript.

.. ../ /

2. Основы синтаксиса языка VBScript.

Язык является регистронезависимым.

2.1. Операции и операторы.

арифметические: + - * /

операторы сравнения: = <= >= !=

операция конкатенации: &

логическое "И": and &&

логическое "ИЛИ": or ||

Разделителями между операторами служит Enter.

Оператор условия.

if(условие1) then
операторы, если условие выполняется
else if(условие2) then
операторы, если 
условие2 верно
…
else
операторы, если
ни одно условие не выполняется
end if

Оператор выбора.

select переменная
case значение1
case значение2
операторы для значения2
…
else
операторы
end select

Условные циклы.

Циклы с предварительным условием.
do while(условие)
операторы цикла
loop
do until(условие)
операторы цикла
loop
Может быть условие, когда цикл не выполнится ни разу.
Цикл по while выполняется тогда, когда условие верно, а цикл until выполняется до тех пор, пока условие не станет верным, и когда станет верным - цикл прерывается.
x=0
do while x<5
print x
x=x+1
loop
Результат: 01234
x=0
do until x=5
print x
x=x+1
loop
Результат: 01234
Условные циклы с постусловием.
do
операторы цикла
loop while(условие)
do
операторы цикла
loop until(условие)
Тело цикла хотя бы один раз выполнится.
Принудительный выход из цикла: exit do используется внутри блока do.
do
операторы цикла
exit do
loop until(условие)

Перечислимые циклы.

for начальное значение to конечное значение step шаг (по умолчанию=1)
операторы цикла
next
for i=0 to 20 step 2
print i
next
Следующий оператор отражает объектную структуру:
for each переменная in массив или объект
оператор цикла
next
Переменная принимает название элементов массива или элементов объекта.

.. ../ /

2.2. Функции.

Различают функции и подпрограммы (п/п).
Функция может возвращать результат во внешнюю п/п, которая ее вызвала, а п/п отрабатывает только внутри себя, никаких значений во внешнюю программу не возвращает.
function имя функции(список параметров)
операторы функции
имя_функции=результат
end function
имя_функции задается произвольно.
список параметров - те значения, которые передаются в функцию извне, этот список необязателен: ().
function quadro(x)
y=x*x
quadro=y
end function

2.3. Подпрограммы.

sub имя(список параметров)
операторы п/п
exit sub
end sub

.. ../ /

3. Объекты ASP.

Это самостоятельные структуры, не привязанные к конкретному языку.

3.1. Server

- содержит методы и свойства для работы с сервером.

1) Метод CreateObject

- предназначен для создания в переменной экземпляра объекта.
Set a=Server.CreateObject("идентификатор")
a - произвольное имя переменной
CreateObject - метод объекта Server
Каждый объект ASP имеет свой уникальный идентификатор.
Каждый объект представляет собой строку.

2) Метод (свойство) ScriptTimeOut

Свойство задает время выполнения программы ASP в минутах. По умолчанию это время составляет 20 мин.
Server.ScriptTimeOut=10
Если в течении указанного времени программа не будет выполнена, то сервер пошлет клиенту сообщение об ошибке, фактически задает предельное время для выполнения скрипта. В качестве примера - mail.ru, где обрабатывается это свойство, выводится своя страница с сообщениями для пользователя.

3) Метод MapPath

Возвращает реальный путь к виртуальному каталогу (внутри программный метод считывания).
String s=Server.MapPath

.. ../ /

3.2. Объект Request

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

1) Метод Form

String s=Request.Form(имя_поля_формы) - только для метода POST Считывает значения из указанного поля формы в случае, когда данные были переданы методом POST.

2) Метод QueryString

Так же предназначен для считывания данных из поля формы, в том случае, если данные были переданы методом GET. String i=Request.QueryString(имя_поля_формы) - только для метода GET.

3) Метод ServerVariables(имя_переменной_CGI)

Возвращает значение переменной CGI.

4) Метод Cookies

String s=Request.Cookies(имя_cookie)
Считывает значение cookie с указанным именем.

.. ../ /

3.3. Объект Response

(ответ, отклик - англ.) Отвечает за передачу данных от сервера в браузер клиента.

1) Свойство Cookies

Response.Cookies(имя_cookie)(имя_поля)=значение
Записывает в браузер клиента файл cookie. Все cookie записываются только в виде текста.

!!! Запись cookie в браузер клиента должна быть сделана до HTML-тегов.

2) Свойство Expires

Response.Expires=время_в_секундах
Задает сколько времени в секундах хранить страницу HTML в кэше браузера клиента (оперативная область памяти браузера). Следует задавать значение=0

3) Свойство Redirect URL

URL - http://www.servername.ru
Response.Redirect
Перенаправляет пользователя по указанному URL-адресу.

4) Метод Write

Выводит информацию в браузер.
Response.Write("текст в браузер")
Здесь можно написать любые теги, может быть программа на JavaScript.

.. ../ /

4. Как написать собственную программу. Примеры.

VBScript встраивается в HTML-код без дополнительных указателей.
<%
Операторы VBScript
%>
Теги HTML и VBScript могут идти вперемешку. Операторы VBScript можно встраивать в теги HTML.
<font size=<%Response.Write(i)%>>
Если оператор VBScript не разорван, то вместо этой записи можно записать сокращенно
<font size=<%=i%>>
Чтобы выполнить примеры, запустите PWS (Personal Web Server):
Personal Web Manager >> Main>> Start

PWS-Edit Directory

В Advanced Options создайте виртуальную директорию webm и установите права доступа.

PWM-Advanced Options

Папка webm

Занесите в соответствующую папку примеры.
Запустите браузер, в строке адреса укажите соответственно для каждого примера:
http://localhost/webm/ex0.asp
http://localhost/webm/ex.asp
http://localhost/webm/ex1.asp
http://localhost/webm/ex2asp.html
http://localhost/webm/cookies.asp
http://localhost/webm/cookies1.asp
http://localhost/webm/counter/counter.asp
http://localhost/webm/counter/picture.asp

.. ../ /

Пример (ex0.asp)

<HTML>
<HEAD>
  <TITLE>Использование ASP</TITLE>
</HEAD>
<BODY>
Ваш браузер:<%=Request.ServerVariables("http_user_agent")%>
  <BR>
  Текущее время:<%=now%>
</BODY>
</HTML>
Пример ex0.asp

.. ../ /

Пример (ex.asp)

<HTML>
<HEAD></HEAD>
<BODY>
  <%For i=1 to 7 %>
    <FONT SIZE=<%=i%>>Hello</FONT><BR>
  <%next%>
</BODY>
</HTML>
Пример ex.asp

.. ../ /

Пример 1 (ex1.asp)

<html>
<body>
<!-- работает на стороне сервера, 
по запросу на сервер запускается программа ex1.asp, 
возвращается HTML-код
http://localhost/webm/ex1.asp
считываем значения всех переменных CGI -->
<%for each i in Request.ServerVariables%>
<%response.write(i)%>=<%=Request.ServerVariables(i)%>
<br>
<%next%>
</body>
</html>
Пример ex1.asp

.. ../ /

Пример 2 (ex2asp.html)

В строке адреса указать:
http://localhost/webm/ex2asp.html

Текст программы:

<HTML>
<HEAD></HEAD>
<BODY>
<FORM ACTION="ex2.asp" METHOD=GET>
  Name:<BR>
  <INPUT TYPE=text NAME="i1"><BR>
 Password:<BR>
  <INPUT TYPE=text NAME="i2">
  <HR>
  <INPUT TYPE=submit>
</FORM>
</BODY>
</HTML> 

Пример ex2.asp

Пример - результат ex2.asp

Комментарий:

Пользователю предлагается зарегистрироваться на сайте.
Имена полей - "i1", "i2".
ACTION="ex2.asp". Когда пользователь нажимает submit, данные передаются на обработку в файл ex2.asp.

Текст программы (ex2.asp):

<HTML>
<HEAD></HEAD>
<BODY>
   <% If Request.ServerVariables("REQUEST_METHOD")="GET" Then %>
         Ваше имя: <%=Request.QueryString("i1")%><BR>
         Пароль: <%=Request.QueryString("i2")%>
   <% ElseIf  Request.ServerVariables("REQUEST_METHOD")="POST" Then%>
          Ваше имя: <%=Request.Form("i1")%><BR>
Пароль: <%=Request.Form("i2")%>
    <%End If %>
</BODY>
</HTML>

Комментарий:

После отработки программы в строке адреса появляется:
http://localhost/webm/ex2.asp?i1=paula&i2=12345 
Все, что после знака "?" это единая строка. Задача расчленить эту строку по полям. Проверяем, каким методом были переданы данные. Считываем значение переменной окружения сервера "REQUEST_METHOD". Если метод передачи "GET", считываем значение поля формы и выводим это значение в браузер:
<%=Request.QueryString("i1")%>
При изменении метода передачи:
<FORM ACTION="ex2.asp" METHOD=POST>
получится другая строка в адресе:
http://localhost/webm/ex2.asp,
кодировка идет в стандартном потоке. В ex2.asp - проверка условия elseif, <%=Request.Form("i1")%> считывает значения из указанного поля "i1", если метод POST.

.. ../ /

Пример 3 (сookies.asp)

В строке адреса указать:
http://localhost/webm/cookies.asp
В результате в браузер выводится строка:
fild1
FILD2=Fri%2C+21%2DJul%2D00+21%3A00%3A00 

Текст программы:

<%Response.Cookies("f1")="fild1"%>
<%Response.Cookies("f2")("fild2")="Fri, 21-Jul-00 21:00:00"%>
<html>
<head>
<%b=request.cookies("f1")%>
<%c=request.cookies("f2")%>
</head>
<body>
<%=b%><br>
<%=c%>
</body>
</html>

.. ../ /

Пример 4 (сookies1.asp)

В строке адреса указать:
http://localhost/webm/cookies1.asp
В результате в браузер выводится строка:
EXPIRES=Sun%2C+21%2DMay%2D00+21%3A00%3A00

Текст программы:

<%Response.Cookies("dd")="dd"%>
<%Response.Cookies("dd")("expires")="Sun, 21-May-00 21:00:00"%>
<html>
<head>
<%b=request.cookies("dd")%>
</head>
<body>
<%=b%>
</body>
</html>

Комментарий:

"dd" - "имя_cookie"
"expires" - "имя_поля"
"Sun, 21-May-00 21:00:00" - "значение_поля"
request.cookies("dd") может находиться в любом месте HTML-кода.
Response.Cookies("dd") - cookie должен формироваться до HTML-страницы.
Можно записывать несколько файлов cookie.
Cookies представляют собой текстовые файлы, созданные сервером и хранящиеся на машине клиента. В этих файлах может быть login, область интересов (товары), время последнего посещения…
Стандартные поля в файле cookies:
Name="имя_cookie" - имя_cookie не путать с именем файла.
Expires - указывает до какого времени сохранять файл cookie у пользователя. Если expires не указан, cookie даже не записывается на диск, а хранится в кэше браузера.
Образовался файл cookies1[1].htm:
C:\WIN98R\Temporary Internet Files\Content.IE5\ODEBS567\cookies1[1].htm
<html>
<head>

</head>
<body>
EXPIRES=Sun%2C+21%2DMay%2D00+21%3A00%3A00
</body>
</html>

.. ../ /

5. Компоненты ASP

Это те же самые объекты.
FileAccess
Обеспечивает взаимодействие компонентов ASP.
ActiveXDataObject (ADO)
Взаимодействие компонентов ASP с базами данных.
AdRotator
Для управления баннерами на странице (в какой последовательности показывать баннеры и какое время показывать каждый баннер) - почти не используется, т.к. нужно написать текстовый файл в специальном формате. Проще использовать обычные ссылки (href) и SetTimeOut.
ContentLinking
Этот компонент предназначен для организации последовательной смены страниц в электронных газетах, на сайтах информационных агентств и т.д., используется редко, проще обычными ссылками (href).
BrowserCapabilities
Только заявлен. Предназначен для определения возможности браузера клиента (по функциям - можно ли загружать картинки, Java-апплеты).

FileAccess

Обеспечивает свободный доступ к текстовым файлам (логины, пароли, …). Организуется счетчик, динамическое изменение изображения, таблицы.
Объекты более низкого уровня:

File System

Отвечает за открытие и закрытие текстового файла, т.е. за доступ к файлу.
Методы объекта File System
Доступ к файлу осуществляется с помощью следующих методов объекта File System:
Создание нового текстового файла
Set a server.CreateObject("Scripting.FileSystemObject")
Создание экземпляра объекта FileSystem, для этого указывается идентификатор "Scripting.FileSystemObject".

Создание нового текстового файла с помощью метода CreateTextFile

a.CreateTextFile("полный_путь_к_файлу")
Открывает существующий текстовый файл
a.OpenTextFile("полный_путь_к_файлу")
Закрывает текстовый файл.
a.close()

TextStream

Это объект более низкого уровня объекта FileAccess.
Используетс для чтения, или записи данных в уже открытый файл (может быть открыт только на чтение / только на запись; текстовый поток одновременно считывать и записывать нельзя).
Чтобы создать экземпляр объекта TextStream в f-переменной, нужно открыть файл:
Set f=a.Open TextFile("полный_путь_к_файлу")
Можно использовать Create.

Метод ReadLine считывает одну строку (до символа Enter) из открытого текстового файла: f.ReadLine.

Метод f.StepLine обеспечивает пропуск одной строки при считывании.

Метод f.WriteLine записывает одну строку в текстовый файл.

.. ../ /

Примеры.

Пример счетчика.

В строке адреса указать:
http://localhost/webm/counter/counter.asp

Текст программы (couter.asp):

<HTML>
<HEAD>
  <TITLE>Счетчик использующий ASP</TITLE>
</HEAD>
<BODY BGCOLOR=#eeeeee>
<%   Set fs = CreateObject("Scripting.FileSystemObject")
     Set a = fs.OpenTextFile("c:\inetpub\webm\counter\count.txt")
     b = a.ReadLine
     b=b+1
     a.close
     Set a = fs.OpenTextFile("c:\inetpub\webm\counter\count.txt", 2)
     a.WriteLine(b)
     a.Close
%>
<B>Current visit is</B>:<% =b %>
<BR>
Graphics format:
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 BGCOLOR=white>
<TR>
  <TD><IMG SRC=<% =b\1000-(b\10000)*10 %>.gif></TD>
  <TD><IMG SRC=<% =b\100-(b\1000)*10 %>.gif></TD>
  <TD><IMG SRC=<% =b\10-((b\100)*10) %>.gif></TD>
  <TD><IMG SRC=<% =b\1-(b\10)*10 %>.gif></TD>
</TR>
</TABLE>
</BODY>
</HTML>

Комментарий:

В переменной fs создаем экземпляр объекта FileSystemObject:
Set fs = CreateObject("Scripting.FileSystemObject")
Указатель Server опустили, т.к. он тут подразумевается.

К экземпляру fs применяем метод OpenTextFile, открываем текстовый файл count.txt на чтение (путь должен быть указан полностью):

Set a = fs.OpenTextFile("c:\inetpub\webm\counter\count.txt")
В переменную b считываем содержимое первой строки файла:
b = a.ReadLine
b=b+1 - операция неявного преобразования типа, т.к. операция "+" в VBScript чисто арифметическая; счетчик увеличился на единицу, т.е. отработал.
a.close - закрываем файл.
Теперь открываем файл на запись:
Set a = fs.OpenTextFile("c:\inetpub\webm\counter\count.txt", 2)
Эту двойку надо ставить в случае, когда после открытия на чтение, файл сразу открывается на запись. Без этого дополнительного параметра работать не будет.

В файл count.txt записали новое значение счетчика:

a.WriteLine(b)
Старое содержимое файла при записи нового полностью уничтожается.
Чтобы сделать счетчик уникальных посещений, нужно использовать переменные CGI и проверить как в ex1.asp посещения разных пользователей (если пользователь уже заходил, его не считать).

Далее идет графический формат счетчика:
<IMG SRC=<% =b\1000-(b\10000)*10 %>.gif>
Внутрь HTML-тега можно вставить код VBScript-а. Здесь вычисляем имя файла. Имя файла совпадает с изображением числа.
0.gif - 0; 1.gif - 1; …
Предусмотрено 9999 посещений.

.. ../ /

Пример.

Изображение числа 2 (2.gif) в счетчике меняет свои размеры.
В текстовом файле size.txt установить начальный размер, например 10.
В строке адреса указать:
http://localhost/webm/counter/picture.asp
Текст программы (picture.asp):
<HTML>
<HEAD>
<meta http-equiv="refresh" content=2>
  <TITLE>Использование ASP</TITLE>
</HEAD>
<BODY BGCOLOR=#eeeeee>
<%   
     Set fs = CreateObject("Scripting.FileSystemObject")
     Set a = fs.OpenTextFile("c:\inetpub\webm\counter\size.txt")
     b = a.ReadLine
     b=b+10
     a.close
     Set a = fs.OpenTextFile("c:\inetpub\webm\counter\size.txt", 2)
     a.WriteLine(b)
     a.Close
%>

<IMG SRC=2.gif width=<%=b%> height=<%=b%>>

</BODY>
</HTML>

[ Home ] [ Top ] [ Web-дизайн ] [ Web-мастеринг ] [ Статьи, обзоры ] [ Литература ] [ Ссылки ]
[ Страничка юмора ] [ Гостевая книга ] [ E-Mail ]

ЦКО при МГТУ им.Н.Э.Баумана
Hosted by uCoz