140 likes | 324 Views
Пользовательские действия ( custom actions) в JSP . JSTL. Пользовательские действия ( custom actions). Назначение : отделить вёрстку от программирования на JSP- страницах : Разработчики-программисты создают Java- компоненты , оформляемые в библиотеки тегов
E N D
Пользовательские действия(custom actions) в JSP. JSTL.
Пользовательские действия(custom actions) Назначение: отделить вёрстку от программирования на JSP-страницах: • Разработчики-программисты создают Java-компоненты, оформляемые в библиотеки тегов • Дизайнеры и верстальщики используют эти теги для реализации действий на веб-страницах
Пользовательский тег • При вызове тегу задаются атрибуты • Реализуется в виде объекта, имеющего кроме прочих специальные методы: • выполнения действия • освобождения памяти
Использование библиотеки тегов На JSP-страницеиспользуется директива: <%@ taglib uri="/WEB-INF/hello_example.tld" prefix="t" %> которая указывает TLD-файл, описывающий библиотеку тегов в XML-формате Вызовдействия в виде тега: <t:hello name="${param.username}" default="my friends" /> Краткая форма: <t:tag /> Полная форма: <t:fulltag atr1="val1" … atrn="valn"> тело тега </t:fulltag>
Определение тегов. TLD-файл <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>Необязательное имя</short-name> <uri>http://my.domen.ru/taglibs/hellotaglib</uri> <description>Необязательное описание</description> <tag> <name>hello</name> <tag-class>jstlpg.tags.HelloTag</tag-class> <body-content>empty</body-content> <attribute> <name>username</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag>
Определение тегов. Объект-обработчик тега. public class HelloTag extends TagSupport { private String name = null; public int doStartTag() throws JspException { try { pageContext.getOut().print("Hello."+(name==null?"":name)); } catch (Exception ex) { throw new JspTagException(ex.getMessage()); } return SKIP_BODY; } public void setUsername(String name) { this.name = name; } }
Пример использования тега <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="/WEB-INF/hello_example.tld" prefix="t" %> <html><head> <title>Hello example</title> </head><body> <h1> <t:hello username="${param.name}" default="my friends" /> </h1> </body> </html>
Библиотека стандартных пользовательских действий (JSTL) • Основные теги позволяющие делать циклы, условия, выводить информацию на экран: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> • Теги для работы с xml-документами: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/xml" %> • Теги для работы с базами данных: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/sql" %>
Библиотека стандартных пользовательских действий (JSTL) <c:out name="Hello my friends" /> <c:set var="fio" scope="session" value="param.name" /> <c:import url="footer.jsp" /> <c:url value="/a3.jsp"> <c:param name="title" value="${param.title}" /> </c:url>
Области видимости • Страница (page) • Запрос (request) • Сессия (session) • Приложение (application)
Язык выражений Операторы: ==, !=, <, >, <=, >=, eq, ne, lt, gt, le, ge ${param.username}
Проверка условий и итерации <c:if test="${not empty error}"> </c:if> <c:foreach var="book" items="${books}" begin="0" end="9"> </c:foreach> <c:foreach var="i" begin="${start}" end="${finish}"> </c:foreach>
Упрощённый вариант тегов • Тег создаётся не в виде java-программы, а в виде jsp • Помещается в файл с расширением tag в специальной папке (/WEB-INF/tags ) • В самом файле указываются атрибуты и т.д.