Я программирую с помощью JSP и ASP в течение длительного времени. Среди этих двух решений для программирования на стороне сервера я все больше считаю, что JSP гораздо более мощный, чем ASP. Почему мне следует выбрать JSP в качестве предпочтительного инструмента разработки серверных веб-приложений? Конечно, JSP обладает множеством интересных возможностей и функций, но библиотека тегов JSP стала для меня одной из наиболее важных причин принять это решение.
Почему ты это говоришь? Причины двоякие: поддержание и скорость развития. Языки серверных сценариев на самом деле являются плавильным котлом развития Интернета. На странице сервера вы можете легко смешивать различные методы и объекты скрипта. Страницы такого типа — это просто бетон для построения Интернета. Именно эта смесь «вещей» дает серверным сценариям мощные возможности обработки информации. Он позволяет серверным программистам разрабатывать динамические и гибкие веб-страницы. Но, с другой стороны, свободное смешивание скриптов имеет и свои недостатки, заключающиеся в том, что его очень хлопотно поддерживать, тем более, что размер проекта продолжает расти. Что еще хуже, по мере увеличения сложности кода скорость разработки будет замедляться, что не способствует разработке средних и крупных веб-приложений. Множество средних или крупных серверных веб-приложений. запускаются очень поздно, а стоимость высока. Кроме того, после разработки сайту все равно необходимо найти квалифицированных программистов для поддержки этих довольно сложных кодов. В результате эти программисты становятся обычными веб-дизайнерами, а серверное приложение играет ключевую роль как в окончательном графическом дизайне, так и в реализации. .Оно ослаблено.
Чтобы решить эту проблему, ASP представила объектную технологию COM, а JSP в качестве контрмеры предоставила J2EE. Эти решения построены на механизмах централизованного многократного использования кодовых баз. Однако они слишком сложны в использовании и требуют много времени для изучения. Более того, эти решения не уменьшают соблазна создавать беспорядочный код, и в результате нам приходится организовывать большие, хорошо структурированные команды разработчиков для использования этих технологий. Для проектов среднего размера такие методы обычно используются реже, но на самом деле проекты веб-приложений среднего размера являются наиболее распространенными. В результате многие проекты вынуждены использовать среду разработки и сопровождения, не отвечающую их потребностям.
К счастью, JSP предлагает лучший способ решить эту проблему. Библиотеки тегов предоставляют простой способ создания повторно используемых блоков кода. После создания библиотеки тегов ее можно снова использовать во многих проектах. Что еще более удобно, так это то, что, в отличие от COM и J2EE, если вы умеете писать JSP, вам не нужно изучать какие-либо другие навыки для создания библиотеки тегов! Наконец, библиотеки тегов также улучшают удобство обслуживания веб-приложений. Это улучшение удобства сопровождения отражается в простой реализации настраиваемых интерфейсов на основе XML на страницах JSP. В результате веб-дизайнеры могут создавать веб-приложения JSP, не зная, что такое JSP. Таким образом, веб-разработка становится очень эффективной задачей коллективной разработки. Программисты JSP могут создавать собственные теги и модули внутреннего кода, а веб-дизайнеры могут использовать собственные теги и полностью сосредоточиться на самом веб-дизайне. Библиотека тегов решает проблему путаницы кода, причем делает это чисто и красиво (на самом деле XML — это суть решения этих проблем, но библиотека тегов по-прежнему играет ключевую роль).
Что такое библиотека тегов?
Библиотеку тегов JSP (также называемую пользовательской библиотекой тегов) можно рассматривать как метод создания сценариев на основе XML с помощью JavaBeans. Концептуально теги представляют собой простые и многократно используемые структуры кода. Например, в нашей последней версии JSPKit (в рамках JSP Insider) доступ к XML-документам легко осуществляется с помощью XML-тегов. См. список А ниже.
Листинг A: Примеры тегов, выполняющих преобразования XML/XSL, и содержащихся в них HTML-страниц.
<%@ taglib uri=" http://www.jspinsider.com/jspkit/JAXP " prefix="JAXP"%>
<JAXP:ТрансформерТаг>
<JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile>
<JAXP:XSLFile>c:/xml/example.xsl</JAXP:XSLFile>
</JAXP:TransformerTag>
В приведенном выше примере используются простые теги для доступа к более мощному скрытому коду. Теговая часть оператора сначала загружает XML-файл, а затем применяет XSL-файл для преобразования содержимого XML-файла в определенный формат. формате представления и отправляется клиенту, все это с использованием очень простого тега. Пользовательские теги упрощают создание повторно используемых модулей с открытым исходным кодом в проектах JSP, и все, что вам нужно, — это библиотека тегов и ее документация.
Важные особенности библиотеки тегов
1. Легкость установки в несколько проектов. Теги можно легко переносить из одного проекта JSP в другие проекты. Создав библиотеку тегов, просто упакуйте все в файл JAR, который можно повторно использовать в любом проекте JSP. Библиотеки тегов становятся все более популярными, поскольку теги можно использовать повторно и легко использовать в собственных проектах. В настоящее время лучший ресурс тегов можно найти на JSPTags.com.
2. Расширенная библиотека тегов JSP может иметь любые возможности и функции спецификации JSP (JSP 1.2). Вы можете расширять и увеличивать функции JSP без ограничений, не дожидаясь появления следующей версии JSP. Например, вас не устраивает вызов JSP include. Вы можете создавать свои собственные теги включения, соответствующие вашим собственным спецификациям.
3. Простота обслуживания.
Библиотека тегов упрощает поддержку веб-приложений JSP по следующим причинам:
(1) Приложение для этикеток простое и понятное для каждого.
(2) Все логические коды программы сосредоточены в процессоре тегов и JavaBeans. Это означает, что при обновлении кода вам не нужно изменять каждую страницу, использующую этот код. Вам нужно изменить только централизованные файлы кода.
(3) Если вам нужно добавить новые функции, вам не нужно изменять какие-либо существующие страницы. Вы можете добавить к тегам дополнительные атрибуты, чтобы ввести новое поведение, в то время как другие старые атрибуты остаются неизменными, чтобы все старые страницы можно было использовать. .работает нормально. Например, у вас есть метка, которая делает весь текст синим:
<BlueText>Мой текст</BlueText>
Но позже в проекте вы захотите, чтобы синий был темнее. Вы можете сохранить исходную метку и просто добавить к ней новый атрибут: тень, как показано ниже:
<BlueText Shade="teal">Мой текст</BlueText>
Все старые теги по-прежнему могут отображать синий текст, но теперь вы можете использовать тот же тег для создания затемненного синего текста.
(4) Метки улучшают возможность повторного использования кода. Код, который был протестирован и использован много раз, определенно будет содержать меньше ошибок. Таким образом, страницы JSP, использующие пользовательские теги, также имеют меньше дефектов и, естественно, их гораздо удобнее поддерживать.
4. Библиотека тегов времени быстрой разработки обеспечивает простой способ повторного использования кода. Один из стандартных способов повторного использования кода на серверных языках — использование шаблонов. По сравнению с использованием библиотек шаблонов библиотеки тегов являются лучшим решением. С помощью библиотеки шаблонов вам придется модифицировать шаблоны или строить строгий интерфейс для каждого проекта, тогда как библиотека тегов не имеет этих ограничений и обладает всеми преимуществами объектно-ориентированного подхода, может быть гибкой и более расширяемой, а за счет повторного использования code, вы сможете тратить меньше времени на разработку и больше времени на проектирование своего веб-приложения. Интерфейс библиотеки тегов также очень прост, что упрощает вставку, использование и отладку.
Структура тегов
Хотя библиотека тегов очень проста в использовании, внутренний механизм реализации создания библиотеки тегов все еще довольно сложен, по крайней мере, сложнее, чем создание простого JavaBean. Сложность связана с тем, что библиотека тегов состоит из нескольких частей. Однако вам нужно только овладеть знаниями Java и JSP.
Простой тег состоит из следующих элементов:
1. JavaBean: Чтобы воспользоваться преимуществами Java и присущей ей объектно-ориентированной природой, многократно используемый код должен быть помещен в отдельный контейнер кода, который является JavaBean. Эти JavaBeans не являются существенной частью библиотеки тегов, но представляют собой базовые модули кода, используемые библиотекой тегов для выполнения назначенных задач.
2. Процессор тегов. Процессор тегов — это настоящее сердце библиотеки тегов. Обработчик тегов ссылается на любые необходимые внешние ресурсы (JavaBeans) и отвечает за доступ к информации страницы JSP (объекты PageContext). Страница JSP передает атрибуты тега, установленные на странице, и содержимое тела тега процессору тегов. Когда процессор тегов завершает обработку, он отправляет обработанные выходные результаты обратно на страницу JSP для дальнейшей обработки.
3. Дескриптор библиотеки тегов (файл TLD): это простой XML-файл, в котором записаны атрибуты, информация и расположение процессора тегов. Контейнер JSP использует этот файл, чтобы знать, где и как вызвать библиотеку тегов.
4. Файл веб-сайта web.xml: это файл инициализации веб-сайта. В этом файле необходимо определить пользовательские теги, используемые на веб-сайте, а также файл tld, используемый для описания каждого пользовательского тега.
5. Файлы релизов (файлы WAR или JAR). Если вы хотите повторно использовать пользовательские теги, вам нужен способ переместить их из одного проекта в другой. Упаковка библиотеки тегов в файл JAR — простой и эффективный способ.
6. Объявление библиотеки тегов на странице JSP. Если вы хотите использовать пользовательский тег на странице JSP, вам необходимо использовать идентификатор библиотеки тегов, чтобы объявить его на странице.
Кажется, что предстоит много работы, и, конечно, это будет немного сложно, когда вы впервые начнете им пользоваться, но это не очень сложно. Дело не в кодировании, а в правильной организации частей. Эта иерархическая структура важна, поскольку она делает использование тегов гибким и упрощает их передачу. Что еще более важно, эти уровни позволяют автоматизировать весь процесс создания библиотеки тегов с помощью JSP IDE (интегрированной среды разработки JSP). JSP IDE может автоматически выполнить большую часть работы по созданию пользовательских тегов, и вам придется нести ответственность только за настройку обработчиков кода и тегов самостоятельно.
(Примечание. Обработчик тегов определяет только один пользовательский тег; библиотека тегов представляет собой совокупность нескольких обработчиков тегов, выполняющих одну и ту же задачу.)
Создайте свой первый тег.
Далее вы шаг за шагом научитесь создавать пользовательский тег, конкретный пример. расширяет JSP, добавляя в него собственную функцию кодирования HTML. Эта функция заменяет все символы < и > кодом HTML. Его можно легко расширить для выполнения другой обработки кодирования. Для упрощения в этом примере объясняются только основные элементы создания пользовательского тега.
Любая повторно используемая часть кода
, создающая JavaBean,
должна быть помещена в JavaBean.Это очень важно. Таким образом, вы можете повторно использовать код в других проектах. Поскольку любой код, помещенный внутри обработчика тега, не подлежит повторному использованию за пределами тега, важно изолировать повторно используемые части кода. В этом примере логика, закодированная для HTML, является общей и поэтому помещена в JavaBean, см. листинг B.
Листинг B: JavaBeans в HTML-кодировке
/* HTML_Format.java */
общедоступный класс HTML_Format расширяет объект, реализует java.io.Serializable {
/** Создать новый HTML_Format */
public HTML_Format() {}
/** Заменить все символы < и > в строке HTML-кодировкой ответа */
общедоступная строка HTML_Encode (строка as_data)
{
int li_len = as_data.length();
/*Длина строкового буфера больше исходной строки*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));
/* Цикл для замены всех символов < и >*/
for(int li_count = 0; li_count <li_len; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}
Возврат (lsb_encode.toString());
}
}
Код для создания процессора тегов показан в листинге C:
Листинг C: Процессор тегов кодирования HTML
импортировать java.io.IOException;
импортировать javax.servlet.jsp.*;
импортировать javax.servlet.jsp.tagext.*;
общедоступный класс HTML_FormatTag расширяет BodyTagSupport
{
/* 1) Эта функция будет вызвана в конце тега*/
public int doEndTag() выдает JspTagException
{
пытаться
{ /* 2) Получить текст в метке */
BodyContent l_tagbody = getBodyContent();
String ls_output = "";
/* 3) Если в теле тега есть текст, обработайте его */
если (l_tagbody! = ноль)
{HTML_Format l_format = новый HTML_Format ();
/* 3a) Преобразуем содержимое тела тега в строку */
Строка ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4) Записываем результаты обратно в поток данных */
pageContext.getOut().write(ls_output.trim());
}
улов (IOException e)
{ throw new JspTagException("Ошибка тега:" + e.toString());
}
/* Позвольте JSP продолжить обработку содержимого следующих страниц*/
вернуть EVAL_PAGE;
}
}
Эта обработка очень проста и включает в себя:
1. Прочитайте текст между открывающим и закрывающим тегами.
2. Вызов функции кодирования HTML
3. Верните результаты на страницу JSP.
Создание дескриптора тега
Нам нужно описать пользовательский тег, чтобы система знала, что с ним делать. Суффикс этого файла описания — .tld. Файл TLD обычно называется в честь процессора тегов и хранится в каталоге «/WEB-INF/». См. листинг D.
Листинг D: Дескриптор тега кодировки HTML <?xml version="1.0"coding="UTF-8" ?>
<!DOCTYPE taglib
ПУБЛИЧНАЯ "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
" http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd ">
<ТАГЛИБ>
<TLIBVERSION>1.0</TLIBVERSION>
<JSPVERSION>1.1</JSPVERSION>
<SHORTNAME>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>Тег кодировки HTML </INFO>
<TAG>
<ИМЯ>HTMLEncode</ИМЯ>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<ИНФО>Кодировать HTML</ИНФО>
</TAG>
</TAGLIB>
Обновите файл Web XML
, чтобы теперь сообщить JSP-контейнеру, как использовать библиотеку тегов. Для этого вам необходимо изменить файл web.xml. В частности, вам необходимо добавить проект taglib для регистрации библиотеки тегов и назначить тегу URI. URI — единственный индекс на веб-сайте, применимый к этому конкретному тегу. Поскольку в будущем тег может использоваться на разных веб-сайтах, лучше всего использовать полный URL-адрес и/или имя пакета, чтобы обеспечить уникальность. Этот пример упрощен; пример кода см. в листинге E.
Листинг E. Изменение файла web.xml <?xml version="1.0"coding="ISO-8859-1"?>
<!DOCTYPE web-app
ПУБЛИЧНЫЙ "-//Sun Microsystems, Inc.//Веб-приложение DTD 2.2//EN"
" http://java.sun.com/j2ee/dtds/web-app_2.2.dtd ">
<ВЕБ-ПРИЛОЖЕНИЕ
><TAGLIB>
<TAGLIB-URI>
HTMLEncode
</TAGLIB-URI>
<TAGLIB-LOCATION>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-LOCATION>
</TAGLIB>
</WEB-APP>
Используйте новые теги.
После установки настроенных тегов вы можете использовать их на своих страницах JSP. Для этого просто используйте команду директивы taglib, чтобы объявить теги, которые вы хотите использовать на странице. Теги индексируются по их уникальному URI, которому затем присваивается префикс пространства имен. Этот префикс не имеет особого значения, поскольку он не конфликтует с другими пространствами имен, он может быть произвольным. См. листинги F и G ниже.
Листинг F: Использование тега кодировки HTML<%@ taglib uri="HTMLEncode" prefix="Examples" %>
на странице JSP
<ПРЕД>
<?XML:NAMESPACE PREFIX = Примеры /><Examples:HTMLEncode>
<Привет, простой образец>
</Примеры:HTMLEncode>
</PRE>
Листинг G: Вывод примера кода<Привет, простой пример>
который отображается как:
<Привет, простой образец>
С помощью этого тега я закодировал весь код страницы. Все пользовательские теги обрабатываются на сервере. Это означает, что вы не увидите пользовательские теги на выходной странице.
Как видите, создавать теги не сложно. Самая трудная часть — изучить все тонкости процессоров тегов. Это мощная функция, и мы только поверхностно коснулись ее. Из-за большого количества шагов, связанных с этим процессом, новые программисты JSP могут сбить с толку создание тегов.
Заключение
Библиотека тегов — одна из наиболее важных функций JSP, и она все еще находится в стадии постоянного развития. Это действительно новая вещь, поэтому она еще не получила широкого распространения, но библиотека пользовательских тегов раскрыла свою тайну, и все больше и больше разработчиков начинают обращать на нее внимание и использовать ее. Можно ожидать, что в конце 2001 года библиотеки тегов станут очень распространенной функцией во многих проектах JSP.
Преимущества библиотек тегов лишь кратко обсуждаются в этой статье. Библиотеки тегов на самом деле обладают множеством других мощных функций. Библиотеки тегов выводят разработку JSP в беспрецедентный новый мир. Это действительно интересная новая технология для разработчиков JSP, поскольку они получают инструмент, который может конвертировать JSP в различные приложения и создавать веб-приложения любого типа. Библиотека тегов превращает JSP в самую богатую, динамичную среду разработки и мощную среду веб-программирования. Его возможности ограничены только нашим воображением и творчеством.