The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Практическое введение в управляющие HTML-формы Smans (sams web sql template)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: sams, web, sql, template,  (найти похожие документы)
From: Сергей Савушкин Newsgroups: email Date: Mon, 30 Aug 2008 18:21:07 +0000 (UTC) Subject: Практическое введение в управляющие HTML-формы Smans Данная статья нацелена на Web-разработчиков начального и среднего уровня, желающих усилить уровень поддержки Web-сайта посредством базы данных. Для разработки интерфейса с базой данных предлагается новый декларативный язык основанный на HTML-формах. В результате разработчик может ограничить себя только HTML без написания соответствующих скриптов на SQL и одном из языков обработки данных, таких как PHP, ASP/C# или JSP/Java. Это существенно упрощает создание динамического Web-сайта. Статья объясняет оригинальный подход, базирующийся на особенностях сервера Smans. При таком подходе для создания базы данных достаточно знать только HTML. Например, чтобы регистрировать новых пользователей, все, что необходимо от Web-разработчика, создать HTML-форму. Соответствующая таблица будет создана или подкорректирована автоматически в течение регистрации пользователя. Имя каждого поля таблицы будет тем же самым, как и имя соответствующего поля в HTML-форме. HTML-формы могут управлять не только созданием базы данных, но и выполнением запросов к ней. В последнем случае осуществляется контроль введенных данных, получение из базы данных определенных параметров и передача их нужным Web-ресурсам. Все это задается в обычной HTML-форме с использованием специальных управляющих, обычно скрытых, полей. Создание базы данных с помощью HTML-формы Как известно, HTML-форма, это - блок HTML-страницы позволяющий вводить данные из Web-браузера на удаленный или локальный Web-сервер. Блок формы помечается тэгами <form...> и </form>. Поля внутри HTML-формы могут иметь разные типы, например список или текстовое поле. В листинге 1 показан пример описания формы. Листинг 1. Код HTML-формы <form method="post" action="..."> A: <input type="text" name="A" size="10" /><br /> B: <select name="B" multiple="multiple"> <option value="b1" selected="selected">b1</option> <option value="b2">b2</option> </select><br /> C: <input type="radio" name="C" checked="checked" value="c1" />c1 <input type="radio" name="C" value="c2" />c2<br /> D: <input type="checkbox" name="D" checked="checked" value="d1" />d1 <input type="checkbox" name="D" value="d2" />d2<br /> <input type="submit" value="Submit" /> <input type="reset" value="Reset" /> </form> HTML-форма обычно используется для ввода только одной записи в таблицу базы данных. Каждый атрибут name определяет имя соответствующего поля формы или вводимой записи. Одновременно, для сервера Smans, это же имя рассматривается как имя колонки в соответствующей таблице. Дополнительная информация, обычно невидимая для пользователя, передается серверу Smans благодаря управляющим полям HTML-формы. Наиболее важным из управляющих полей является $Table. Атрибут action в дескрипторе form задает имя Smans-сервлета /servlet/record, принимающего и обрабатывающего HTML-форму с управляющими полями. Например: <form action="../servlet/record" method="post"> <input type="hidden" name="$Table" value="Order" /> ... </form> Поле $Table обозначает таблицу формируемую в базе данных. Рассмотрим пример записывающей управляющей HTML-формы, формирующий таблицу Order в листинге 2. Листинг 2. Код записывающей HTML-формы <form action="../servlet/record" method="post"> <input type="hidden" name="$Table" value="Order" /> Date: <input type="text" name="Date" /><br /> Name: <input type="text" name="Name" /><br /> Phone: <input type="text" name="Phone" /><br /> Company: <input type="text" name="Company" /><br /> Product Type: <input type="text" name="Product Type" /><br /> Product Name: <input type="text" name="Product Name" /><br /> Quantity: <input type="text" name="Quantity" /><br /> <input type="submit" value="Submit Data"> <input type="reset" value="Reset Form"> </form> Каждая входная запись должна иметь первичное ключевое поле(я). В рассматриваемом случае таблица Order будет иметь ключевое поле Order. Так как поле Order отсутствует в HTML-форме, значение первичного ключевого поля Order автоматически генерируется сервером Smans как номер записи (ряда) таблицы в увеличивающемся порядке. Если таблицы Order в базе данных еще нет, она будет создана. В случае, если таблица уже существует с другими колонками, к ней будут добавлены новые колонки, описываемые в форме. В результате таблица, как минимум, будет иметь следующий список колонок: Order Date Name Phone Company Product Type Product Name Quantity Вы можете легко изменить выводимое сообщение или последующие действия в случае успешного ввода записи с помощью поля $Forward. Например: <input type="hidden" name="$Forward" value="Confirm.html" /> Все управляющие поля можно называть также управляющими параметрами. Кроме перечисленных выше, используются параметры $PKey. Они полезны, если таблица имеет несколько первичных ключевых колонок, когда необходимо предотвратить повторное появление нескольких значений колонок. Каждый параметр $PKey указывает на имя обычного параметра (поля) в HTML-форме, например: <form action="../servlet/record" method="post"> <input type="hidden" name="$Table" value="Product"> <input type="hidden" name="$PKey" value="Product Type" /> <input type="hidden" name="$PKey" value="Product Name" /> <input type="text" name="Product Type" /> <input type="text" name="Product Name" /> ... В дистрибутиве сервера Smans есть соответствующие примеры, они находятся в директории hforms. Простейшие примеры реализованы на HTML-страницах wapp/hforms/Order.html и wapp/hforms/Product.html. Обратиться к странице из Web-браузера можно так: http://<;domain>[/<application>]/hforms/Order.html. После ввода записи, сервер Smans выдаст некоторое сообщение, по умолчанию: Сценарий диалога посредством HTML-формы Весьма обычная ситуация, когда изображение страницы зависит от некоторых входных параметров, обрабатываемых посредством PHP, JSP или ASP. Такими параметрами могут быть тип Web-браузера, язык общения, личные данные пользователя или его интересы и т.д. Часть параметров определяется из запроса пользователя при его первоначальном обращении. Часть параметров берется из cookies, сохраненных в компьютере клиента от предыдущих сеансов. Другая часть устанавливается в процессе диалога. Зависимости одних параметров от других, это - данные, которые проще хранить отдельно в базе данных, чем вперемежку с разного рода директивами внутри управляющих скриптов или программ. Важность такого подхода не только в большей наглядности. Система базы данных позволяет легко найти нужные группы параметров и зависимостей по запросу. Кроме того, разработчик получает возможность легко менять значения параметров и их зависимости, а значит и конкретный сценарий диалога, не трогая соответствующие скрипты или программы. Рассмотрим распространенную ситуацию, связанную с предоставлением разных ресурсов разным пользователям. Нужные зависимости и соответствующую базу данных можно сформировать в процессе регистрации пользователя. В моем примере, в листинге 3, такими ресурсами являются новости. Управляющее поле $Table, кроме задания таблицы, указывает на ключевое поле Username. Пользователь сам выбирает, какие новости его интересуют в поле ExpectedNews. Зависимость Username-ExpectedNews сохраняется в базе данных со схемой Username(Password,ExpectedNews). Листинг 3. Записывающая HTML-форма. Регистрация пользователя. <form name="form1" action="../servlet/record" method="post"> <input type="hidden" name="$Table" value="Username" /> <input type="hidden" name="$Forward" value="hforms/Login.html" /> Username: <input type="text" name="Username" /> <br/> Password: <input type="password" name="Password" /> <br/> Expected News: <select name="ExpectedNews" multiple="multiple" size=5> <option value="Sport">Sport</option> <option value="HiTech">Hi Tech</option> <option value="Policy">Policy</option> <option value="Economy">Economy</option> <option value="Financies">Financies</option> </select> <br/> <input type="submit" value="Register"> </form> При успешной регистрации, управление передается HTML-странице hforms/Login.html посредством $Forward. В этой странице помещена вызывающая управляющая HTML-форма, необходимая для входа (login) пользователя в систему, смотрите Листинг 4. Значение ../servlet/recall есть Smans-сервлет для обработки вызывающей формы. Поля $Param указывают параметры, передаваемые Internet-ресурсу поля $Forward. Значения этих параметров выбираются из базы данных в соответствии с зависимостями: {входные данные} -> $Table -> {$Param, ...}. Листинг 4. Вызывающая HTML-форма. Логин пользователя. <form name="form1" action="../servlet/recall" method="post"> <input type="hidden" name="$Table" value="Username" /> <input type="hidden" name="$Forward" value="hforms/News.jsp" /> <input type="hidden" name="$Param" value="Username" /> <input type="hidden" name="$Param" value="ExpectedNews" /> Username: <input type="text" name="Username" /><br/> Password: <input type="password" name="Password" /><br/> <input type="submit" value="Login"> </form> Логика вызывающей HTML-формы для каждого $Param выглядеть в SQL так: SELECT $Param FROM $Table WHERE {input data} Затем все найденные параметры будут переданы по $Forward адресу (URL), в моем случае к hforms/News.jsp, подобно hforms/News.jsp?Username=...&ExpectedNews=...&ExpectedNews=.... Кроме JSP, любой другой ресурс мог быть на этом месте, например серверная страница PHP, сервлет, Perl скрипт и т.д.. Возможный JSP фрагмет изображен на Рис.5. Рис. 5. JSP фрагмент. Отклик сервера. <% String username = request.getParameter("Username"); String enews[] = request.getParameterValues("ExpectedNews"); %> Dear <%= username %>,<br/> This simple demo is regarding the work with html form control.<br/> <h1>Your Favorite News</h1> <% if (enews != null) { for (int i = 0; i < enews.length; ++i) { ... } } %> Описанный выше пример реализован в файлах Register.html, Login.html, и News.jsp в директории hforms сервера Smans, распространяемого бесплатно и с открытым кодом. Заключение Моя задача была показать, как можно просто и быстро разработать динамический Web-сайт не зная SQL и не будучи специалистом по СУБД. Рассмотренных Smans инструментов вполне достаточно, чтобы сконструировать большой разветвленный диалог, когда предыдущая вызывающая HTML-форма пересылает параметры к JSP/PHP/ASP странице, которая в свою очередь может содержать следующую вызывающую HTML-форму и т.д. Важно помнить, что скрытые (hidden) поля внутри HTML-форм нельзя скрыть от пользователя. Тем не менее, Smans-данные вполне защищены. Таблицы создаются и используются только с тех HTML-страниц, которые находятся в одном Web-приложении работающем с сервером Smans. Интернет-технологии - наиболее динамично развивающаяся область, сейчас. В рамках уже существующих языков и стандартов появляются новые языки и новые стандарты. Большинство из них направлено на упрощение и облегчение труда Вэб-разработчиков. Примерами являются: - серверные страницы PHP или JSP, - недавно появившийся фреймворк Ruby on Rails, базирующийся на архитектуре MVC и языке Ruby, - AJAX - JavaScript-расширение базирующееся на XML. К новым Интернет-технологиям относятся также HTML-формы Smans, которые представляют собой декларативный язык в рамках существующего языка HTML. Преимущества Smans HTML-форм определяются особенностями базы данных с которой работает сервер Smans и прежде всего гибкостью структуры этой базы и возможностью вводить данные, заранее не определяя схему базы данных.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру