ebook img

Java Server Pages PDF

431 Pages·2002·17.682 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Java Server Pages

JAVASERVER PAG Использование сервлетов и JSP при проектировании и реализации гибких, расширяемых приложений, удобных в сопровождении Мощные средства аутентификации и интернационализации Совместное использование стандартов XML и XSLT и технологии JSP Применение шаблонов JSP для разработки приложений на базе компонентов Sun microsystems ДЭВИД М. ГЕРИ Серия Java™ 2 Platform, Enterprise Edition ББК 32.973.26-018.2.75 Г37 УДК 681.3.07 Издательский дом "Вильяме" Зав. редакцией С.Н. Тршуб Перевод с английского и редакция ВВ. Вейтмана По общим вопросам обращайтесь в Издательский дом "Вильяме" по адресу: [email protected], hitp://www.wilUamspubtishing.com Герц Дэвид, М. Г37 Java Server Pages. Библиотека профессионала. : Пер, с англ. - М.: Изда- тельский дом "Вильяме", 2002. - 448 с.: ил. - Парал. тит. англ. ISBN 5-8459-0290-8 (рус.) Данная книга начинается с рассмотрения пользовательских дескрипторов, т.е. с тех вопросов, которыми обычно заканчиваются книги, представляющие собой введение в JSP. В ней рассматривается около 50 пользовательских дескрипторов JSP. Они выполняют раз- личные задачи: от поддержки форматов, специфических для разных стран, до разбора XML- кода с использованием Document Object Model. Поддержка пользовательских дескрипторов — одно из главных преимуществ JSP, поскольку данная возможность позволяет организовы- вать одновременную работу нескольких специалистов, при этом они практически не зави- сят друг от друга. Далее В книге рассматриваются HTML-формы, JSP-шаблоны, архитектуры Mode! 1 и Model 2, поддержка событий, вопросы безопасности, работа с базами данных и XML. В последней главе продемонстрировано использование данных технологий при соз- дании реального Web-приложения. Главной целью было рассказать читателю о том, как с помощью компонентов bean, сервлетов и JSP создаются гибкие расширяемые приложения, удобные в сопровождении. Данная книга написана для разработчиков, имеющих опыт использования языка Java и знакомых с серояетамн и JSP. ББК 32.973.26-018.2.75 Все названия программных продуктов являются зарегистрированными торговыми марками со- ответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на магнитный носитель, если на это нет письменного разреше-. ния издательства Prentice Hall, Inc. Authorized translation from the English language edition published by Prentice Hall, Ptr., Copyright © 2001 A31 rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Russian language edition published by Williams Publishing House according to the Agreement with R&I Enterprises International, Copyright О 2002 ISBN &-845ВД290-8 (рус.) © Издательский дом "Вильяме", 2002 ISBN01M)3O7O4-l (англ.) © Prentice Hall Inc.,2001 Содержание Введение 10 Глава 1. Основы построения пользовательских дескрипторов 17 Применение пользовательских дескрипторов — JSP-файл 19 Определение пользовательских дескрипторов — файл описания 20 Реализация пользовательских дескрипторов — класс поддержки дескриптора 21 Ссылка на описание библиотеки в WEB-INF/web.xml 24 Элементы <taglib> и <tag> 24 Жизненный цикл пользовательского дескриптора 26 Организация взаимодействия потоков 27 Пользовательские дескрипторы с атрибутами 28 Доступ к информации о документе 32 Обработка ошибок 35 Класс],] для реализации пользовательских дескрипторов 35 Тело дескриптора 39 Глава 2. Дополнительные вопросы создания пользовательских дескрипторов 43 Обработчики тела дескриптора 44 Итерации 46 Переменные сценария 49 Тело дескриптора 54 Вложенные дескрипторы 63 Глава 3. НТМЬформы 67 Формы и компоненты bean 67 Проверка корректности данных 74 Базовый набор классов для работы с формами 82 Применение пользовательских дескрипторов 95 Глава 4. Шаблоны 99 Инкапсуляция алгоритмов компоновки 100 Необязательное содержимое 104 Содержимое, зависящее от роли 107 Раздельное определение областей 108 Вложенные области 110 Расширение областей 112 Объединение различных подходов к созданию областей 113 Реализация дескрипторов поддержки областей 115 Содержание 7 Глава 5. Разработка WEB-приложений 131 Model I 132 Model 2: архитектура MVC 133 Пример использования архитектуры Model 2 134 Глава 6. Базовый набор классов для создания приложенийi MMooddeell 22 149 Базовый набор классов Model 2 149 Модернизация программ 157 Учет новых сценариев развития 162 Применение пользовательских дескрипторов 167 JSP-c цен ари и 169 Глава 7. Поддержка событий 17S Поддержка событий в базовом наборе классов Model 2 174 Повторная активизация форм 178 Глава 8.118N 197 Unicode 197 Кодировки 199 Поддержка регионов 201 Наборы ресурсов 202 Форматирование данных, чувствительных к региону 212 Языки, поддерживаемые броузерами 219 Пользовательские дескрипторы 223 Глава 9, Защита 235 Аутентификация 235 Базовая аутентификация 239 Дайджест-аутентификация 242 Аутентификация на основе форм 242 Использование SSL и сертификата клиента 246 Настройка процедуры аутентификации 246 Элементы защиты Х'УеЬ-приложений 251 Программная аутентификация 254 Глава 10. Работа с базами данных 267 Создание базы данных 268 Источники данных 270 Пользовательские дескрипторы для работы с базами данных 271 Пул соединений 283 Предварительно подготовленные выражения 294 Транзакции 300 Прокрутка набора результатов 303 Глава 11. XML 309 Генерация XML-документов 311 Обработка сгенерированных XML-данных 316 Разбор XML-кода 317 8 Содержание Преобразование XML-документов 347 Использование XPath 356 Глава 12. Приложение на базе JSP 363 Интерактивный магазин 364 Базовый набор классов Model 2 385 Интернационализация 403 Аутентификация 409 НТМЬформы 420 Повторная активизация чувствительных форм 427 SSL 428 XML и DOM 429 Приложение Л. Фильтры сервлетов 435 Пример фильтра 436 Предметный указатель 439 ВВЕДЕНИЕ В скоре после того, как в марте 1999 г. был опубликован том Graphic Java, посвя- щенный Swing, я заметил, что Java-программы, предназначенные для работы на стороне сервера, приобретают все большую популярность. Пришлось задумать- ся, не следует ли посвятить мою следующую книгу именно этим вопросам. Несмотря на то что все мое время было заполнено увлекательными экспериментами с XML, XSLT и Java, я отдавал себе отчет в том, что эти средства играют, скорее, вспомога- тельную роль при создании Web-приложений. Основной технологией, как мне тогда казалось, являются сералеты. Надо признаться, сервлеты не приводили меня в восторг. Я недоумевал, как могут разработчики мириться с тем, что им приходится создавать интерфейсные элементы, формируя HTML-код посредством операций печати. С 1984 г. я участвовал в про- граммных проектах, где к моим услугам были объектно-ориентированные языки и ин- струментальные средства создания пользовательских интерфейсов. Я имел опыт раз- работки приложений на Smalltalk, Eiffel и NeXTSTEP и мне казалось, что использова- ние HTML, а в особенности написание программных кодов для генерации HTML- элементов, можно сравнить с попытками ездить на спортивном автомобиле по песча- ным насыпям. В 1999 г. технология JSP делала свои первые шаги, но уже тогда можно было по- нять, насколько она перспективна. Благодаря JSP появилась возможность объединять Java и HTML и открылись новые перспективы создания Web-приложений. Кроме то- го, в спецификации JSP 1.0 одна фраза привлекла особое внимание. Речь шла о том, что в спецификации JSP 1.1 будет предусмотрена поддержка расширяемых дескрип- торов; эти дескрипторы можно будет применять в любом JSP-документе. Разработчик получал возможность создавать собственные элементы, инкапсулировать в них Java- код и включать в документ как обычные дескрипторы. Я понял, что темой моей сле- дующей книги будет JSP. Я начал работать над введением в JSP и даже написал первую главу, но тут мне пришлось пересмотреть свое решение. На то были две причины. Во-первых, в изда- ниях, рассчитанных на начинающих, нет недостатка, а я не хотел, чтобы моя книга стала лишь одной из многих. Во-вторых, первая глава получилась скучной, а я терпеть не могу скучных книг. Поэтому я решил оставить начатую работу и написать книгу, которую вы держите в руках. Введение 11 О чем эта книга Как видно из названия, эта книга о JavaServer Pages, в частности о расширенных средствах, предоставляемых в распоряжение разработчика JSP-документов. Главной целью было рассказать читателю о том, как с помощью компонентов bean, сервлетов и JSP создаются гибкие расширяемые приложения, удобные в сопровождении. Данная книга начинается с рассмотрения пользовательских дескрипторов, т.е. с тех вопросов, которыми обычно заканчиваются книги, представляющие собой введе- ние в JSP. Поддержка пользовательских дескрипторов— одно из главных преиму- ществ JSP, поскольку данная возможность позволяет организовывать одновременную работу нескольких специалистов, при этом они практически не зависят друг от друга. Далее в книге рассматриваются HTML-формы, JSP-шаблоны, архитектуры Model 1 и Model 2, поддержка событий, вопросы безопасности, работа с базами данных и XML. В последней главе продемонстрировано использование данных технологий при соз- дании реального Web-приложения. API сервлетов и JSP Коды программ, приведенные в данной книге, соответствуют спецификациям Servlet 2.2 и JSP 1.1. Несмотря на то что проекты спецификаций Servlet 2.3 и JSP 1.2 появились в ноябре 2000 года, к моменту выхода этой книги в печать они постоянно дорабатыва- лись. Важным дополнением, которое появилось в спецификации Servlet 2.3, стали фильтры сервлетов; они описаны в приложении А. Однако имейте в виду, что к тому времени, как эта книга попадет к вам в руки, спецификация может измениться. Как тестировались коды Все коды, приведенные в данной книге, были протестированы с помощью сервера Tomcat 3.2.I. Некоторые коды, в частности примеры, связанные с аутентификацией, некорректно работают с Tomcat S.2.1, подобные случаи специально оговорены в тек- сте книги. Поскольку Tomcat является основным сервером для сервлетов HJSP, КОДЫ, приве- денные в этой книге, должны работать с любым контейнером сервлетов, который со- ответствует Servlet 2.2 и JSP 1.1 (либо более поздним версиям этих спецификаций). Если пример из книги некорректно работает с вашим контейнером сервлетов, при- чиной тому, вероятнее всего, является ошибка в реализации контейнера. Примеры из данной книги были также протестированы с помощью контейнера сервлетов Resin 1.2 (он доступен по адресу http://www.caucho.com). Чтобы убе- диться, что код, написанный вами, работает корректно и является переносимым, же- лательно протестировать его с помощью нескольких доступных вам контейнеров. 12 Введение На кого рассчитана эта книга Данная книга написана для разработчиков, имеющих опыт работы на языке Java и знакомых с сервлетами и JSP. Для большинства читателей эта книга станет второй книгой о сервлетах HJSP, прочитанной ими. Если же вы еще никогда не встречались с сервлетами и JSP, я рекомендую вам следующие книги для начинающих. • Core Servlets andJSP, Marty Hail, Sun Microsystems Press. • Java Servlet Programming, Jason Hunter, O'Reilly. • Web Development with JavaServer Pages, Fields и Kolb, Manning. Читателю не помешает также познакомиться с шаблонами проектов и UML (Unified Modeling Language— унифицированный язык моделирования). В этой книге использу- ются диаграммы, которые показывают взаимосвязь между классами. Список ресурсов, имеющих отношение к шаблонам проектов и UML, приведен в конце главы 6. Данная книга не предназначена для авторов Web-страниц. Если вы создаете HTML-документы, но не имеете опыта программирования на Java, знакомство с JSP вам лучше начать с одной из книг, перечисленных выше. Как создавалась эта книга Создание объектно-ориентированных программ — это, как правило, итеративный процесс. Вы начинаете с нескольких классов, добавляете новые, дорабатываете соз- данные ранее, постоянно вносите изменения до тех пор, пока не будет завершена ра- бота над системой. Эту процедуру принято называть доводкой (refactoring). Проработав 15 лет программистом, я привык писать книги по тому же принципу, что и программы. Каждая глава начиналась с нескольких "штрихов" и в процессе до- водки выглядела так, как вы видите ее сейчас. Вы можете представить себе процесс доводки, ознакомившись с моей статьей, посвя- щенной JSP-шаблонам, которая была опубликована в JavaWoHd (http: //developer. Java.sun.com/developer/technicalArticles/javaserverpages/jsp_templates) . Эта статья стала "исходным материалом" для главы 4 данной книги. Сравнив статью с гла- вой 4, вы увидите, с чего начиналась работа над главой и чем закончилась. Как текст, так и коды были существенно переработаны. Как пользоваться этой книгой Эта книга— не роман, поэтому вряд ли вы сядете и прочтете ее "от корки до кор- ки". Поскольку многие предпочитают читать главы в произвольном порядке, каждая глава написана так, что она практически не зависит от других. Исключение составля- ет глава 6, посвященная Model 2. Архитектура Model 2 рассмотрена в главе 5, поэтому эту главу желательно прочитать перед главой 6. В последней главе этой книги показано, как технологии, рассмотренные ранее, применяются для создания Web-приложения. Если вы хотите составить представле- ние об этих технологиях, просмотрите последнюю главу перед тем, как приступать к чтению. Введение 13 Библиотеки пользовательских дескрипторов В данной книге рассматривается около 50 пользовательских дескрипторов JSP. Они выполняют различные задачи: от поддержки форматов, специфических для раз- ных стран, до разбора XML-кода с использованием Document Object Model. Эти деск- рипторы вы можете свободно использовать в своих разработках. Адрес, по которому расположены коды дескрипторов, будет указан ниже, Рассмотрение пользовательских дескрипторов в данной книге преследует две це- ли. Во-первых, приведенный код служит примером пользовательских дескрипторов. Во-вторых, они подтверждают основные идеи, которые обсуждаются в книге. Напри- мер, в главе, посвященной поддержке кодировок и форматов различных стран, обсу- ждаются вопросы локализации текста, числовых значений, дат и денежных единиц. В конце этой главы показано, как реализуются пользовательские дескрипторы, предна- значенные для выполнения этих задач. Коды, приведенные в книге Коды, приведенные в данной книге, в том числе библиотеки пользовательских де- скрипторов, вы можете скопировать, обратившись по адресу http://www.ph.ptr. com/advj эр. Соглашения, принятые в книге В табл. 0.1 приведены основные соглашения, используемые для представления программного кода. Соглашение Пример Имена классов начинаются с прописной буквы public class ClassName Имена методов начинаются со строчной буквы; getLength остальные слова, входящие в имя метода, начина- ются с прописной буквы Имена переменных начинаются со строчкой бук- private int length вы; остальные слова, входящие в имя переменной, private int начинаются с прописной буквы bufferLength В большинстве случаев имена методов приводятся в тексте без параметров. Пара- метры указываются лишь тогда, когда это необходимо по ходу обсуждения. В табл. 0,2 приведены соглашения о представлении текста.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.