Пользовательский интерфейс в Dreamweaver и более поздних версиях стал проще. В результате этого некоторые функции, описанные в этой статье, могут отсутствовать в Dreamweaver и более поздних версиях. Дополнительные сведения см. в этой статье.
О заказных вариантах поведения сервера
Dreamweaver поставляется с набором встроенных серверных функций, которые позволяют легко добавлять динамические возможности к сайту.Вы можете расширить функциональность Dreamweaver, создавая поведения сервера в соответствии с вашими потребностями разработки или получая поведения сервера с веб-сайта Dreamweaver Exchange.
Перед созданием собственных поведений сервера следует проверить веб-сайт Dreamweaver Exchange, чтобы узнать, не создал ли уже кто-то другой поведение сервера, обеспечивающее нужную вам функциональность для веб-сайта.Часто сторонний разработчик уже создал и протестировал поведение сервера, которое решит ваши задачи.
Доступ к Dreamweaver Exchange
Выберите «Справка» > «Dreamweaver Exchange».
Выберите «Окно» > «Поведения сервера», нажмите кнопку «Плюс» (+) и выберите «Получить дополнительные поведения сервера».
В браузере откроется веб-страница Dreamweaver Exchange.
Установите поведение сервера или другое расширение в Dreamweaver
Дополнительные сведения см. в разделе Использование диспетчера расширений.
Работа с заказным поведением сервера
Если вы веб-разработчик, владеющий ColdFusion, JavaScript, VBScript или PHP, вы можете написать собственные поведения сервера.Шаги для создания поведения сервера включают следующие задачи:
Напишите один или несколько блоков кода, которые выполняют требуемое действие.
Укажите, где блок кода должен быть вставлен в HTML-код страницы.
Если поведение сервера требует задания значения для параметра, создайте диалоговое окно, которое предлагает веб-разработчику, применяющему поведение, предоставить соответствующее значение.
Протестируйте поведение сервера прежде, чем делать его доступной другим.
Использование построителя вариантов поведения сервера
Используйте Server Behavior Builder для добавления блока или блоков кода, которые поведение вставляет на страницу.
Будет отображено диалоговое окно построителя вариантов поведения сервера.
Введенное вами имя появится в Server Behavior Builder с соответствующими скриптовыми тегами, видимыми в поле «Блок кода».
При вводе кода в поле «Блок кода» вы можете вставить только один тег или блок кода для каждого именованного блока кода (например, myBehavior_block1, myBehavior_block2, myBehavior_blockn, и т. д.). Если вам необходимо ввести несколько тегов или блоков кода, создайте отдельный блок кода для каждого из них. Вы также можете копировать и вставлять код с других страниц.
Параметр вставляется в блок кода в том месте, где был помещен курсор перед определением параметра.Если была выбрана строка, то каждое вхождение выбранной строки в блоке кода заменяется маркером параметра (например, @@Session@@).
На панели «Поведение сервера» теперь отображается поведение сервера.
Дополнительные параметры
После указания исходного кода и места вставки для каждого блока кода поведение сервера полностью определено.В большинстве случаев не требуется указывать дополнительную информацию.
Если вы опытный пользователь, можно задать любые из следующих параметров:
Идентификатор
Указывает, следует ли рассматривать блок кода как идентификатор.
По умолчанию любой блок кода является идентификатором. Если Dreamweaver обнаруживает блок кода идентификатора в любом месте документа, он отображает поведение на панели «Поведения сервера».Используйте параметр «Идентификатор», чтобы указать, следует ли рассматривать блок кода как идентификатор.
По крайней мере один из блоков кода поведения сервера должен быть идентификатором.Блок кода не должен быть идентификатором, если применимо одно из следующих условий: тот же блок кода используется другим поведением сервера; или блок кода настолько прост, что может встречаться на странице естественным образом.
Название поведения сервера
Задает название поведения на панели «Поведение сервера».
Когда дизайнер страницы нажимает кнопку «плюс» (+) на панели «Поведения сервера», заголовок нового поведения сервера появится во всплывающем меню.Когда дизайнер применяет экземпляр поведения сервера к документу, поведение появляется в списке примененных поведений на панели «Поведения сервера».Используйте поле «Заголовок поведения сервера», чтобы указать содержимое всплывающего меню «плюс» (+) и список примененных поведений.
Начальное значение в поле — это имя, указанное в диалоговом окне «Новое поведение сервера».По мере определения параметров имя автоматически обновляется, так что параметры появляются в скобках после имени поведения сервера.
Set Session Variable (@@Name@@, @@Value@@)
Если пользователь принимает значение по умолчанию, все, что находится перед скобками, появляется во всплывающем меню «плюс» (+) (например, Set Session Variable).Имя вместе с параметрами будет отображаться в списке примененных поведений — например, Set Session Variable ("abcd", "5").
Выделяемый блок кода
Указывает, какой блок кода выбирается, когда пользователь выбирает поведение в панели «Поведения сервера».
Когда вы применяете поведение сервера, один из блоков кода внутри поведения назначается «блоком кода для выбора». Если вы применяете поведение сервера и затем выбираете поведение в панели «Поведения сервера», назначенный блок выбирается в окне «Документ». По умолчанию Dreamweaver выбирает первый блок кода, который не находится выше тега html. Если все блоки кода находятся выше тега html, то выбирается первый из них. Опытные пользователи могут указать, какой блок кода является выбранным.
Создание блоков кода
Блоки кода, которые вы создаете в Конструкторе поведений сервера, объединяются в поведение сервера, которое появляется на панели «Поведения сервера».Код может быть любым допустимым кодом времени выполнения для указанной серверной модели. Например, если вы выбираете ColdFusion в качестве типа документа для вашего пользовательского поведения сервера, код, который вы пишете, должен быть допустимым кодом ColdFusion, который выполняется на сервере приложений ColdFusion.
Вы можете создавать блоки кода либо непосредственно в Конструкторе поведений сервера, либо копировать и вставлять код из других источников. Каждый блок кода, который вы создаете в Конструкторе поведений сервера, должен быть отдельным тегом или блоком сценария. Если вам нужно вставить несколько блоков тегов, разделите их на отдельные блоки кода.
Условия в блоках кода
Dreamweaver позволяет разрабатывать блоки кода, которые включают операторы управления, выполняющиеся условно. Конструктор поведений сервера использует операторы if, elseif и else и также может содержать параметры поведения сервера. Это позволяет вставлять альтернативные текстовые блоки на основе значений отношений ИЛИ среди параметров поведения сервера.
Следующий пример показывает операторы if, elseif и else. Квадратные скобки ([ ]) обозначают необязательный код, а звездочка (*) обозначает ноль или более экземпляров. Чтобы выполнить часть блока кода или весь блок кода только в том случае, если применяется определенное условие или условия, используйте следующий синтаксис:
<@ if (expression1) @> условный
text1[<@ elseif (expression2) @> условный text2]*[<@ else @>
условный text3]<@ endif @>
Выражения условий могут быть любыми выражениями JavaScript, которые могут быть вычислены с помощью функции JavaScript eval() и могут включать параметр поведения сервера, отмеченный знаками @@. (Знаки @@ отличают параметр от переменных и ключевых слов JavaScript.)
Эффективное использование условных выражений
При использовании директив if, else и elseif внутри XML-тега insertText текст участника предварительно обрабатывается для разрешения директив if и определения того, какой текст включить в результат. Директивы if и elseif принимают выражение в качестве аргумента. Выражение условия такое же, как для выражений условий JavaScript, и также может содержать параметры поведения сервера. Такие директивы позволяют выбирать между альтернативными блоками кода на основе значений параметров поведения сервера или связей между ними.
Например, следующий JSP-код взят из поведения сервера Dreamweaver, которое использует условный блок кода:
@@rsName@@.close();
<@ if (@@callableName@@ != '') @>
@@callableName@@.execute();
@@rsName@@ = @@callableName@@.getResultSet();<@ else @>
@@rsName@@ = Statement@@rsName@@.executeQuery();
<@ endif @>
@@rsName@@_hasData = @@rsName@@.next();
Условный блок кода начинается с <@ if (@@callableName@@ != '') @> и заканчивается <@ endif @>. Согласно коду, если пользователь вводит значение для параметра @@callableName@@ в диалоговом окне «Параметры» поведения сервера — другими словами, если значение параметра @@callableName@@ не равно null, или (@@callableName@@ != '') — тогда условный блок кода заменяется следующими операторами:
@@callableName@@.execute();
@@rsName@@ = @@callableName@@.getResultSet();
В противном случае блок кода заменяется следующим оператором:
@@rsName@@ = Statement@@rsName@@.executeQuery();
Размещение блока кода
При создании блоков кода с помощью Server Behavior Builder необходимо указать, где их вставить в HTML-код страницы.
Например, если вы вставляете блок кода перед открывающим тегом <html>, необходимо затем указать расположение блока кода относительно других тегов, сценариев и поведений сервера в этой части HTML-кода страницы.Типичные примеры включают размещение поведения либо перед, либо после любых запросов к наборам записей, которые могут также существовать в коде страницы выше открывающего тега <html>.
При выборе параметра позиционирования из всплывающего меню «Вставить код» доступные параметры во всплывающем меню «Относительная позиция» изменяются, предоставляя соответствующие варианты для этой части страницы. Например, если вы выберете «Выше тега <html>» во всплывающем меню «Вставить код», параметры позиционирования, доступные во всплывающем меню «Относительная позиция», отражают варианты, актуальные для этой части страницы.
В следующей таблице приведены параметры вставки блока кода и доступные параметры относительного позиционирования для каждого:
|
Параметры вставки кода |
Параметры относительного положения |
|
Перед тегом <html> |
|
|
После тега </html> |
|
|
Относительно определенного тега |
Выберите тег из всплывающего меню «Тег», а затем выберите из параметров позиционирования тега. |
|
Относительно выбранного фрагмента |
До выбранного фрагмента После выбранного фрагмента Заменить выделенное Заключить выбранный фрагмент |
Чтобы указать пользовательскую позицию, необходимо назначить вес блоку кода.Используйте параметр «Пользовательская позиция», когда нужно вставить несколько блоков кода в определенном порядке. Например, чтобы вставить упорядоченную последовательность из трех блоков кода после блоков кода, которые открывают наборы записей, введите вес 60 для первого блока, 65 для второго и 70 для третьего.
По умолчанию Dreamweaver назначает вес 50 всем блокам кода открытия набора записей, вставляемым выше тега <html>.Если вес двух или более блоков совпадает, Dreamweaver случайным образом задает порядок блоков.
Размещение блока кода (общие инструкции)
Серверное поведение указано в панели Server Behaviors (Window > Server Behavior); нажмите кнопку «плюс» (+), чтобы просмотреть серверное поведение.
Размещение блока кода относительно другого тега на странице
При вводе тега не заключайте его в угловые скобки (<>).
Размещение блока кода относительно тега, выбранного дизайнером страницы
Вы можете вставить блок кода непосредственно перед выделением или сразу после него. Вы также можете заменить выделение блоком кода или обернуть блок кода вокруг выделения.
Чтобы обернуть блок кода вокруг выделения, выделение должно состоять из открывающего и закрывающего тега без содержимого между ними, как показано ниже:
<CFIF Day="Monday"></CFIF>
Вставьте часть с открывающим тегом блока кода перед открывающим тегом выделения, а часть с закрывающим тегом блока кода после закрывающего тега выделения.
Повтор блоков кода с помощью директивы loop
Чтобы повторить часть блока кода или весь блок кода определенное количество раз, используйте следующий синтаксис:
<@ loop (@@param1@@,@@param2@@) @> блок
кода<@ endloop @>
При создании серверных реакций можно использовать конструкции циклов для повторения блока кода определенное количество раз. <@ loop (@@param1@@,@@param2@@,@@param3@@,@@param_n@@) @> code block <@ endloop @>Директива цикла принимает разделенный запятыми список массивов параметров в качестве аргументов. В данном случае аргументы массива параметров позволяют пользователю предоставить несколько значений для одного параметра. Повторяющийся текст дублируется n раз, где n — это длина аргументов массива параметров. Если указано более одного аргумента массива параметров, все массивы должны иметь одинаковую длину. При i-й оценке цикла i-е элементы массивов параметров заменяют связанные экземпляры параметров в блоке кода.
При создании диалогового окна для серверной реакции можно добавить в диалоговое окно элемент управления, который позволяет дизайнеру страниц создавать массивы параметров. Dreamweaver включает простой элемент управления массивом, который можно использовать для создания диалоговых окон. Этот элемент управления называется Text Field Comma Separated List и доступен через Server Behavior Builder. Для создания элементов пользовательского интерфейса большей сложности см. документацию API для создания диалогового окна с элементом управления для создания массивов (например, элементом управления сетки).
Можно вложить любое количество условий или директиву цикла внутрь условной директивы. Например, можно указать, что если выражение истинно, то выполнить цикл.
Следующий пример показывает, как такие повторяющиеся блоки кода могут быть использованы для создания серверных реакций (пример представляет собой поведение ColdFusion, используемое для доступа к хранимой процедуре):
<@ loop (@@param1@@,@@param2@@,@@param3@@,@@param_n@@) @> code block
<@ endloop @>
<CFSTOREDPROC procedure="AddNewBook"
datasource=#MM_connection_DSN#
username=#MM_connection_USERNAME#
password=#MM_connection_PASSWORD#>
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryID#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#"
cfsqltype="CF_SQL_VARCHAR">
</CFSTOREDPROC>
В данном примере тег CFSTOREDPROC может включать ноль или более тегов CFPROCPARAM. Однако без поддержки директивы цикла нет способа включить теги CFPROCPARAM в вставленный тег CFSTOREDPROC. Если это было бы создано как серверное поведение без использования директивы цикла, вам потребовалось бы разделить этот пример на два участника: основной тег CFSTOREDPROC и тег CFPROCPARAM, тип участника которого — множественный.
Используя директиву цикла, вы можете написать ту же процедуру следующим образом:
<CFSTOREDPROC procedure="@@procedure@@"
datasource=#MM_@@conn@@_DSN#
username=#MM_@@conn@@_USERNAME#
password=#MM_@@conn@@_PASSWORD#>
<@ loop (@@paramName@@,@@value@@,@@type@@) @>
<CFPROCPARAM type="IN"
dbvarname="@@paramName@@"
value="@@value@@"
cfsqltype="@@type@@">
<@ endloop @>
</CFSTOREDPROC>
Новые строки после «@>» игнорируются.
Если пользователь ввел следующие значения параметров в диалоговом окне Server Behavior Builder:
procedure = "proc1"
conn = "connection1"
paramName = ["@CategoryId", "@Year", "@ISBN"]
value = ["#Form.CategoryId#", "#Form.Year#", "#Form.ISBN#"]
type = ["CF_SQL_INTEGER", "CF_SQL_INTEGER", "CF_SQL_VARCHAR"]
Серверное поведение вставило бы следующий код времени выполнения в страницу:
<CFSTOREDPROC procedure="proc1"
datasource=#MM_connection1_DSN#
username=#MM_connection1_USERNAME#
password=#MM_connection1_PASSWORD#>
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryId#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@Year" value="#Form.Year#"
cfsqltype="CF_SQL_INTEGER">
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#"
cfsqltype="CF_SQL_VARCHAR">
</CFSTOREDPROC>
Массивы параметров нельзя использовать вне цикла, кроме как в составе условного выражения директивы.
Использование переменных _length и _index в директиве loop
Директива цикла содержит две встроенные переменные, которые можно использовать для встроенных условий if. Это переменные _length и _index. Переменная _length возвращает длину массивов, обрабатываемых директивой цикла, а переменная _index возвращает текущий индекс директивы цикла. Чтобы эти переменные распознавались только как директивы, а не как фактические параметры, передаваемые в цикл, не заключайте переменные в @@.
Пример использования встроенных переменных — применение их к атрибуту import директивы страницы. Атрибут import требует разделения пакетов запятыми. Если директива loop распространяется на весь атрибут import, вы будете выводить только имя атрибута import= в первой итерации цикла — включая закрывающую двойную кавычку (") — и не выводить запятую в последней итерации цикла. Используя встроенную переменную, можно выразить это следующим образом:
<@loop (@@Import@@)@>
<@ if(_index == 0)@>import="
<@endif@>@@Import@@<@if (_index == _length-1)@>"<@else@>,
<@ endif @>
<@endloop@>
Запрос параметра для поведения сервера
Поведения сервера часто требуют, чтобы дизайнер страницы предоставил значение параметра. Это значение нужно вставить до вставки кода поведения сервера на страницу.
Вы создаете диалоговое окно путем определения предоставляемых конструктором параметров в коде.Затем вы создаете диалоговое окно для поведения сервера, которое запрашивает у дизайнера страницы значение параметра.
Параметр добавляется в блок кода автоматически, если вы указываете, что код должен быть вставлен относительно определенного тега, выбранного дизайнером страницы (то есть вы выбрали «Относительно определенного тега» в всплывающем меню «Вставить код»). Параметр добавляет меню тегов в диалоговое окно поведения, чтобы дизайнер страницы мог выбрать тег.
Определите параметр в коде поведения сервера
@@parameterName@@
<% Session("lang_pref") = Request.Form("@@formParam@@"); %>
Например, если поведение сервера содержит следующий блок кода:
<% Session("lang_pref") = Request.Form("Form_Object_Name"); %>
Чтобы потребовать от дизайнера страницы предоставить значение Form_Object_Name, заключите строку в маркеры параметра (@@):<% Session("lang_pref") = Request.Form("@@Form_Object_Name@@"); %>
<% Session("lang_pref") = Request.Form("@@Form_Object_Name@@"); %>
Также можно выделить фрагмент и нажать кнопку «Вставка параметра в блок кода». Введите имя параметра и нажмите кнопку «ОК». Dreamweaver заменяет все вхождения выделенного фрагмента заданным именем параметра внутри маркеров.
Dreamweaver использует фрагмент, выделенный маркерами параметра, для обозначения элементов управления в создаваемом диалоговом окне (см. следующую процедуру). В предыдущем примере Dreamweaver создал диалоговое окно со следующей меткой.
Имя параметра в коде поведения сервера не должно содержать пробелов. Поэтому метки диалоговых окон также не могут содержать пробелов. Для включения пробелов в метку можно отредактировать созданный HTML-файл.
Создайте диалоговое окно для поведения сервера, чтобы запросить значение параметра
Dreamweaver создает диалоговое окно с подписанным элементом управления для каждого параметра, предоставляемого дизайнером, который вы определили.
Просмотр диалогового окна
Отредактируйте диалоговое окно, созданное для поведения сервера
Появится диалоговое окно со списком всех параметров, предоставляемых дизайнером, которые вы определили в коде.
Изменение вариантов поведения сервера
Вы можете редактировать любое поведение сервера, созданное с помощью «Построителя поведения сервера», включая поведения сервера, которые вы загружаете с веб-сайта Dreamweaver Exchange и от других сторонних разработчиков.
Если вы применяете серверное поведение к странице, а затем редактируете поведение в Dreamweaver, экземпляры старого поведения больше не появляются в панели «Серверные поведения». Панель «Серверные поведения» ищет на странице код, который соответствует коду известных серверных поведений. Если код серверного поведения изменяется, панель не распознает более ранние версии поведения на этой странице.
Сохраните старые и новые версии поведения в панели
Редактирование кода серверного поведения, созданного с помощью конструктора серверных поведений
Диалоговое окно «Редактирование серверных поведений» отображает все поведения для текущей серверной технологии.
Dreamweaver повторно генерирует серверное поведение без диалогового окна. Новое серверное поведение появляется во всплывающем меню «Плюс» (+) панели «Серверные поведения».
Dreamweaver спросит вас, хотите ли вы создать новое диалоговое окно, перезаписав старое.Внесите необходимые изменения и нажмите «ОК».
Dreamweaver сохранит все изменения в EDML-файле поведения сервера.
Рекомендации по написанию кода
В целом код вашего поведения сервера должен быть компактным и надёжным.Разработчики веб-приложений очень чувствительны к коду, добавляемому на их страницы.Следуйте общепринятым правилам написания кода для языка типа документа (ColdFusion, JavaScript, VBScript или PHP).При написании комментариев учитывайте различные технические аудитории, которым может потребоваться понять код, например, веб-дизайнеров, дизайнеров взаимодействия или других разработчиков веб-приложений. Включайте комментарии, которые точно описывают назначение кода и любые специальные инструкции по его включению в страницу.
При создании серверных поведений помните следующие рекомендации по написанию кода:
Проверка ошибок
Важное требование. Код поведения сервера должен корректно обрабатывать ошибки.Постарайтесь предусмотреть каждую возможность. Например, что делать, если запрос параметра не удался?Что делать, если запрос не вернул ни одной записи?
Уникальные имена
Помогает обеспечить четкую идентификацию вашего кода и исключить конфликты имен с существующим кодом.Например, если страница содержит функцию hideLayer() и глобальную переменную ERROR_STRING, а ваше серверное поведение вставляет код, использующий те же имена, серверное поведение может конфликтовать с существующим кодом.
Префиксы в коде
Позволяют идентифицировать ваши собственные функции времени выполнения и глобальные переменные на странице. Одно из правил — использовать свои инициалы. Никогда не используйте префикс MM_, поскольку он зарезервирован только для использования в Dreamweaver. Dreamweaver предваряет все функции и глобальные переменные префиксом MM_, чтобы предотвратить их конфликт с любым кодом, который вы пишете.
var MM_ERROR_STRING = "...";
function MM_hideLayer() {
Избегайте использования похожих блоков
чтобы код, который вы пишете, не слишком напоминал код в других блоках. Если блок кода слишком похож на другой блок кода на странице, панель «Серверные поведения» может ошибочно идентифицировать первый блок кода как экземпляр второго блока кода (или наоборот). Простое решение — добавить комментарий к блоку кода, чтобы сделать его более уникальным.
Тестирование поведения сервера
Dreamweaver Exchange рекомендует выполнить следующие тесты для каждого серверного поведения, которое вы создаете:
Применить поведение сервера из панели «Поведение сервера». Если у него есть диалоговое окно, введите допустимые данные в каждое поле и нажмите «ОК». Убедитесь в том, что при применении поведения сервера не возникает ошибок. Убедитесь, что код времени выполнения для поведения сервера отображается в инспекторе кода.
Примените серверное поведение снова и введите недопустимые данные в каждое поле диалогового окна. Попробуйте оставить поле пустым, использовать большие или отрицательные числа, использовать недопустимые символы (такие как /, ?, :, *, и так далее), и использовать буквы в числовых полях. Вы можете написать процедуры проверки формы для обработки недопустимых данных (процедуры проверки включают ручное кодирование, что выходит за рамки этой книги).
После успешного применения вашего серверного поведения к странице проверьте следующее:
Проверьте панель «Серверные поведения», чтобы убедиться, что имя серверного поведения отображается в списке поведений, добавленных к странице.
Если применимо, убедитесь, что значки серверных сценариев отображаются на странице. Общие значки поведений сервера имеют вид золотистых щитов. Чтобы увидеть значки, включите «Невидимые элементы» («Вид» > «Визуальные средства» > «Невидимые элементы»).
В режиме «Код» («Вид» > «Код») убедитесь, что недопустимый код не генерируется.
Кроме того, если ваше серверное поведение вставляет код в документ, устанавливающий соединение с базой данных, создайте тестовую базу данных для проверки кода, вставленного в документ. Проверьте соединение, определив запросы, которые возвращают различные наборы данных и наборы данных разных размеров.
Наконец, загрузите страницу на сервер и откройте ее в браузере. Просмотрите исходный HTML-код страницы и убедитесь, что серверные сценарии не генерируют недопустимый HTML.
Создание красивых веб-сайтов в Dreamweaver
Создавайте дизайн, пишите код и управляйте динамическими веб-сайтами с помощью многофункционального инструмента.