АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

JSTL xml

Используется для обработки данных XML в JSP-документе.

<% @taglib uri=”http://java.sun.com/jstl/xml” prefix=”x” %> – для обычной JSP-страницы,

<jsp:root version=”1.2” xmlns:x=

”http://java.sun.com/jstl/xml”>...</jsp:root> – для XML формата JSP.

Теги:

<x:forEach> - XML-версия тега <c:choose>;

<x:choose> - XML-версия тега <c:forEach>;

<x:if> - XML-версия тега <c:if>;

<x:otherwise> - XML-версия тега <c:otherwise>;

<x:out> - XML-версия тега <c:out>;

<x:param> - XML-версия тега <c:param>, определяющая параметры для другого тега <x:transform>;

<x:parse> - разбор XML-документа;

<x:set> - XML-версия тега <c:set>;

<x:transform> - трансформация XML-документа;

<x:when> - XML-версия тега <c:when>;

<x:choose> - XML-версия тега <c:choose>;

<x:forEach> - XML-версия тега <c:forEach>.

Включение ресурсов

В реальных проектах JSP-страницы часто состоят из статических элементов. Для этого используется директива include, а файл, содержащий необходимый статичный элемент, сохраняется с расширением .jspf, что означает «фрагмент JSP». При необходимости включения содержимого в JSP-страницу каждый раз, когда та получает запрос, используется стандартное действие jsp:include. В этом случае включаемые сегменты имеют доступ к объектам request, session и applicatio n исходной страницы и ко всем атрибутам, которые имеют эти объекты. Если использовать директиву include, то изменения включаемого сегмента отразятся только после изменения исходной страницы (контейнер JSP перекомпилирует исходную страницу). Для включения содержимого в JSP-документ также используется стандартное действие jsp:include. При этом не обязательно, чтобы включаемый JSP-фрагмент был правильным XML-документом. Главное, чтобы он возвращал текст в виде правильного XML и не нарушал структуру исходного JSP-документа.

<!--пример #15: включение в код статического содержимого: incl_title.jspx -->

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

xmlns:c="http://java.sun.com/jsp/jstl/core"

version="2.0">

<jsp:directive.page contentType=

"text/html; charset=Utf-8" />

<html><head>

<jsp:directive.include file="\WEB-INF\jspf\title.jspf" />

</head>

<body>

<h1>JSP-страница, использующая директиву include</h1>

<h3>Директива include используется для включения статического содержимого, например заголовка страницы.</h3>

</body></html>

</jsp:root>

<!-- пример # 16: код включаемого фрагмента: title.jspf -->

<title>Title from title.jspf</title>

Ниже приведен пример включения динамического содержимого. Включаемый фрагмент получает данные из объектов request и session. Для передачи значения параметра можно использовать строку запроса. Запрос может выглядеть следующим образом:

http://localhost:8082/home/thanks.jspx?lname=username. Установка кодировки в фрагменте необходима для того, чтобы устранить неполадки при включении русского текста.

<!-- пример # 17: использование действия include для динамического включения: thanks.jspx -->

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">

<jsp:directive.page contentType="text/html;charset=Utf-8"/>

<html><head><title>Действие include</title></head>

<body>

Данные, сформированные динамически при включении jsp-фрагмента<br/>

Включаемый фрагмент получает данные из объекта session <br/>

<jsp:include page="\WEB-INF\jspf\params.jsp"/>.

</body></html>

</jsp:root>

<!-- пример #18: включаемый фрагмент: params.jsp -->

<jsp:directive.page contentType="text/html;charset=Utf-8"/>

ID сессии -

<jsp:expression>session.getId()</jsp:expression>

В результате работы документа в браузер будет выведено:

Данные, сформированные динамически при включении jsp-фрагмента.
Включаемый фрагмент получает данные из объектов request, session
ID сессии - 08C51EEC60A97E90C734101F54EA310E.

Также для включения содержимого можно использовать тег <c:import>. Его использование уже было приведено выше.

Обработка ошибок

При выполнении web-приложений, как и любых других, могут возникать ошибки и исключительные ситуации. Три основных типа исключительных ситуаций:

- код «404 Not Found». Возникает при неправильном наборе адреса или обращении к станице, которой не существует;

- код «500 Internal Server Error». Возникает при вызове сервле­том метода sendError(500) для объекта HttpServletResponse;

- исключения времени исполнения. Исключения, генерируемые web-приложением и не перехватываемые фильтром, сервлетом или JSP.

Для обработки исключений в зависимости от типа в приложении может существовать несколько JSP-страниц, сервлетов или обычных HTML-страниц. Для настройки соответствия ошибок и обработчиков используется элемент error-page файла web.xml. Например:

<error-page>

<error-code>404</error-code>

<location>/error404</location>

</error-page>

или

<error-page>

<exception-type>java.io.IOException</exception-type>

<location>/errorIo</location>

</error-page>

В элементе error-code указывается код ошибки, в элементе exception-type – тип исключения.

Для указания страницы, обрабатывающей ошибки, возникающие при выполнении текущей страницы, можно использовать директиву

<jsp:directive.page errorPage="path" />, где path – эту путь к странице-обработчику. Ниже приведен пример, использующий именно такой способ. При нажатии на кнопку генерируется ошибка java.lang.NullPointerException, и управление передается странице error_hand.jsp

<!--пример # 19: генерация ошибки: gen_error.jspx -->

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

xmlns:c="http://java.sun.com/jsp/jstl/core"

version="2.0">

<jsp:directive.page contentType=

"text/html; charset=Utf-8"/>

<jsp:directive.page errorPage="/error_hand.jspx" />

<html><head><title>Генерация исключения</title></head>

<body>

<h2>При нажатии кнопки будет сгенерирована ошибка!</h2>

<form>

<input type="submit" name="gen"

value="Сгенерировать ошибку"/>

</form>

<c:if test="${not emptyparam.gen}">

<jsp:declaration>String str;</jsp:declaration>

<jsp:scriptlet>str.length();</jsp:scriptlet>

</c:if>

</body></html>

</jsp:root>

Страница, вызываемая при ошибках, может иметь статический вид, но при необходимости сообщает о типе и месте возникшего исключения в понятной для клиента приложения форме.

<!--пример # 20: ERROR PAGE: error_hand.jspx -->

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

version="2.0">

<jsp:directive.page contentType=

"text/html; charset=Utf-8" />

<jsp:directive.page isErrorPage="true" />

<html><head><title>Сообщение об ошибке</title></head>

<body>

<p>Сгенерирована ошибка! <br/>

<jsp:expression>exception.toString()</jsp:expression>

</p></body></html>

</jsp:root>


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.012 сек.)