Hello, world!") %>
Так производится запись во внутренний буфер объекта Response. Когда скрипт заканчивает работу, весь буфер выдается клиенту. Надо заметить, что клиент получает "чистый" HTML, таким образом, программы на ASP.NET не зависят от клиентского ПО, что очень важно. Если внутри выводимой строки нужно использовать кавычку, кавычка удваивается. Другие методы и свойства Response позволяют управлять выводом. Так Response.Buffer регулирует, получает ли клиент данные по мере из записи в Response, или все сразу по завершении исполнения страницы. Метод Response.Redirect перенаправляет браузер на другую страницу. Чтобы им пользоваться, нельзя до него на странице использовать Response.Write.
Программа на ASP.NET не может явно спросить пользователя о чем-то. Она получает данные из других страниц, либо через URL. Передаваемые параметры помещаются во входной поток и доступны через объект Request. Чтобы передать переменную var в программу test.asp, надо написать:
test.asp?var=abc
Чтобы из программы получить значение этой переменной, надо написать:
var = Request("var")
Несколько переменных разделяется знаком &:
test.asp?var1=abc&var2=def
Кроме того, чтобы задавать параметры в URL, можно воспользоваться формами HTML. В вызывающей странице пишем так:
Исходная форма имеет вид:
При этом пользователь увидит форму из одного поля ввода (var1), в нем будет значение по умолчанию " default". Второе поле (var2) будет невидимо и будет передавать всегда фиксированное значение " значение 2". Кнопка "Submit Form" завершает заполнение формы и передает все переменные на test.asp (action).
Если method="get", переменные передаются через URL: test.asp?var1=default&var2=value2.
Если method="post", передаются вместе с запросом так, что внешне передача переменных не заметна.
2.2 Установка программного обеспечения для ASP.NET
Отметим, что для поддержки ASP.NET, как правило, необходим Internet Information Server и установленный Microft Net Framework. Это программная технология от компании Microsoft, предназначенная для создания обычных программ и WEB-приложений.
Установка программного обеспечения начинается со скачивания дистрибутива .NET Framework (с сайта Microsoft). ASP.NET распространяется как составная часть .NET Framework. Перед установкой .NET Framework, необходимо установить Internet Information Server (IIS), который, как правило, поставляется вместе с дистрибутивом Windows и устанавливается через меню «Пуск/Панель управления/Установка и удаление программ/Установка компонентов Windows».
Рис. 6. Инсталляция WEB-сервера IIS
Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.
После установки .NET FrameForks, в Администраторе IIS можно постмотреть версию ASP.NET и месторасположения конфигурационного файла (рис.7).
Рис. 7. Просмотр свойств ASP.NET после инсталляиции .Net Framework
Отметим, что файлы ASP.NET имеют, как правило, расширение «*.aspx».
Обратите внимание, что после установки Net Framework такие файлы обрабатываются в IIS с помощью ISAPI фильтра – aspnet_isapi.dll (рис. 8).
Рис. 8. Просмотр ссылки на обработчик сценариев ASP.NET в Администраторе IIS.
Также для каждого виртуального каталога IIS можно создать единственный файл global.asax, с помощью которого управлять поведением сайта в зависимости от событий, связанных с поведением пользователей (например, события начала и окончания пользовательской сессии).
Пример, файла global.asaх.
2.3 Полезные конструкции на ASP.NET
Если на сервере установлены дополнительные компоненты, их можно использовать из ASP.NET Стандартные объекты (например, из библиотек ADO (Connection и Recordset) и Scripting (Dictionary, FileSystemObject)) доступны всегда. Установка новой компоненты обычно состоит в копировании dll-файла в каталог на сервере и ее регистрации с помощью программы regsvr32.exe.
Создать экземпляр объекта можно так:
Set var = Server.CreateObject("Class.Object")
Class.Object указываются в документации на компоненту.
В переменной var запоминается ссылка на созданный экземпляр объекта. Когда объект не нужен, ссылку нужно обнулить с помощью команды:
Set var = Nothing
Отметим что для передачи данных между страницами, можно воспользоваться механизмом сессий. ASP.NET, используя cookies, предоставляет программисту специальное средство - объект Session (сессия). Сессия стартует, когда новый пользователь обращается к любому aspx-файлу приложения. Сессия заканчивается при отсутствии активности пользователя в течение, как правило, 20 минут. Специальный объект Session хранит состояние сессии. Туда можно записывать переменные, которые доступны из любой страницы в этой сессии.
Записать данные в этот объект можно следующим образом:
Session("var") = var
Для считывания значения можно использовать такую запись:
var = Session("var")
Наряду с объектом Session существует объект Application. Если сессия создается для каждого нового пользователя, до Application существует в единственном экземпляре, и может использоваться всеми страницами приложения.
Application("var") = var
var = Application("var")
Чередование ASP.NET/HTML
Если нужно выдать большой кусок HTML, можно не пользоваться Response.Write. Если в asp-файле встречается кусок текста вне скобок <%%>, он трактуется просто как HTML, который надо вывести. Пример:
<%If var="VAL" Then %>
Выполняется первый блок HTML-кода
…
<%Else %>
Выполняется другой блок HTML-кода
…
Обратите внимание. В ASP.NET в отличие от ASP, обязательно нужно объявлять тип используемых переменных. Обычно это деляается вначале ASP.NET скрипта.
<%
Dim dbs As Object
Dim rs1 as Object
dbs = CreateObject("ADODB.Connection")
…………………………………………………..
%>
В противном случае выдается ошибка.
Отметим, что можно выносить повторяющийся код в отдельный файл, и подключать к разным другим по мере необходимости с помощью команды include. Это весьма удобно, если есть потребность вынести повторяющийся код в отдельный файл и использовать многократно в разных страницах:
include file="filename.inc" -->
2.4 Управляющие структуры ASP.NET
Вы можете использовать операторы цикла, такие как for и while.
<%
While (условие)
‘Здесь некоторый код на VB.NET
End While
for i=1 To J
‘Здесь некоторый код на VB.NET
Next i
%>
Отметим, что логические операторы также имеют довольно простую форму, например, следующую.
IF Not VarType(rs3.Fields(3).Value)=1 Then
var_name=CStr(rs3.Fields(3).Value)
else
var_name=""
End if
В этом примере, функция VarType() проверят соответствие переменной определенному типу по значению, и в зависимости, от результата, либо, считывает значение из СУБД, либо записывает в переменную var_name пустое значение. Функция CStr выполняет приведение текущего типа переменной к текстовому.
2.5 Работа с файловой системой
Для ASP.NET при работе с файловой системой целесообразно использовать объектную модель FSO (File System Object).
Ниже представлен пример создания файла на жестком диске с помощью ASP.NET скрипта с последующей записей значений, извлекаемых из некоторой СУБД, в формате XML.
<%
' rootPath – переменная, в которой храниться путь к папке, в которой создаем файл
‘rs2.Fields(2).Value – название файла (извлекаемое из СУБД)
fso = CreateObject("Scripting.FileSystemObject")
file = fso.CreateTextFile(rootPath+"\"+cStr(rs2.Fields(2).Value) + ".xml",true,true)
file.WriteLine("")
file.WriteLine("")
file.WriteLine(" ")
‘Здесь некторый блок кода, формирующий XML-поток
file.WriteLine("")
file.Close
2.6 Базы данных и ASP.NET Из ASP.NET можно легко и просто работать с любыми СУБД. Это делается через две промежуточные технологии: ODBC и ADO (ADO.NET).
ODBC позволяет организовать доступ к любым СУБД через унифицированный интерфейс с помощью языка SQL. Специфика конкретных СУБД учитывается при помощи специальных драйверов БД. Такие драйверы существуют для всевозможных СУБД (в частности SQL Server, Oracle, Access, FoxPro). Поддержка ODBC обеспечивается на уровне операционной системы Windows. Настройка – через Панель управления/ODBC.
Рис. 9. Настройка источников данных ODBC.
Базовым понятием является источник данных или data source. Источник данных – это совокупность сведений о базе данных, включая ее драйвер, имя компьютера и файла, параметры. Чтобы воспользоваться базой, необходимо создать источник данных для нее. Важно, чтобы источник данных был "системным", в отличии от "пользовательского". После этого надо лишь знать имя источника данных.
ADO – это совокупность объектов, доступных из ASP.NET (ASP), позволяющих обращаться к источнику данных ODBC (или OLE DB). Фактически нужны лишь 2 объекта – Connection, представляющий соединение с базой данных и Recordset, представляющий набор записей, полученный от источника. Сначала необходимо открыть соединение, потом к нему привязать Recordset, потом, пользуясь методами Recordset, обрабатывать данные. Пример 1. Доступ к СУБД через имя источника ("Data-Source-Name"), настроенного в Администраторе источников ODBC
Dim Conn, RS, strSQL, strOut
strOut = ""
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Data-Source-Name"
Set RS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM AGENTS ORDER BY USER_ID"
RS.Open strSQL, Conn
RS.MoveFirst
strOut = strOut & " Here is the data:"
strOut = strOut & ""
strOut = strOut & "USER_ID | Name | "
Do While Not RS.EOF
strOut = strOut & ""
strOut = strOut & "" & RS.Fields("USER_ID") & " | "
strOut = strOut & "" & RS.Fields("NAME") & " | "
strOut = strOut & " "
RS.MoveNext
Loop
strOut = strOut & " "
strOut = strOut & " "
strOut = strOut & "That's it!"
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
Response.Write strOut
%>
Пример 2. Доступ к СУБД через имя драйвера (на примере MS SQL Server).
dbs = CreateObject("ADODB.Connection")
dbs.ConnectionString = "driver={SQL Server};server=.\SQLEXPRESS;uid=sa;pwd=;database=GRAF"
dbs.ConnectionTimeout = 5
dbs.Open
dbs.CommandTimeout = 0
Отметим, что в настоящее время для ASP.NET рекомендуется также использовать объектную модель ADO.NET, существенно отличающуюся от объектной модели ADO.
ADO.NET поддерживает модель поставщиков. Поставщики для конкретного источника данных можно определить как совокупность классов в одном пространстве имен созданных специально для данного источника данных. Эта особенность несколько размыта для источников данных OleDb, ODBC, так как они по своей сути созданы для работы с любой базой данных совместимых с OLE и ODBC.
В подключаемой части ADO.NET имеются следующие основные классы подсоединенных объектов:
Connection. Этот класс, позволяющий устанавливать подключение к источнику данных. ( OleDbConnection, SqlConnection, OracleConnection)
Transaction. Объект транзакций (OleDbTransaction, SqlTransaction, OracleTransaction. В ADO.NET имеется пространство имен System.Transaction)
DataAdapter. Это своеобразный шлюз между автономными и подключенными аспектами ADO.NET. Он устанавливает подключение, и если подключение уже установлено, содержит достаточно информации, чтобы воспринимать данные автономных объектов и взаимодействовать с базой данных. (DataAdapter - SqlDataAdapter, OracleDataAdapter)
Command. Это класс представляющий исполняемую команду в базовом источнике данных.
Parameter. Объект параметр команды.
DataReader. Это эквивалент конвейерного курсора с возможностью только чтения данных в прямом направлении.
Объектная модель ADO.NET
Рис. 10. Объектная модель ADO.NET.
Обратите внимание. Для использования ADO.NET в ASP.NET нужно вначале импортировать соответствующее пространство имен.
<%'ДЛЯ ADO Managed Provider %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%'ДЛЯ SQL Managed Provider %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
Пример 3. Подключение к СУБД Access, считывание данных при помощи ADO.NET и вывод на WEB-страницу
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%
'путь к бд и имя таблицы для выполнения запроса Dim DBFileName As String = "db\db.mdb" Dim DBTableName As String = "[TableName]" 'инициализируем объекты для работы с бд Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFileName) Dim cmd As New OleDb.OleDbCommand("SELECT * FROM " & DBTableName, cn) Dim da As New OleDb.OleDbDataAdapter(cmd) Dim tbl As New DataTable 'заполняем набор данных da.Fill(tbl) 'выводим данные For Each Row As DataRow In tbl.Rows
Response.Write(Join$(Row.ItemArray())+" ")
Next Row 'освобождаем ресурсы tbl.Dispose() da.Dispose() cmd.Dispose() cn.Dispose()
%>
|