Пользовательские действия (custom actions) в JSP. JSTL.

advertisement
Пользовательские действия
(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 )
В самом файле указываются атрибуты и
т.д.
Download