- •724 Содержание
- •Глава 6. Интерфейсы и внутренние классы 139
- •У казания и ответы
- •Вопрос 3.2.
- •Вопрос 8.2.
- •Вопрос 8.3.
- •Вопрос 14.2.
- •Вопрос 21.5.
- •Ч асть 1. Основы языка java
- •Глава 1 введение в классы и объекты Основные понятия ооп
- •Язык Java
- •Нововведения версий 5.0 и 6.0
- •Простое приложение
- •Классы и объекты
- •Сравнение объектов
- •Консоль
- •Простой апплет
- •Задания к главе 1 Вариант a
- •Вариант b
- •Тестовые задания к главе 1
- •Вопрос 1.5.
- •Г лава 2 типы данных и операторы
- •Базовые типы данных и литералы
- •Документирование кода
- •Операторы
- •Классы-оболочки
- •Операторы управления
- •Массивы
- •Класс Маth
- •Управление приложением
- •Задания к главе 2 Вариант a
- •Вариант в
- •Тестовые задания к главе 2
- •Переменные класса и константы
- •Ограничение доступа
- •Конструкторы
- •Статические методы и поля
- •Модификатор final
- •Абстрактные методы
- •Модификатор native
- •Модификатор synchronized
- •Логические блоки
- •Перегрузка методов
- •Параметризованные классы
- •Параметризованные методы
- •Методы с переменным числом параметров
- •Перечисления
- •1 : Fpmi : Балаганов
- •Аннотации
- •Задания к главе 3 Вариант a
- •Вариант b
- •Тестовые задания к главе 3
- •Использование final
- •Использование super и this
- •Переопределение методов и полиморфизм
- •Методы подставки
- •Полиморфизм и расширяемость
- •Статические методы и полиморфизм
- •Абстракция и абстрактные классы
- •Класс Object
- •Клонирование объектов
- •“Сборка мусора” и освобождение ресурсов
- •Задания к главе 4 Вариант a
- •Вариант в
- •Тестовые задания к главе 4
- •Вопрос 4.7.
- •Г лава 5 проектирование классов Шаблоны проектирования grasp
- •Шаблон Expert
- •Шаблон Creator
- •Шаблон Low Coupling
- •Шаблон High Cohesion
- •Шаблон Controller
- •Шаблоны проектирования GoF
- •Порождающие шаблоны
- •К порождающим шаблонам относятся:
- •Шаблон Factory
- •Шаблон AbstractFactory
- •Шаблон Builder
- •Шаблон Singleton
- •Структурные шаблоны
- •К структурным шаблонам относятся:
- •Шаблон Bridge
- •Шаблон Decorator
- •Шаблоны поведения
- •К шаблонам поведения относятся:
- •Шаблон Command
- •Шаблон Strategy
- •Шаблон Observer
- •Тестовые задания к главе 5
- •Статический импорт
- •Внутренние классы
- •Внутренние (inner) классы
- •Вложенные (nested) классы
- •Анонимные (anonymous) классы
- •Задания к главе 6 Вариант а
- •Вариант b
- •Вариант c
- •Тестовые задания к главе 6
- •Вопрос 6.5.
- •Класс String
- •Классы StringBuilder и StringBuffer
- •Форматирование строк
- •Лексический анализ текста
- •Регулярные выражения
- •Интернационализация текста
- •Интернационализация чисел
- •Интернационализация дат
- •3 Апрель 2006 г.
- •Задания к главе 7 Вариант a
- •Вариант b
- •Тестовые задания к главе 7
- •Оператор throw
- •Ключевое слово finally
- •Собственные исключения
- •Наследование и исключения
- •Отладочный механизм assertion
- •Задания к главе 8
- •Байтовые и символьные потоки ввода/вывода
- •Предопределенные потоки
- •Сериализация объектов
- •Консоль
- •Класс Scanner
- •Архивация
- •Задания к главе 9 Вариант a
- •Вариант b
- •Вариант с
- •Тестовые задания к главе 9
- •Множества
- •Карты отображений
- •14El - найден по ключу '12'
- •Унаследованные коллекции
- •Класс Collections
- •Класс Arrays
- •Задания к главе 10 Вариант a
- •Вариант b
- •Тестовые задания к главе 10
- •Апплеты
- •Задания к главе 11
- •Тестовые задания к главе 11
- •Классы-адаптеры
- •Задания к главе 12
- •Тестовые задания к главе 12 Вопрос 12.1.
- •Вопрос 12.2.
- •Вопрос 12.3.
- •Вопрос 12.4.
- •Вопрос 12.5.
- •Г лава 13 элементы компоновки и управления
- •Менеджеры размещения
- •Элементы управления
- •Визуальные компоненты JavaBeans
- •Задания к главе 13 Вариант а
- •Вариант b
- •Жизненный цикл потока
- •Управление приоритетами и группы потоков
- •Управление потоками
- •Потоки-демоны
- •Потоки в графических приложениях
- •Методы synchronized
- •Инструкция synchronized
- •Состояния потока
- •Потоки в j2se 5
- •Задания к главе 14 Вариант а
- •Вариант b
- •Тестовые задания к главе 14
- •Вопрос 14.1.
- •Вопрос 14.2.
- •Вопрос 14.3.
- •Вопрос 14.4.
- •Вопрос 14.5.
- •Г лава 15 сетевые программы Поддержка Интернет
- •Сокетные соединения по протоколу tcp/ip
- •Многопоточность
- •Датаграммы и протокол udp
- •Задания к главе 15 Вариант а
- •Вариант b
- •Древовидная модель
- •Элементы таблицы стилей
- •Задания к главе 16 Вариант а
- •Тестовые задания к главе 16
- •Запуск контейнера сервлетов и размещение проекта
- •Первая jsp
- •Взаимодействие сервлета и jsp
- •Задания к главе 17 Вариант а
- •Вариант b
- •Интерфейс ServletContext
- •Интерфейс ServletConfig
- •Интерфейсы ServletRequest и HttpServletRequest
- •Интерфейсы ServletResponse и HttpServletResponse
- •Обработка запроса
- •Многопоточность
- •Электронная почта
- •Задания к главе 18 Вариант а
- •Вариант b
- •Стандартные элементы action
- •Неявные объекты
- •Демонстрация работы тегов c:forEach, c:choose, c:when, c:otherwise
- •Данная страница демонстрирует работу тегов
- •Включение ресурсов
- •Обработка ошибок
- •Технология взаимодействия jsp и сервлета
- •Задания к главе 19
- •Вариант а
- •Вариант b
- •Субд MySql
- •Простое соединение и простой запрос
- •Метаданные
- •Подготовленные запросы и хранимые процедуры
- •Транзакции
- •Id студента: 83, Petrov Внесены данные в students: 83, Petrov Внесены данные в course: 83, xml Данные внесены - транзакция завершена
- •Точки сохранения
- •Пул соединений
- •Задания к главе 20 Вариант а
- •Вариант b
- •Обработка событий
- •Фильтры
- •Задания к главе 21 Вариант а
- •Вариант b
- •Вопрос 21.5.
- •Вопрос 21.6.
- •Г лава22 пользовательские теги
- •Простой тег
- •Тег с атрибутами
- •Тег с телом
- •Элементы action
- •Задания к главе 22 Вариант а
- •Вариант b
- •П риложение 2
- •Включение скриптов на языке JavaScript в html-код
- •Отладка скриптов JavaScript
- •Типы данных
- •Специальные числа
- •Булев тип
- •Переменные типа Undefined и Null
- •Массивы
- •Операторы и выражения
- •Оператор with
- •Оператор switch
- •Метод eval()
- •Функции
- •Передача параметров по значению и по ссылке
- •Глобальные и локальные переменные
- •Пользовательские объекты
- •Прототипы
- •Встроенные объекты Array, Date, Math Объект Array
- •Объект Date
- •Объект Math
- •Объекты window и document
- •Создание новых узлов
- •Добавление новых узлов в документ
- •Удаление и замена узлов в документе
- •Использование каскадных таблиц стилей в dom
- •Свойство элемента innerHtml и outerHtml
- •Динамическое назначение событий
- •Ключевое слово this
- •П риложение3
- •Проектная модель
- •Uml как программный язык
- •Нотации и метамодель
- •Диаграммы, которые ниже будут рассмотрены с разной степенью детализации:
- •Свойства
- •Множественность
- •Операторы
- •П риложение 4 базы данных и язык sql
- •Реляционные субд Модель данных в реляционных субд
- •Нормализация модели данных
- •Язык sql
- •Команды sql
- •Команды определения структуры данных (DataDefinitionLanguage–ddl)
- •Команды манипулирования данными (Data Manipulation Language – dml)
- •Команды управления транзакциями (TransactionControlLanguage–tcl)
- •Команды управления доступом (DataControlLanguage–dcl)
- •Работа с командами sql
- •Ключевое слово distinct
- •Секция from, логическое связывание таблиц
- •Секция where
- •Секция orderby
- •Групповые функции
- •Секция group by
- •Секция having
- •Изменение данных
- •Команда insert
- •Команда delete
- •Команда update
- •Определение структуры данных Команда createtable
- •Команда droptable
- •П риложение5
- •П риложение 6
- •П риложение7 журнал сообщений (logger)
- •П риложение 8
- •Портлеты
Неявные объекты
JSP-страница всегда имеет доступ ко многим функциональным возможностям сервлета, создаваемым Web-контейнером по умолчанию. Неявный объект:
request – представляет запрос клиента. Обычно объект является экземпляром класса, реализующего интерфейс javax.servlet.http.HttpServletRequest. Для протокола, отличного от HTTP, это будет объект реализации интерфейса javax.servlet.ServletRequest. Область видимости в пределах страницы.
response – представляет ответ клиенту. Обычно объект является экземпляром класса, реализующего интерфейс javax.servlet.http.HttpServletResponse. Для протокола, отличного от HTTP, это будет объект реализации интерфейса javax.servlet.ServletResponse. Область видимости в пределах страницы.
pageContext – определяет контекст JSP-страницы и предоставляет доступ к неявным объектам. Объект класса javax.servlet.jsp.PageContext. Область видимости в пределах страницы.
session – создается контейнером в соответствии с протоколом HTTP и является экземпляром класса javax.servlet.http.HttpSession, предоставляет информацию о сессии клиента, если такая была создана. Область видимости в пределах сессии.
application – контейнер, в котором исполняется JSP-страница, является экземпляром класса javax.servlet.ServletContext. Область видимости в пределах приложения.
out – содержит выходной поток сервлета. Информация, посылаемая в этот поток, передается клиенту. Объект является экземпляром класса javax.servlet.jsp.JspWriter. Область видимости в пределах страницы.
config – содержит параметры конфигурации сервлета и является экземпляром класса javax.servlet.ServletConfig. Область видимости в пределах страницы.
page – ссылка this для текущего экземпляра данной страницы является объектом java.lang.Object. Область видимости в пределах страницы.
exception – представляет собой исключение одного из подклассов класса java.lang.Throwable, которое передается странице сообщения об ошибках и доступно только на ней.
JSTL core
Библиотека тегов JSTL состоит из четырёх групп тегов: основные теги – core, теги форматирования – fomatting, теги для работы с SQL – sql, теги для обработки XML – xml.
Library |
Actions |
Description |
core |
14 |
Основные: if/then выражения и switch конструкции; вывод; создание и удаление контекстных переменных; управление свойствами JavaBeans компонентов; перехват исключений; итерирование коллекций; создание URL и импортирование их содержимого. |
formatting |
12 |
Интернационализация и форматирование: установка локализации; локализация текста и структуры сообщений; форматирование и анализ чисел, процентов, денег и дат. |
sql |
6 |
Доступ к БД: описание источника данных; выполнение запросов, обновление данных и транзакций; обработка результатов запроса. |
xml |
10 |
XML-анализ и преобразование: преобразование XML; доступ и преобразование XML через XPath и XSLT. |
Библиотека core содержит в себе наиболее часто используемые теги.
<%@taglib uri=”http://java.sun.com/jstl/core” prefix=”c” %> – для обычной JSP.
<jsp:root version=”1.2” xmlns:c= ”http://java.sun.com/jstl/core”> ...</jsp:root> – для XML формата JSP.
Теги общего назначения:
<c:out /> – вычисляет и выводит значение выражения;
<c:set /> – устанавливает переменную в указанную область видимости;
<c:remove /> – удаляет переменную из указанной области видимости;
<c:catch /> – перехватывает обработку исключения.
Теги условного перехода:
<c:if /> – тело тега вычисляется только в том случае, если значение выражения true;
<c:choose /> (<c:when />, <c:otherwise />) – то же что и <c:if /> с поддержкой нескольких условий и действия, производимого по умолчанию.
Итераторы:
<c:forEach /> – выполняет тело тега для каждого элемента коллекции;
<c:forTokens /> – выполняет тело тега для каждой лексемы в строке.
Теги обработки URL:
<c:redirect /> – перенаправляет запрос на указанный URL;
<c:import/> – добавляет на JSP содержимое указанного WEB-ресурса;
<c:url /> – формирует адрес с учётом контекста приложения request.getContextPath().
<c:param /> – добавляет параметр к запросу, сформированному при помощи <c:url/>.
Ниже приведено несколько примеров, иллюстрирующих применение основных тегов из группы core.
<!--пример #5 : демонстрация работы тегов c:set, c:remove, c:if, c:out: core1.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><title>Демонстрация тегов core</title></head>
<h3> Демонстрация работы тегов c:set, c:remove, c:if, c:out <br/></h3>
<form>
Новое значение переменной:<input type="text" name="set" /> <br/>
Удалить переменную:<input type="checkbox" name="del" /> <br/>
<input type="submit" name="send" value="принять"/><br/>
</form>
<c:if test="${not empty param.send }">
<c:if test="${not empty param.set }">
<c:set var="item" value="${param.set}"
scope="session"></c:set>
</c:if>
<c:if test="${not empty param.del }">
<c:remove var="item"/>
</c:if>
</c:if>
<c:if test="${not empty item }">
<jsp:text>Значение переменной :</jsp:text>
<c:out value="${item }"/>
</c:if>
<c:if test="${empty item and not empty param.send}">
<jsp:text>Значение переменной: </jsp:text>
<c:out value="пусто"/>
</c:if>
</html>
</jsp:root>
<!--пример # 6 : демонстрация работы тегов c:forEach, c:choose, c:when, c:otherwise : core2.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>
<title>Демонстрация тегов core</title>
</head>
<h3>Демонстрация работы тегов <br/>c:forEach, c:choose, c:when, c:otherwise</h3>
<jsp:text>Ниже приведены случайно сгенерированные элементы массива <br/> и сделана их оценка по отношению к числу 50 : <br/></jsp:text>
<jsp:useBean id="arr" class="chapt21.Arr" />
<c:set var="items" value="${arr.fillMap}"
scope="session" />
<c:forEach var="id" items="${items}">
<c:out value="${id}" />
<c:choose>
<c:when test="${id > 50}" >
<c:out value=" - число больше 50"/>
</c:when>
<c:otherwise>
<c:out value=" - число меньше 50"/>
</c:otherwise>
</c:choose>
<br/>
</c:forEach>
</html>
</jsp:root>
Элемент JavaBean, используемый в данном примере, – класс Arr, генерирующий массив из пяти случайных чисел. Его описание хранится в файле Arr.java. Исходный Java-файл хранится в каталоге на верхнем уровне приложения (например каталог build, src или JavaSourse) в зависимости от настроек web-приложения. Значение атрибута class равно chapt21.Arr тега jsp:useBean и означает, что файл находится в пакете chapt21, а имя класса – Arr. EL-выражение arr.fillMap означает вызов метода getfillMap().
// пример # 7 : javabean класс : Arr.java
package chapt21; public class Arr {
public Arr(){} public String[] getfillMap(){ String str[] = new String[5]; for (int i =0; i < str.length ; i++){ String r = Integer.toString((int)(Math.random()*100)); str[i] = r; } return str; } }
В результате в браузер будет выведено: