Доступ к стандартным переменным
В классе PageContext предусмотрены методы для получения ссылок на стандартные (неявные) переменные JSP, которые перечислены в табл. А.20. Поскольку эти переменные автоматически определены в вашей JSP-странице (в методе _jspService()), методы, перечисленные в табл. А.22, используются в основном в других классах.
Таблица А.22. Методы класса PageContext, предназначенные для получения неявных переменных
Неявная переменная |
Тип |
Метод PageContext | |||
exception
out page request response config application session | Exception
JspWriter Object ServletRequest ServletResponse ServletConfig ServletContext HttpSession | getException()
getOut() getPage() getRequest() getResponse() getServletConfig() getServletContext() getSession() |
В табл. А.23 перечислены методы класса PageContext, которые используются для извлечения различных объектов. Обратите внимание на то, что переменные области видимости являются ссылками на константы класса PageContext (см. табл. А.25).
Таблица А.23. Методы класса PageContext, связанные с хранением и извлечением атрибутов
Тип возвращаемого значения |
Метод |
Описание | |||
Object | getAttribute(String name) | Возвращает объект, связанный с указанным именем, областью видимости которого является страница. Если такой объект на странице не обнаружено, возвращается null | |||
void | removeAttribute (String name) | Объект с указанным именем, относящийся к любой области видимости, удаляется | |||
void | setAttribute (String name, Object attribute) | Возвращает объект, который становится атрибутом страницы с именем name и значением attribute | |||
Object | getAttribute (String name, int scope) | Возвращает объект, связанный с указанным именем, в заданной области видимости. Если в этой области объект с таким именем не обнаружен, возвращается null | |||
void | removeAttri bute (String name, int scope) | Удаляет объект, связанный с данным именем | |||
void | setAttribute(String name. Object obj. int scope) | Возвращает объект, который становится атрибутом с именем name и значением obj. Область видимости задается параметром scope | |||
Enumeration | getAttri buteNames I nScope (int scope) | Возвращает перечисление объектов типа String, которые являются атрибутами с указанной областью видимости | |||
int | getAttri buteScope (String name) | Возвращает область видимости атрибута с указанным именем | |||
Object | findAttribute(String name) | Ищет атрибут с заданным именем последовательно в странице, запросе, сеансе (если он существует) и приложении. Возвращает значение атрибута или mil 1 , если такой атрибут не обнаружен |
В табл. А. 24 перечислены методы класса PageContext, которые не вошли ни в одну из приведенных выше категорий.
Таблица А.24. Остальные методы класса PageContext
Тип возвращаемого значения |
Метод |
Описание |
void | forward (String relativeUrlPath) | Переадресует текущие объекты классов ServletRequest и Servl etResponse другому активному компоненту приложения |
void | hand! ePageExcepti on (Exception e) | Этот метод вызывается из раздела try- catch, который включает в себя код вашей JSP-страницы. Он переадресует исключение специальной странице ошибок для данной JSP-страницы или, если она отсутствует, выполняет определенное на этот случай действие |
void | include (String relativeUrlPath) | Указанный ресурс обрабатывается как часть текущих объектов классов ServletRequest и ServletResponse |
void | initialize(Servlet serlet, ServletRequest request, ServletResponse response. String errorPageURL, boolean needsSession, int bufferSize, boolean authFlush) | Метод вызывается для инициализации объекта PageContext, чтобы его можно было использовать в классе реализации JSP для обслуживания входящих запросов и ответов в методе jspService. Вызов метода осуществляется процессором JSP |
JspWriter | popBody() | Возвращает предыдущий объект out класса JspWriter, который был сохранен в соответствующем методе pushBody(), а затем обновляет значение атрибута out в пространстве имен атрибутов PageContext с областью видимости, равной странице |
BodyContent | pushBody() | Возвращает новый объект BodyContent, сохраняет текущий объект out класса JspWriter и обновляет значение атрибута out в пространстве имен атрибутов PageContext с областью видимости, равной странице |
void | release() | Восстанавливает исходное состояние объекта PageContext, чтобы он мог быть повторно использован. Вызов этого метода осуществляется процессором JSP |
Таблица А.25. Константы, определенные в классе PageContext
Тип |
Имя |
Описание |
String | APPLICATION | Имя, используемое для хранения объекта класса Servl etContext в таблице имен PageContext |
int | APPLICATION_SCOPE | Область видимости — приложение: ссылка в классе Servl etContext остается доступной, пока приложение не будет запущено заново |
String | CONFIG | Имя, используемое для хранения объекта класса Servl etContext в таблице имен PageContext |
String | EXCEPTION | Имя, используемое для хранения не перехваченного исключения |
Stri ng | OUT | Имя, используемое для хранения текущего объекта класса JspWriter в таблице имен PageContext |
String | PAGE | Имя, используемое для хранения объекта класса Servlet в таблице имен PageContext |
int | PAGE_SCOPE | Область видимости — страница (задается по умолчанию): ссылка остается доступной в данном классе PageContext до окончания выполнения метода serviceO сервлета |
String | PAGECONTEXT | Имя, используемое для хранения объекта класса PageContext в его собственной таблице имен |
String | REQUEST | Имя, используемое для хранения объекта класса ServletRequest в таблице имен PageContext |
int | REQUEST_SCOPE | Область видимости — запрос: ссылка остается доступной в объекте ServletRequest, связанном сданным сервлетом, пока не будет выполнен текущий запрос |
String | RESPONSE | Имя, используемое для хранения объекта класса ServletResponse в таблице имен PageContext |
String | SESSION | Имя, используемое для хранения объекта класса HttpSession в таблице имен PageContext |
int | SESSIONJCOPE | Область видимости — сеанс (только в том случае, если страница участвует в сеансе): ссылка остается доступной в объекте HttpSession (если он существует), связанном с сервлетом, пока объект HttpSession не станет недействительным |
Другие методы интерфейса ServletRequest
В табл. А.10 мы попытались сгруппировать методы в соответствии с их функциями, а не в алфавитном порядке. Если вы предпочитаете алфавитный порядок, используйте стандартную документацию JDK, прилагаемую к Tomcat или к JSDK.
Таблица А.10. Еще несколько методов интерфейса ServletRequest
Тип возвращаемого значения |
Метод |
Описание | |||
void |
setAttribute (Stringname.Objectobj) |
Используется для сохранения объекта в объекте ServletRequest, который будет передан другому сервлету для обработки | |||
Object |
getAttribute(Stringname) |
Извлекает указанный объект или возвращает null, если такой объект не существует | |||
Enumeration |
gettttributeNames( ) |
Возвращает объект Enumeration, который содержит перечень имен всех имеющихся атрибутов | |||
void |
removeAttribute (Stringname) |
Удаляет атрибут с указанным именем | |||
ServletlnputStream |
getlnputStream( ) |
Объект для чтения потока двоичных данных из запроса с использованием методов InputSrteam | |||
BufferReader |
getReader( ) |
BufferReader используется для чтения и синтаксического анализа тела запроса строка за строкой |
Формирование ответа пользователю
В этом разделе мы рассмотрим классы и методы, связанные с отправкой данных в ответ на запрос пользователя.
ServletResponse. Объект, реализующий этот интерфейс, должен быть создан процессором сервлетов и передан методу service сервлета для передачи клиенту данных MIME.
HttpServletResponse. Расширение интерфейса ServletResponse, в котором добавляются некоторое методы, специфические для протокола HTTP.
Servl etOutputStream. Класс для создания потока двоичных данных как части ответа.
Интерфейс API для JSP-страниц
В табл. А.20 приведены переменные, которые, за исключением переменных session и exception, всегда создаются в JSP-странице. Переменная session недоступна, если в директиве страницы присутствует выражение session="false". Переменная exception доступна только в том случае, если атрибут isErrorPage имеет значение true, как показано в следующем примере:
<%@page language = "Java" isErrorPage = "true"
Таблица А.20. Неявные переменные в JSP-страницах
Имя переменной |
Тип |
Описание | |||
request |
Объект класса, являющегося подклассом класса javax.servlet.Servl etRequest |
Представляет запрос пользователя | |||
response |
Объект класса, являющегося подклассом класса javax.servlet.Servl etResponse |
Создает ответ на запрос | |||
pageContext |
Объект класса javax.servlet.jsp.PageContext |
Содержит атрибуты страницы | |||
session |
Объект класса javax.servlet.http.HttpSession |
Содержит произвольные переменные, связанные с данным сеансом | |||
application |
Объект класса javax.servlet.ServletContext |
Содержит атрибуты для всего приложения и влияет на интерпретацию некоторых других тегов | |||
out |
Объект класса javax.servlet.jsp.JspWriter |
Выходной поток для данного ответа | |||
config |
Объект класса javax.servlet.ServletConfig |
Содержит пары имя-значение для параметров инициализации сервлета и объект Servl etContext | |||
page |
Ссылка на объект, синоним указателя this |
Возвращает ссылку на сервлет | |||
exception |
Объект класса javax.lang.Throwable или одного из его подклассов |
Только те страницы, которые обозначены в директиве страницы как страницы ошибок |
Интерфейсы JspPage и HttpJspPage очень просты, как видно из табл. А.21. Поскольку за создание метода _jspService отвечает процессор JSP, вам нужно определить только методы jsplnit и jspDestroy.
Таблица А.21. Методы интерфейсов JspPage и HttpJspPage
Метод |
Интерфейс |
Описание | |||
void jspDestroy() |
JspPage |
Этот метод вызывается, когда JSP-страница должна быть уничтожена. Метод используется для удаления всех ресурсов | |||
void jspInit() |
JspPage |
Этот метод вызывается, когда JSP-страница инициализируется. Метод используется для установления значений параметров | |||
void _jspService (HttpServletRequest request, HttpServletResponse response) |
HttpJspPage |
Этот метод создается процессором JSP для написания тела JSP-страницы |
Интерфейс ServletContext
Процессор сервлетов создает объект, этот интерфейс ServletContext, и делает его доступным для сервлетов. Это исходный способ связи между сервлетом и его контейнером. В каждом web-приложении может содержаться множество сервлетов и JSP-страниц. Все они будут совместно использовать интерфейс ServletContext. В табл. А.4 приведены методы, с помощью которых объекты и параметры становятся доступными для совместного использования через интерфейс Servl etContext. Остатьные методы перечислены в табл. А.5.
Таблица А.4. Методы интерфейса ServletContext, относящиеся к параметрам и атрибутам
Тип возвращаемого значения |
Метод |
Описание | |||
Object |
getAttribute(Stnng name) |
Возвращает атрибут контейнера сервлета с заданным именем или null , если атрибут с таким именем не обнаружен | |||
Enumeration |
getAttn buteNames ( ) |
Перечисление Enumeration содержит перечень имен атрибутов (строк String) объекта класса ServletContext (контекста сервлетов) | |||
void |
removeAttribute (String name) |
Удаляет атрибут с заданным именем из объекта класса ServletContext (контекста сервлетов) | |||
void |
setAttribute(String name, Object object) |
Связывает объект с заданным именем атрибута в данном контексте сервлетов | |||
Srting |
getlnitParameter (String name) |
Возвращает строку String, содержащую значение указанного именованного параметра инициализации в данном контексте, или null, если параметр не существует | |||
Enumeration |
get InitParameterNames ( ) |
Возвращает имена параметров инициализации объекта ServletContext в виде перечисления (объекта Enumeration) объектов типа String либо пустой объект Enumeration, если параметры инициализации отсутствуют |
Таблица А.5. Остальные методы интерфейса ServletContext
Тип возвращаемого значения |
Метод |
Описание | |||
Servl etContext |
getContext(String uripath) |
Возвращает объект ServletContext, который соответствует указанному URL-адресу на данном сервере | |||
String |
getMimeTypeCString file) |
Возвращает тип MIME указанного файла или null , если такой тип MIME не известен | |||
RequestDispatcher |
getNamedDi spatcher (String name) |
Возвращает объект RequestDispatcher, который выполняет функции оболочки для указанного сервлета | |||
RequestDispatcher |
getRequestDi spatchet (String path) |
Возвращает объект RequestDispatcher, который выполняет функции оболочки для ресурса, размещенного по указанному адресу | |||
String |
getRea!Path(String path) |
Возвращает строку String, содержащую фактический путь для указанного виртуального пути | |||
URL |
getResourcet String path) |
Возвращает URL для ресурса, путь к которому является аргументом данного метода | |||
InputSrteam |
getResourceAsStream (String path) |
Возвращает ресурс, расположенный по указанному пути, в виде объекта InputStream | |||
String |
getServerlnfoO |
Возвращает имя и версию контейнера сервлетов, в котором выполняется данный сервлет | |||
int |
getMajorVersionO |
Возвращает основной номер версии API сервлетов Java, которую поддерживает данный контейнер (например, 2 для версии 2.1) | |||
int |
getMinorVersionO |
Возвращает дополнительный номер версии API сервлетов Java, которую поддерживает данный контейнер |
Класс BodyContent
Этот класс является подклассом класса JspWriter и наследует его методы, приведенные в табл. А.26 и А.27. Также этот класс добавляет новые методы, представленные в табл. А.ЗО, для буферизации символьной информации и манипулирования ею. Обратите внимание, что метод flush должен быть переопределен, так как объект BodyContent присоединяется не к выходному потоку, а только к внутреннему буферу.
Таблица А.З0. Методы класса BodyContent
Тип возвращаемого значения |
Метод |
Описание | |||
void |
clearBody() |
Очищает буфер тела тега, обычно в процессе подготовки к повторному считыванию тела тега в буфер | |||
void |
flush() |
Переопределяет метод flush() класса JspWriter, поскольку объект BodyContent не может быть сброшен. Генерирует исключение lOException | |||
JspWriter |
getEnclosingWriter ( ) |
Получает ближайший внешний (enclosing) объект JspWriter | |||
Reader |
getReader() |
Возвращает объект класса Reader, который может получить доступ к объекту BodyContent | |||
Srting |
getString() |
Возвращает значение BodyContent в виде строки типа String | |||
void |
writeOut(java.io.Writer out) |
Записывает содержимое объекта BodyContent в выходной поток Writer |
Класс HttpSession и классы, связанные с cookie
В этом разделе мы обсудим класс HttpSession и классы, связанные с cookie. Объект HttpSession используется для хранения информации о состоянии в промежутках между соединениями с конкретным пользователем.
HttpSession. Объекты, реализующие этот интерфейс, позволяют программисту хранить информацию о пользователе в промежутках между отдельными посещениями страницы или соединениями. Процессоры сервлетов обеспечивают методы для мониторинга объектов класса HttpSession, используя уникальные идентификаторы (см. примеры в главе 3).
HttpSessionBindingListener. Этот интерфейс аналогичен многим интерфейсам слушателей событий в GUI Java. Программисты могут реализовать этот интерфейс в объекте, которому требуется извещение, когда он присоединяется к объекту HttpSession или отсоединяется от него.
Cookie. Эти объекты используются для манипулирования информацией, содержащейся во фрагментах cookie, которые посылаются сервером браузеру и возвращаются при последующих запросах. Информация cookie, содержащаяся в запросе, преобразуется в объекты Cookie методами класса HttpServletRequst.
HttpUti I s. Статические методы этого класса используются в различных ситуациях.
HttpSessionBindingEvent. Объекты этого типа используются для передачи информации объектам класса HttpSessionBindingListener, когда они присоединяются к объекту HttpSession или отсоединяются от него.
Класс JspWriter
Класс JspWriter является расширением абстрактного класса Java.io.Writer. Назначение этого класса — обеспечивать функциональность вывода данных, аналогичную функциональности классов BufferWriter и PrintWriter в JSP, как видно из табл. А.26. Важное различие между этими классами заключается в том, что методы JspWriter могут генерировать исключение lOException, в то время как методы PrintWriter не могут этого делать.
Таблица А.26. Перечень методов управления буферизацией класса JspWriter
Тип возвращаемого значения |
Метод |
Описание | |||
void |
clear() |
Очищает содержимое буфера. Если какое-либо содержимое было сброшено в выходной поток, генерирует исключение lOException, чтобы предупредить приложение о том, что некоторые данные уже посланы | |||
void |
clearBuffer() |
Очищает содержимое буфера, но не генерирует исключение, если какие-либо данные уже были отосланы | |||
void |
close() |
Закрывает поток после того, как сброшено содержимое | |||
void |
flush() |
Сбрасывает содержимое потока | |||
int |
getBufferSize() |
Текущий размер буфера | |||
int |
getRemaining() |
Неиспользованное пространство в буфере | |||
boolean |
isAutoFlush() |
Состояние флага Autoflush |
Методы для вывода данных в классе JspWriter, приведенные в табл. А.27, аналогичны методам класса java.io.PrintWriter, но они могут генерировать исключение lOException, если возникает какая-либо проблема с выходным потоком.
Таблица А.27. Методы для вывода данных класса JspWriter
Тип возвращаемого значения |
Метод |
Описание | |||
void |
newLine() |
Записывает разделитель строк | |||
void |
print(boolean b) |
Выводит булево значение | |||
void |
print(char c) |
Выводит символ | |||
void |
print(char[] s) |
Выводит массив символов | |||
void |
print(double d) |
Выводит число двойной точности с плавающей точкой | |||
void |
print( float f) |
Выводит число с плавающей точкой | |||
void |
print(int i) |
Выводит целое число | |||
void |
print (long 1) |
Выводит длинное целое число | |||
void |
print(java.lang.Object obj) |
Выводит значение типа Object | |||
void |
print(java.lang.String s) |
Выводит значение типа String | |||
void |
println() |
Завершает текущую строку разделителем строк | |||
void |
print! n(boolean x) |
Выводит булево значение, после чего завершает строку | |||
void |
println(char x) |
Выводит символ, после чего завершает строку | |||
void |
println(char[] x) |
Выводит массив символов, после чего завершает строку | |||
void |
println( double x) |
Выводит число двойной точности с плавающей точкой, после чего завершает строку | |||
void |
println(float x) |
Выводит число с плавающей точкой, после чего завершает строку | |||
void |
printlndnt x) |
Выводит целое число, после чего завершает строку | |||
void |
printlndong x) |
Выводит длинное целое число, после чего завершает строку | |||
void |
println(java.lang.Object x) |
Выводит значение типа Object, после чего завершает строку | |||
void |
println(Java.lang.String x) |
Выводит значение типа String, после чего завершает строку |
Класс PageContext
Класс PageContext — это абстрактный класс. Для конкретного сервера класс, расширяющий PageContext, создается процессором JSP. Объект PageContext управляет всеми генерируемыми процессором JSP ресурсами, которые требуются серв- лету. Важно отметить, что при управлении ресурсами используются различные области видимости.
Коды состояний и ошибок HTTP
В интерфейс HttpServl etResponse входят константы для обозначения всех кодов состояний и ошибок HTTP. Они перечислены в табл. А. 18. По существу это та же информация, которая содержится в спецификации RFC 2616, где описан стандарт HTTP 1.1. Вообще коды можно разделить на следующие категории:
серия 100-199 — информационные коды, процесс продолжается;
серия 200-299 — коды указывают, что процесс был успешным;
серия 300-399 — переадресация, для выполнения запроса требуются дальнейшие действия;
серия 400-499 — ошибка клиента, в запросе содержатся синтаксические ошибки или запрос не может быть выполнен;
серия 500-599 — ошибка сервера, сервер отказывается выполнять заведомо корректный запрос.
Сами коды ошибок перечислены в табл. А. 19.
Таблица А.18. Константы HTTP для кодов состояний
Имя константы |
Величина |
Описание | |||
SC_CONTINUE | 100 | Клиент может продолжать работу | |||
SC_SWITCHING_PROTOCOLS | 101 | Сервер меняет протоколы в соответствии с содержимым заголовка Upgrade HTTP-запроса | |||
SCJJK | 200 | Запрос обработан успешно | |||
SC_CREATED | 201 | Запрос обработан успешно, на сервере в ответ на него создан новый документ | |||
SC_ACCEPTED | 202 | Запрос был принят, но его обработка еще не закончена | |||
SC NON AUTHORITATIVE INFORMATION | 203 | Некоторые заголовки ответов могут быть неверными, так как используется копия документа | |||
SC_NO_CONTENT | 204 | Запрос обработан успешно,, но отсутствует новая информация, которую можно было бы вернуть с ответом | |||
SC_RESET_CONTENT | 205 | Браузер должен обновить документ, который вызвал отправку запроса на сервер | |||
SC_PARTIAL_CONTENT | 206 | Сервер выполнил частичный запрос для данного ресурса методом GET | |||
SC_MULTIPLE_CHOICES | 300 | Запрошенный ресурс представлен в нескольких документах, расположенных в разных местах | |||
SC_MOVED_PERMANENTLY | 301 | Ресурс перемещен в новое место, где он будет находиться постоянно. Все дальнейшие ссылки на этот ресурс должны использовать новый URI-адрес | |||
SCJWEDJEMPORARI LY | 302 | Ресурс перемещен в новое место временно. Все дальнейшие ссылки для доступа к этому ресурсу должны использовать прежний URI-адрес | |||
SC_SEE_OTHER | 303 | Ответ на данный запрос может быть найден с использованием другого URI-адреса | |||
SC_NOT_MODIFIED | 304 | В результате выполнения условного запроса методом GET оказалось, что данный ресурс доступен, но не был изменен | |||
SC_USE_PROXY | 305 | Запрашиваемый ресурс должен возвращаться через прокси-сервер, заданный в поле Location |
Таблица А.19. Константы для кодов ошибок HTTP
Имя константы |
Величина |
Описание |
SC_BAD_REQUEST | 400 | Запрос, посланный клиентом, синтаксически неверен |
SC_UNAUTHORIZED | 401 | В поле Authorization запроса отсутствует необходимая для аутентификации информация |
SC_PAYMENT_REQUIRED | 402 | Зарезервировано для будущего использования |
SC_FORBIDDEN | 403 | Сервер понимает запрос, но отказывается его выполнить |
SC_NOT_FOUND | 404 | Запрошенный ресурс невозможно найти по указанному адресу |
SC_METHOD_NOT_ALLOWED | 405 | Заданный метод запроса не разрешен для ресурса, идентифицированного с помощью указанного URJ- адреса |
SC_NOT_ACCEPTABLE | 406 | Запрашиваемый ресурс может генерировать ответы только таких MIME-типов, которые несовместимы с типами, заданными клиентом в поле Accept запроса |
SC PROXY AUTHENIFICATION REQUIRED | 407 | Клиент должен пройти аутентификацию на прокси-сервере |
SC_REQUEST_TIMEOUT | 408 | Клиент не послал запрос в тот промежуток времени, когда сервер был готов принять его |
SC_CONFLICT | 409 | Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса |
SCJ30NE | 410 | Ресурс недоступен более на этом сервере, и не указан адрес для перенаправления запроса |
SC_LENGTH_REQUIRED | 411 | Запрос не может быть выполнен в отсутствие определенного клиентом заголовка Content -Length |
SC_PRECONDITION_FAILED | 412 | Входное условие, заданное в одном или нескольких полях заголовка запроса, при тестировании на сервере оказалось ложным |
SC_REQUEST_ENTITYJOO_LARGE | 413 | Сервер отказывается обрабатывать запрос, так как размер запрашиваемого документа больше, чем сервер готов или способен обрабатывать |
SC_REQUESTJJRI_TOO_LONG | 414 | Сервер отказывается выполнять запрос, так как приведенный в нем URI-адрес слишком длинный для того, чтобы сервер мог его обработать |
SC_UNSUPPORTED_MEDIA_TYPE | 415 | Сервер отказывается выполнять запрос, так как в запросе содержится документ в таком формате, который не поддерживается запрошенным ресурсом для метода, указанного в запросе |
SC REQUESTED RANGE NOT SATISFIABLE | 416 | В запросе содержится невыполнимый для сервера заголовок Range |
SC_EXPECTATION_FAILED | 417 | Сервер не может выполнить то задание, которое указано в заголовке Expect запроса клиента |
SC_INTERNAL_SERVER_ERROR | 500 | Запрос не может быть выполнен по причине ошибки внутри HTTP-сервера |
SC_NOT_IMPLEMENTED | 501 | HTTP-сервер не поддерживает функции, необходимые для выполнения запроса |
SC_BAD_GATEWAY | 502 | HTTP-сервер получил неверный ответ от удаленного сервера, по отношению к которому он выполнял роль прокси-сервера или шлюза |
SC_SERVICE_INAVAILABLE | 503 | HTTP-сервер временно перегружен и не может ответить на запрос |
SC_GATEWAY_TIMEOUT | 504 | Сервер, который используется в качестве прокси- сервера или шлюза, не получил своевременный ответ от удаленного сервера |
SC HTTP VERSION NONSUPPORTED | 505 | Сервер не поддерживает или отказывается поддерживать версию протокола HTTP, используемую в запросе |
ПРИМЕЧАНИЕ
Для диагностики кодов ошибок в Microsoft Internet Explorer имеется так называемый дружественный режим, который не позволяет пользователю увидеть фактические сообщения об ошибках в сервлетах или JSP-страницах. Для отключения этого режима выберите команду Tools > Internet Options (Сервис > Свойства обозревателя), в открывшемся окне перейдите на вкладку Advanced (Дополнительно) и снимите флажок Show Friendly Http Error Messages (Показывать уведомление о каждой ошибке сценария).
Методы, добавляемые интерфейсом HttpServletResponse
Интерфейс HttpServletResponse расширяет ServletResponse и добавляет некоторые полезные методы, специфичные для протокола HTTP, которые перечислены в табл. А.14. Также в нем определен набор констант, соответствующих кодам состояния ответа, как, например, печально известное сообщение «404 — page not found». Заметим, что методы заголовков, которые начинаются с префикса add, могут добавлять значения в существующий заголовок, формируя список, разделенный запятыми, в то время как методы типа set замещают любой существующий заголовок с тем же именем.
Таблица А.14. Методы интерфейса HttpServletResponse
Тип возвращаемого значения |
Метод |
Описание | |||
void |
addCookie (Cookie cookie) |
Добавляет cookie в ответ. Этот метод можно вызывать многократно, но заметим, что браузер, возможно, будет способен принять только 20 файлов cookie из данного источника или вообще не принимать cookie | |||
void |
addDateHeader (String name, lonf date) |
Добавляет заголовок ответа с указанным именем и значением даты. Значение даты указывается в формате System. currentTimeMillisO, но значение заголовка ответа будет строкой с датой в формате GMT, например Тие, 15 Nov 1994 08:12:31 GMT | |||
void |
setDateHeader (String name, lonf date) |
Устанавливает заголовок ответа с указанным именем и значением даты. Любой установленный ранее заголовок с тем же именем будет потерян, поэтому здесь нужно проявить бдительность | |||
void |
addHeader (Srting name. String value) |
Добавляет заголовок запроса с указанным именем и значением. Если заголовок уже существует, то после его значения через запятую добавляется новое значение | |||
void |
setHeader (Srting name. String value) |
Устанавливает заголовок ответа с указанным именем и значением. Если заголовок с этим именем уже существует, то он заменяется новым | |||
void |
addlntHeader (Srting name, String value) |
Добавляет заголовок ответа с указанным именем и значением. Естественно, когда значение присоединяется к заголовку, оно преобразуется к типу String | |||
void |
setlntHeader (Srting name. String value) |
Устанавливает заголовок ответа с указанным именем и значением | |||
bool ean |
containsHeader(String name) |
Возвращает true, если заголовок с указанным именем уже был установлен | |||
void |
sendRedi rect (String location) |
Посылает ответ клиенту, используя указанный URL-адрес нового временного местоположения документа | |||
String |
encodeRedi rectURL (String url) |
Преобразует указанный URL-адрес в вид, пригодный для использования в методе sendRedi rect, или, если преобразования не требуется, возвращает тот же URL-адрес | |||
String |
encodeURUSrting url) |
Перекодирует указанный URL-адрес, включая в него идентификатор сеанса, или, если перекодировка не требуется, возвращает URL без изменения | |||
void |
sendError(int sc) |
Посылает клиенту код ошибки HTTP | |||
void |
sendError (int sc. Srting msg) |
Посылает код ошибки с описанием | |||
void |
setStatus(int sc) |
Устанавливает код состояния для ответа |
Методы, добавляемые интерфейсом HttpServletRequest
Интерфейс HttpServletRequest расширяет интерфейс ServletRequest, добавляя некоторое количество полезных методов, как показано в табл. А.7. Большинство из этих методов позволяют получить сведения о заголовках HTTP-запроса или характеризуют способ, которым этот запрос попадает к данному сервлету. Ни один из методов get, который получает данные из заголовка запроса, не чувствителен к регистру.
Таблица А.7. Методы интерфейса HttpServletRequest, характеризующие запрос
Тип возвращаемого значения |
Метод |
Описание | |||
String |
getContextPath( ) |
Возвращает часть URI запроса, которая идентифицирует контекст запроса | |||
long |
getDateHeader(String name) |
Возвращает значение указанного заголовка (который является датой), преобразованное к типу long (количество миллисекунд, прошедших с с 00:00:00 01.01.1970) | |||
String |
getHeader(String name) |
Возвращает значение указанного заголовка запроса. Имя не чувствительно к регистру | |||
Enumeration |
getHeaderNames( ) |
Возвращает перечень всех имен, содержащихся в заголовке запроса | |||
Enumeration |
getHeaders(String name) |
Возвращает все значения указанного заголовка запроса в виде перечисления объектов типа String | |||
int |
get!ntHeader(String name) |
Вспомогательный метод, который пытается преобразовать указанный заголовок запроса в целочисленный формат типа int. Если заголовок не обнаружен, возвращает -1. Если заголовок не может быть преобразован к типу int, вызывает исключение NumberFormatExcepti on | |||
String |
getMethod( ) |
Возвращает имя метода HTTP, которым выполнен запрос (например, GET, POST или PUT) | |||
String |
getPathlnfo( ) |
Возвращает часть URI после адреса сервлета. Если эта часть отсутствует, возвращается null | |||
String |
getPathTranslated( ) |
Преобразует часть URI, расположенную после имени сервлета, но перед строкой запроса (то есть результат выполнения метода getPathlnfo), в физический путь | |||
String |
getQueryString( ) |
Возвращает строку запроса, содержащуюся в URL запроса после указания пути | |||
String |
getRequestURI( ) |
Возвращает часть URL запроса, начиная от имени протокола и до строки запроса в первой строке запроса HTTP | |||
String |
getServletPath( ) |
Возвращает часть URL запроса, которая соответствует данному сервлету |
Методы интерфейса HttpSession Listener
Если объект сохраняется в сеансе и хочет «знать», когда он был присоединен к сеансу и когда он от него будет отсоединен, этот объект должен реализовать интерфейс HttpSessionListener, то есть объект должен реализовать два показанных ниже метода.
valueBouncKHttpSessionBindingEvent event). Объект, который связывается с сеансом. Параметр event содержит идентификатор сеанса и имя, с которым связан объект.
valueUnbound(HttpSessionBindingEvent event). Объект, который отсоединяется от сеанса, возможно, по причине того, что срок сеанса истек.
Методы интерфейса ServletResponse
Процессор сервлетов создает объект, реализующий интерфейс ServletResponse, прежде чем будет вызван ваш сервлет или JSP-страница. Методы этого класса перечислены в табл. А. 13.
Таблица А.13. Методы в интерфейсе ServletResponse
Тип возвращаемого значения |
Метод |
Описание | |||
void |
setBufferSize(int size) |
Устанавливает предпочтительный размер буфера для тела ответа | |||
void |
flushBuffer() |
Содержимое буфера отсылается клиенту | |||
void |
reset () |
Удаляет все данные из буфера, а также код состояния и заголовки | |||
int |
getBufferSize() |
Фактический размер буфера, используемый для ответа | |||
boolean |
isComitted() |
Возвращает true, если ответ был послан | |||
String |
getCharacterEncoding( ) |
Возвращает название набора символов, используемого в MIME-теле ответа | |||
Locale |
getLocale() |
Возвращает объект Locale (идентификатор региона), присоединенный к данному ответу | |||
Servl etOutputStream |
getOutputSrteam( ) |
Возвращает выходной поток, который используется для записи двоичных данных в ответе. Обратите внимание, что вы не можете поменять тип выходного потока после того, как он выбран. Это расширение java.io.OutputStream, и его можно использовать для создания специализированных выходных потоков, таких как ObjectOutputStream или ZipOutputStream | |||
PrintWriter |
getWriter() |
Возвращает выходной поток, предназначенный для записи символьного текста. Поскольку он осуществляет преобразование символов в соответствии с типом содержимого и идентификатором территории, вы должны задать эти параметры до того, как будут записаны какие-либо данные. Чтобы данные были посланы, вы можете использовать метод flush(). Когда сервлет заканчивает запись выходных данных, должен быть вызван метод close(), в противном случае клиент может никогда не получить ответ | |||
void |
setContentLength(int len) |
Устанавливает размер содержимого тела ответа. В НТТР-сервлетах этот метод устанавливает заголовок ответа протокола HTTP Content-Length. Он должен быть вызван до того, как фактически будет послано какое-либо содержимое. Размер содержимого, как правило, требуется указывать не для всех типов данных, а только для двоичных | |||
void |
setContentType(Srting type) |
Устанавливает тип содержимого ответа. Тип ответа должен быть одним из MIME- типов и может включать дополнительную информацию о кодировке. Например, для документа HTML, в котором используется набор символов Latin-4 для западноевропейских языков, будет указан следующий тип содержимого text/html : chatset=ISO-8859-4. Если набор символов не указан, по умолчанию будет использоваться ISO-8859-1 (ACSII) | |||
void |
setLocale ( Java.util.Locale loc) |
Задает идентификатор региона и соответствующим образом устанавливает заголовки (в том числе задает набор символов для Content-Type) |
Методы класса Cookie
Конструктор Cookie использует имя типа String и значение того же типа. Заметим, что в имени не могут содержаться произвольные символы, а только те, которые соответствуют требованиям спецификации RFC 2109 (Requests for Comments1). Имена не чувствительны к регистру. В табл. А.12 перечислены некоторые полезные методы класса Cookie.
Таблица А.12. Методы класса Cookie
Тип возвращаемого значения |
Метод |
Описание | |||
Object |
clone( ) |
Переопределяет стандартный метод Object. clone и возвращает копию этого файла cookie. Обратите внимание, что вы По-прежнему должны привести ссылку к типу Cookie | |||
String |
getValue( ) |
Возвращает значение cookie | |||
void |
setValue(String newValue) |
Присваивает файлу cookie новое значение после создания cookie | |||
String |
getComnent() |
Комментарий, описывающий назначение cookie, или null, если комментарий не был присоединен | |||
void |
setComment( String purpose) |
Присоединяет комментарий, который описывает назначение cookie | |||
String |
getDomain( ) |
Возвращает имя домена, установленного для этого файла cookie | |||
void |
setDomain(String pattern) |
Устанавливает домен, внутри которого должен быть представлен данный файл cookie | |||
void i |
setPath(String uri) |
Устанавливает путь, по которому клиент должен будет возвращать cookie | |||
int |
getMaxAge( ) |
Возвращает время (в секундах), оставшееся до конца срока действия cookie. Значение, равное -1, которое устанавливается по умолчанию, означает, что cookie будет существовать, пока не отключится браузер, то есть только во время текущего сеанса | |||
void |
setMaxAgednt expiry) |
Устанавливает максимально допустимый срок действия cookie. Если это значение равно нулю, cookie немедленно уничтожается | |||
String |
getName( ) |
Имя cookie | |||
String |
getPath( ) |
Путь на сервере, по которому браузер возвращает cookie | |||
bool ean |
getSecure( ) |
Возвращает true, если браузер посылает cookie только по безопасным протоколам; возвращает f al se, если браузер может посылать cookie, используя любой протокол | |||
void |
setSecure(boolean flag) |
Указывает браузеру, должен ли файл cookie посылаться только по безопасному протоколу, например HTTPS или SSL | |||
int |
getVersion( ) |
Возвращает версию протокола, с которой согласуется cookie | |||
void |
setVersiondnt v |
Устанавливает версию протокола для cookie, с которой согласован данный файл cookie |
Методы класса HttpServlet
Класс HttpServl et добавляет методы, которые поддерживают HTTP-запросы. Ваш пользовательский класс сервлета должен переопределить хотя бы один из этих методов, как показано в табл. А.З.
Таблица А.3. Методы класса HttpServlet, которые обычно переопределяются
Переопределяемый метод |
Поддерживаемый запрос | ||
doGet(ServletRequest req. ServletResponse resp) doPost(ServletRequest req, ServletResponse resp) doPutCServletRequest req, ServletResponse resp) doDelete(ServletRequest req, ServletResponse resp) |
HTTP GET HTTP POST HTTP PUT НTTР DELETE |
Методы класса HttpSession
Обратите внимание на аналогию между методами, относящимися к атрибутам (перечисленным в табл. А. 11), и методами, которые используются в интерфейсе SevletRequest. В более ранних интерфейсах API в названиях методов использовалось значение (value) вместо атрибута (attribute), например getValue, но в целях более последовательного именования от этих методов решено было отказаться и теперь они являются устаревшими.
Таблица А. 11. Методы класса HttpSession
Тип возвращаемого значения |
Метод |
Описание | |||
Object |
getAttribute(String name) |
Возвращает объект, присоединенный к сеансу, с именем name или null , если не найдено объекта с таким именем | |||
void |
setAttribute(Stnng name, Object obj) |
Добавляет объект obj с именем name к сеансу. Если с этим именем ранее был связан другой объект, то эта связь теряется | |||
Enumeration |
getAttributeNames( ) |
Возвращает перечисление объектов типа String, содержащее имена всех объектов, присоединенных к сеансу | |||
void |
removeAttribute (String name) |
Удаляет объект с указанным именем из сеанса | |||
long |
getCreationTime( ) |
Возвращает системное время (GMT) создания объекта, такое же как в System.currentTimeMillis() | |||
long |
getLastAccessedTime() |
Возвращает системное время последнего обращения клиента к сеансу. Формат такой же, как в getCreationTime | |||
int |
getMaxInactivelnterval ( ) |
Возвращает максимальный интервал времени (в секундах), в течение которого контейнер сервлета поддерживает сеанс открытым между обращениями к нему клиента | |||
void |
setMaxInactivelntarval (int interval) |
Устанавливает интервал времени (в секундах) между обращениями клиента, по истечении которого контейнер сервлетов сделает данный сеанс недействительным | |||
void |
invalidate( ) |
Делает данный сеанс недействительным и прекращает все связи с объектами | |||
boolean |
isNew() |
Возвращает true, если клиент еще не знает о сеансе или клиент предпочел не присоединяться к сеансу. Обычно этот метод вызывается сразу после вызова метода getSession объекта HttpServlrtRequest | |||
String |
getld( ) |
Возвращает уникальный идентификатор, присвоенный данному сеансу |
Методы, связанные с безопасностью
Методы обеспечения безопасности, перечисленные в табл. А.8, могут не поддерживаться более старыми ядрами сервлетов.
Таблица А.8. Методы интерфейса HttpServletRequest, связанные с безопасностью
Тип возвращаемого значения |
Метод |
Описание | |||
String |
getAuthTypeO |
Возвращает название схемы аутентификации, которая используется для защиты сервлета (например, BASIC или SSL), или null , если сервлет не был защищен | |||
String |
getRemoteUserO |
Если в сеансе используется проверка прав доступа, возвращает регистрационное имя пользователя или null, если пользователь не прошел проверку | |||
Principal |
getUserPrincipaK) |
Возвращает объект Java. security. Principal, содержащий имя очередного пользователя, прошедшего проверку прав доступа | |||
Boolean |
isUserlnRoleCString role) |
Возвращает true, если пользователь, прошедший проверку, включен в класс пользователей, определяемый указанным в качестве параметра «ролевым именем» |
Методы, связанные с сеансами и cookie
Поскольку концепция cookie связана с протоколом HTTP, все методы для работы с cookie и сеансами, относящиеся к запросам, входят в класс HttpServletRequest, как показано в табл. А.9. Такие методы, как getRequestedSessionld, ссылаются на идентификатор id сеанса, который был присоединен к запросу либо как фрагмент cookie, либо путем перезаписи URL. Все эти методы возвращают null, если сеанс не был присоединен к запросу.
Таблица А.9. Методы интерфейса HttpServletRequest, связанные с сеансами и cookie
Тип возвращаемого значения |
Метод |
Описание | |||
Cookie[ ] |
getCookies( ) |
Возвращает массив, содержащий все объекты cookie, которые клиент прислал с данным запросом | |||
String |
getRequestSessionld( ) |
Возвращает все идентификаторы id сеанса, указанные клиентом | |||
HttpSession |
getSession( ) |
Возвращает текущий сеанс, связанный с данным запросом, а если запрос не имеет сеанса, то создает его | |||
HttpSession |
getSession(boolean create) |
Возвращает текущий объект HttpSession, связанный с данным запросом, а если запрос не имеет сеанса и булев параметр равен true, то создает его | |||
boolean |
isRequestedSession IdFromCookie( ) |
Возвращает true, если идентификатор (id) требуемого сеанса получен в виде фрагмента cookie (а не путем перезаписи URL) | |||
bool ean |
isRequestedSession IdFromURL( ) |
Возвращает true, если идентификатор (id) требуемого сеанса получен путем перезаписи URL | |||
boolean |
isRequestedSessi onldVal id( ) |
Проверяет, является ли запрошенный идентификатор сеанса действительным |
Ошибки и исключения
В API сервлетов предусмотрены специальные классы исключений — ServletException и UnavaliableException, описанные ниже.
ServletException. Исключение общего назначения, которое используется в API сервлетов. Конструкторы, представленные в табл. А.15, предлагают различные способы включения других ошибок (Error) и исключений (Exception) с объяснениями или без них. Для того чтобы извлечь из класса ServletException включенные в него объекты Error или Exception, используйте метод getRootCause().
UnavaliableException. Это исключение генерируется, если сервлету нужно сообщить, что он временно или постоянно недоступен. Причиной этого может быть недостаток поддержки со стороны системы — невозможность соединения с базой данных, недостаток памяти или места на диске. В табл. А. 16 объясняется, каким образом используется это исключение и почему оно полезно.
Таблица А.15. Конструкторы класса ServletException
Конструктор |
Описание | ||
Servl etExcepti on( ) |
Конструирует новое исключение сервлета | ||
ServletException (Java.Tang.String message) |
Конструирует новое исключение сервлета с заданным сообщением | ||
ServletException (java.lang.Throwable rootCause) |
Конструирует новое исключение сервлета в результате возникновения исключительной ситуации в системе, и включает системное сообщение (rootCause), объясняющее причину этой исключительной ситуации, нарушившей нормальный ход выполнения сервлета | ||
ServletException ( Java.lang.String message. java.lang.Throwable rootCause) |
Конструирует новое исключение сервлета в результате возникновения исключительной ситуации в системе и включает системное сообщение (rootCause), объясняющее причину этой исключительной ситуации, нарушившей нормальный ход выполнения сервлета, а также строку с описанием нового исключения сервлета |
Таблица А. 16. Конструкторы класса UnavaliableException
Конструктор |
Описание | ||
Unavaliabl eException (Java.lang.String message) |
Конструирует новое исключение сервлета с сообщением, что данный сервлет постоянно недоступен | ||
Unavaliabl eException (Java.lang.String message, int seconds) |
Конструирует новое исключение сервлета с сообщением, что данный сервлет временно недоступен, и с оценкой времени, в течение которого он будет недоступен |
Ошибки и исключения JSP-страниц
Как говорилось в главе 5, в API для JSP-страниц предусмотрено специальное обозначение страницы, которая обрабатывает все исключения. Эта страница задается с помощью атрибута еггогРаде директивы page, подобно тому как показано в следующем примере:
<%@ page language= "Java" ErrorPage = "JSPbook/Chapt02/whoops.jsp" %>
Любая JSP-страница, назначенная обрабатывать ошибки, должна включать тег, аналогичный приведенному ниже:
<%@ page language= "Java" isErrorPage = "true" %>
Этот тег устанавливает параметр isErrprPage, гарантирующий, что в данной странице имеется заданная по умолчанию переменная с именем exception, через которую страница получает доступ к фактически сгенерированному исключению или ошибке. Эта переменная ссылается на один из двух связанных с ошибками классов — JspException или JspError. В этих классах нет никаких специальных методов, кроме определенных в родительском классе, Java.lang.Exception. В табл. А. 17 перечислены конструкторы классов JspException и JspError.
Таблица А.17. Конструкторы классов JspException и JspError
Конструктор |
Определение | ||
JspException() |
Конструирует объект JspException | ||
JspException(String msg) |
Исключение с сообщением | ||
JspError() |
Обратите внимание, что класс JspError происходит от класса JspException | ||
JspError(String msg) |
Добавляет сообщение об ошибке |
Пакет javax.servlrt.jsp.tagext
При создании пользовательских тегов JSP вам понадобятся только некоторые классы из этого пакета. Пользовательский тег должен расширять либо интерфейс Tag, либо интерфейс BodyTag. Методы интерфейса Tag перечислены в табл. А.28.
Таблица А.28. Методы интерфейса Tag
Тип возвращаемого значения |
Метод |
Описание | |||
int |
doEndTag() |
Определяет код, который вызывается, если обнаруживается закрывающий тег | |||
int |
doStartTag() |
Определяет код, который вызывается, если обнаруживается открывающий тег для данного экземпляра | |||
Tag |
getParent() |
Для вложенных тегов возвращает родителя данного обработчика тега | |||
void |
release() |
Вызывается обработчиком тега для возвращения к исходному состоянию | |||
void |
setPageContext (PageContext pc) |
Устанавливает контекст текущей страницы | |||
void |
setParentdag () |
Устанавливает текущий родительский (ближайший из внешних по отношению к данному) объект Tag для данного объекта Tag |
Интерфейс Tag предназначен для работы с пользовательскими тегами, для которых не требуется обработка тела тега. Для того чтобы иметь возможность обрабатывать тело тега, вам следует добавить методы интерфейса BodyTag, приведенные в табл. А.29.
Таблица А.29. Интерфейс BodyTag добавляет следующие методы
Тип возвращаемого значения |
Метод |
Описание | |||
int |
doAfterBody() |
Выполняет действия после обработки тела тега | |||
void |
doIntBody() |
Подготовка к обработке тела тега | |||
void |
setBodyContent( BodyContent b) |
Устанавливает свойство bodyContent |
Параметры приложений
В интерфейсах API для сервлетов и JSP-страниц параметры рассматриваются как объекты, обладающие определенной областью видимости. Эта область состоит из тех частей системы, в которых применение данного параметра является корректным. Перечислим области видимости в порядке убывания: сервер, приложение, сеанс, запрос и страница.
Сервер. Параметры из этой области могут использоваться во всех приложениях.
Приложение. Sun термином «web-приложение» называет совокупность сервлетов, JSP-страниц и других ресурсов, установленных в определенном адресном пространстве сервера. Класс Servl etContext предназначен для обеспечения возможности совместного использования информации всеми ресурсами, входящими в приложение. Это осуществляется с помощью объектов, которые доступны всем ресурсам приложения и относятся к области видимости приложения. Данная область видимости влияет на интерпретацию относительных URL-адресов.
Сеанс. Как было сказано в главе 3, сервлеты и JSP-страницы могут хранить специфическую для данного пользователя информацию в объекте HttpSession, которым управляет процессор сервлетов. Объекты, хранящиеся таким образом, называются объектами области видимости сеанса.
Запрос. Запрос на самом деле может обрабатываться несколькими страницами с помощью механизма переадресации (метода forward). Запрос (объект Servl etRequest или HttpServl etRequest) может включать в себя дополнительные объекты.
Страница. В сервлетах, созданных процессором JSP-страниц, может иметь место область видимости отдельной страницы. Если запрос обрабатывается с помощью метода forward или include, переменная, имеющая данную область видимости, доступна только на той странице, где она создана.
Получение информации о запросе
Сервлет получает информацию о запросе пользователя в виде объекта, реализующего интерфейс javax. servlet.ServletRequest или javax. servlet.http. HttpServl etRequest, созданный процессором сервлетов. Сервлеты, которые расширяют интерфейс javax.servlet.GenericServlet или реализуют интерфейс javax.servlet.Servlet, получают объект Servl etRequest (обычно с именем req). JSP-страницы всегда получают объект класса HttpServl etRequest с именем request, поскольку JSP-страницы используются только в контексте HTTP.
Основные методы для получения информации о запросе содержатся в интерфейсе Servl etRequest (табл. А.6), в то время как HttpServl etRequest добавляет некоторые методы для получения информации о протоколе.
Таблица А.6. Получение информации о запросе пользователя из объекта ServletRequest
Тип возвращаемого значения |
Метод |
Описание | |||
Enumeration |
getParameterNames ( ) |
Имена параметров, выделенные из запроса при его анализе, возвращаются в виде объекта Enumeration (перечисления), а не массива типа String (массива строк), так как пары имя-значение хранятся в хэш-таблице, а объекты Hashtable возвращают список всех своих ключей в виде перечисления | |||
String |
getParameterCString name) |
Этот метод возвращает значение типа String, соответствующее имени параметра, или null , если это имя не было обнаружено в запросе. Всегда полезно проверять, не равно ли возвращенное значение null. Если в запросе окажется больше одного параметра с одним и тем же именем, то возвращается значение первого из них | |||
String |
getParameterValues (Srting name) |
Если одному имени может быть сопоставлено более одного значения, следует использовать этот метод. В возвращаемом массиве строк сохраняется исходный порядок следования параметров. Если не существует ни одного параметра с указанным именем, возвращается null |
мы обнаружили, что документация JDK,
Интерфейсы API для сервлетов и JSP-страниц
Работая с интерфейсами прикладных программ (API) сервлетов и JSP-страниц, мы обнаружили, что документация JDK, очень основательная в отношении описания классов, содержит мало полезной функциональной информации. Формальные описания API 2.2 для сервлетов и API 1.1 для JSP-страниц также, на наш взгляд, трудно применить на практике. Цель этого приложения — представить наиболее часто используемые интерфейсы API с функциональной точки зрения, сопровождая их описание рекомендациями по применению.
Мы будем заниматься следующими пакетами:
javax.servlet — базовый обобщенный пакет сервлетов;
javax.servlet.http — специализированные расширения для web-страниц;
javax.sevlet.jsp — классы для создания JSP-страниц;
javax.sevlet. jsp.tagext — специализированные расширения классов JSP- страниц, которые позволяют создавать пользовательские библиотеки тегов.
Создание сервлета
Поскольку методы сервлета определяются в интерфейсе, а интерфейсы не могут определять конструкторы, инициализация сервлета полностью осуществляется в методе init. Процессор сервлетов непременно вызывает метод init после того, как сервлет разработан, и прежде, чем обработан первый запрос. Методу init, согласно определению интерфейса Servlet, передается объект ServletConfig, который может быть использован для получения параметров инициализации. Между интерфейсами SevletConfig и ServletContext имеют место отличия, которые нужно учитывать.
SevletConfig — объекты, использующие этот интерфейс, содержат информацию, которая требуется во время инициализации сервлета. Причина частых таинственных ошибок времени выполнения в сервлете заключается в том, что перед вызовом метода initO не было вызова метода super.init().
Servl etContext — объекты, использующие этот интерфейс, позволяют сервлету находить информацию о процессоре сервлетов, в котором данный сервлет выполняется, и о его окружении. Вы можете получить интерфейс Servl etContext из объекта Servl etConfig.
Все процессоры сервлетов предусматривают определение параметров инициализации, которые должны быть переданы данному сервлету. Соглашения о том, каким образом администратор сервера устанавливает эти параметры, могут быть различными для разных процессоров, но основная идея остается неизменной. Будем надеяться, что количество производителей, использующих стандартный подход Sun с применением XML, будет увеличиваться.
Имя параметра связывается с текстовым значением. Программисты, знакомые с апплетами Java, могут заметить здесь аналогию с тем, как контейнер апплетов (браузер) передает именованные параметры апплету. Три наиболее распространенных метода объекта Servl etConfig приведены в табл. А1.
Таблица А.1. Методы объекта ServletConfig
Тип возвращаемого значения |
Метод |
Описание | |||
String | getlnitParameter (String name) | Этот метод возвращает строку String, соответствующую имени параметра (Stri ng name), либо null , если такого параметра не обнаружено | |||
Enumeration | getInitParameterNames() | Этот метод возвращает перечисление Enumeration имен всех параметров | |||
ServletContext | getServletContext() | Этот метод получает интерфейс ServletContext, в котором выполняется сервлет |
В табл. А. 2 перечислены методы, которые должны быть предусмотрены в вашем пользовательском сервлете, когда он реализует интерфейс Servlet. Пакет javax.servlet также включает класс GenericServlet, который реализует интерфейс Servlet. Этот класс содержит некоторые вспомогательные методы, например вариант метода init без аргументов. Вы можете переопределить его и использовать вместо метода init, которому передается аргумент ServletConfig.
Таблица А.2. Методы интерфейса Servlet
Тип возвращаемого значения |
Метод |
Описание |
void | init (ServletConfig config) | Вызывается контейнером сервлетов до того, как начнется обработка запроса пользователя. Не забудьте о вызове метода super.init(config) |
void | destroy( ) | Вызывается контейнером сервлетов для указания сервлету, что он должен быть удален |
ServletConfig | getServletConfig() | Возвращает объект ServletConfig, который содержит параметры для инициализации и запуска сервлета. Обратите внимание: этот объект буден равен null , если вы забудете вызвать метод super, init (config) в методе init |
Srting | getServletlnfo() | Необязательный метод, который возвращает информацию о сервлете, например данные о его авторе, номер версии и сведения об авторских правах |
void | service(ServletRequestreq, ServletResponseres) | Вызывается контейнером сервлетов для того, чтобы сервлет получил возможность ответить на запрос |
Специальные объекты, связанные с запросом
В интерфейсе RequestDispatcher определены два метода, которые позволяют одному сервлету или одной JSP-странице переадресовать или включить выходные данные другого сервлета или файл, находящийся на сервере. Вы получаете объект RequestDispatcher из объекта ServletRequest с конструктором, который указывает, какой ресурс должен быть присоединен. Этот объект создается процессором сер- влетов, как показано в следующем примере:
RequestDispatcher rd = req.getRequestDispatcher(String path)
Используя этот объект, вы можете вызвать любой из следующих методов:
forward(ServletRequest req, ServletResponse resp) include(ServletRequest req, ServletResponse resp)
Выходные данные JSP-страниц
Экземпляр класса JspWriter, называемый out, автоматически создается в методе _jspService класса PageContext. Объект JspWriter аналогично объекту Java.iо.PrintWriter записывает поток символов в специальной кодировке. Но между ними имеется значительная разница: методы класса JspWriter для вывода данных могут генерировать исключение lOException. В классе PrintWriter исключение IOЕхсерtion обрабатывается внутри, и программист должен вызывать метод checkError(), чтобы узнать, было ли сгенерировано исключение.
Способность генерировать исключение lOException является существенной для управления буферизацией, которую осуществляет JspWriter.
A
absolute positioning (абсолютное позиционирование) — размещение и масштабирование объектов класса Component с использованием точечных координат (системой координат является массив пикселов). Доступно лишь в случае, если вместо менеджера компоновки контейнера установлено значение null.
abstract — ключевое слово языка программирования Java, используемое для обозначения классов или методов, которые определяют поведение во время выполнения, но не обеспечивают полной реализации. Невозможно создать объект такого класса, но на объекты какого-либо класса, получившегося как расширение класса abstract, можно ссылаться при помощи имени класса abstract.
abstract pathname (абстрактный путь) — описание пути внутри объекта класса File, независимое от конкретной операционной системы.
Abstract Window Toolkit (AWT, абстрактный оконный инструментарий) — пакет, содержащий интерфейсы, классы, исключения и ошибки Java и образующий графический пользовательский интерфейс (GUI — graphical user interface) Java на основе компонентов GUI базовой платформы. Пакет AWT проще, чем пакет графического пользовательского интерфейса Swing.
accessibility — пакет javax.accessibility определяет интерфейсы специальных приложений Java, предназначенных для пользователей с ограниченными физическими возможностями.
Active Server Pages (ASP, активные серверные страницы) — технология компании Microsoft, предназначенная для встраивания в HTML-страницы кода для создания динамических web-страниц.
adapter (адаптер) — шаблон для преобразования (или адаптирования) интерфейса одного класса к интерфейсу другого класса. Например, в пакете Java.awt.event имеются классы, поддерживающие создание слушателей.
Adjustable — интерфейс Java (Java.awt.adjustable), содержащий методы для управления объектами, в которых имеются изменяемые в определенных пределах числовые значения (например, полоса прокрутки).
algorythm (алгоритм) — процесс решения задачи, при котором в каждый момент времени выполняется только одно определенное действие.
alpha (альфа) — символическое обозначение версии программного продукта, который проходит начальное тестирование внутри фирмы, где он был разработан; этот этап предшествует тестированию за пределами данной фирмы. См. также beta.
alpha value (альфа-значение) — термин компьютерной графики, характеризующий степень прозрачности данного пиксела. Совместно с более привычными значениями RGB (которые определяют относительную интенсивность красного, зеленого и синего цветов) альфа-значение формирует цвет пиксела в Java. Если пиксел представлен в формате int, альфа-значение занимает верхний (первый) байт, то есть первые 8 бит.
American Standard Code for Information Interchange (ASCII, американский стандартный код для обмена информацией) — повсеместно используемый в компьютерной промышленности стандарт для кодирования текстовых и управляющих символов.
anonymous (анонимный) — неименованный локальный класс Java, объявленный и созданный в отдельной инструкции.
API См. Application Programming Interface.
applet (апплет) — программа на языке Java, которая функционирует в рамках виртуальной машины Java (JVM) в браузере пользователя. Браузер в данном случае можно представлять себе как контейнер, который содержит апплеты и позволяет им выполняться на клиентской машине более или менее независимо от операционной системы.
application (приложение) — программа на языке Java, которая выполняется на клиентской машине и имеет доступ ко всем ресурсам клиентской системы. См. также applet.
Application Programming Interface (API, интерфейс прикладных программ) — набор функций, который используется приложением для доступа к операционной системе и библиотечным службам.
Application Service Provider (ASP, программный поставщик услуг) — сервер, предоставляющий помимо обычных web-страниц другие программные услуги через Интернет.
Application Services (прикладные службы) — в классификации Sun — ряд усовершенствований интерфейса, включенных в библиотеку Java Foundation Classes (JFC).
argument (аргумент) — в Java так называется элемент данных, который может обозначать примитив или объект Java.
ArithmeticException — исключительная ситуация, которая возникает, когда в процессе выполнения программы происходит целочисленное деление на ноль.
array (массив) — группа однотипных элементов данных, каждый из которых снабжен уникальным адресом, представленным 32-битным целым числом.
Arrays — класс Java (Java.util .arrays), который включает статические методы для поиска, сортировки и других вспомогательных операций над массивами примитивов и объектных ссылок.
ASCII См. American Standard Code for Information Interchange.
ASP CM. Active Server Pages, CM. Application Service Provider.
assignable (присваиваемый) — об отношении между ссылкой на объект и переменной ссылочного типа, при котором обе принадлежат одному типу или переменная является предком ссылки в иерархии классов.
assignment (присваивание) — операторы Java, которые присваивают значение какой-либо переменной; например, к операторам присваивания относятся символы = и +=.
atomic (атомарный) — шаг программы (операция), который не может быть прерван другим потоком (объектом Thread) или выполнен не полностью, называется атомарным. Все операции присваивания Java, выполняемые над 32-битными переменными, являются атомарными, но операции над 64-битными переменными (принадлежащими к типам long и integer) не относятся к атомарным.
attribute (атрибут) — в тегах XML — пара имя-значение, расположенная в открывающем теге элемента.
automatic (о локальной переменной) — переменная, объявленная внутри метода. Для таких переменных автоматически выделяется место в памяти при вызове метода.
AWT См. Abstract Window Toolkit.
B
bean См. Java bean.
beta (бета) — символическое обозначение версии программного продукта, которая находится в стадии разработки и тестируется за пределами фирмы, в которой этот продукт был разработан. Обычно эта стадия тестирования непосредственно предшествует коммерческому распространению программного продукта. См. также alpha.
bitwise (побитовая) — операция, выполняемая над отдельными битами; операция, которая манипулирует объектами целочисленных примитивных типов Java на основе взаимодействия с отдельными битами.
block (блок) — часть кода Java, которая содержится между парными фигурными скобками { и }.
break — ключевое слово языка Java, имеющее две функции: если оно используется само по себе, то служит для возобновления выполнения кода программы после данного блока инструкций; если указана метка какого-либо блока инструкций, то управление передается инструкции, следующей за указанным блоком. См. также continue.
byte (байт) — целочисленный примитив, занимающий 8 бит. В языке Java играет роль целого со знаком.
Byte — класс-оболочка Java для значений типа byte — примитивов, состоящих из 8 бит.
bytecode (байт-код) — машинно-независимый код, генерируемый виртуальной машиной Java. Используется, например, в апплетах Java.
D
data binding (связывание данных) — процесс создания объектов для преобразования данных XML в объекты Java.
daemon Thread (поток-демон) — термин UNIX, обозначающий программу, которая работает в фоновом режиме и обрабатывает запросы к сетевым службам. С помощью метода setDaemon можно маркировать потоки Java как потоки- демоны, чтобы отличить их от пользовательских потоков. Как правило, эти потоки являются утилитами JVM, как, например, поток сборки мусора. Приложение Java останавливает свою работу, когда единственными функционирующими потоками остаются потоки-демоны.
deadlock (взаимная блокировка) — ситуация, в которой двум или более потокам Java требуется один и тот же ресурс, что приводит к остановке выполнения этих потоков.
decorator — схема в Java, согласно которой функции присоединяемого объекта добавляются к основному классу.
decrement — оператор (--), уменьшающий на единицу значение своего операнда, которым служит численная переменная примитивного типа.
deep copy (детальная копия) — термин программирования для обозначения такого метода клонирования объектов, при котором копируется не только сам объект, но и все те объекты, с которыми он связан. Метод clone в классе Object не создает детальную копию.
delegate — объект, который манипулирует внешним видом и поведением компонента (в пакете Swing) или объединяет функции объектов controller и view (в схеме Model-View-Controller).
delegation — модель события в Java 1.1, в которой компоненты, генерирующие событие, передают управление обработкой событий специальным слушателям событий.
deprecated (устаревший, нерекомендуемый) — термин JDK (Java Developers Kit), который присваивается классам, интерфейсам, конструкторам, методам или полям, использование которых в дальнейшем не рекомендуется, поскольку они могут быть исключены из последующих версий.
deserialize (воссоздать) — реконструировать объект Java, который был сохранен путем сериализации, обычно с использованием объекта ObjectlnputStream.
destructor (деструктор) — метод C++, уничтожающий объект пользовательского типа и восстанавливающий занимаемую им память и другие ресурсы. В Java сборка мусора преимущественно автоматическая. См. также fmalizer.
Dimension — класс Java (Java.awt.Dimension), объекты которого обычно используются для считывания и установки ширины и высоты графического компонента.
directives (директивы) — в JSP-страницах это теги, которые задают общие параметры для страницы или части страницы.
distributed computing (распределенные вычисления) — вообще говоря, это способ организации вычислений, при котором программы, выполняемые на различных компьютерах, взаимодействуют между собой через сеть для решения общей задачи.
DLL См. dynamic link library.
doclet — программа на Java, содержащаяся в пакете sun.tools.javadoc и предназначенная для настройки внешнего вида документов Java.
Document Object Model (DOM, объектная модель документа) — способ обработки документа XML, при котором весь документ хранится в памяти в виде иерархии элементов, прошедших синтаксический анализ. В web-браузерах под DOM также понимают иерархическую структуру документа HTML.
document type declaration (объявление типа документа) — структура внутри документа XML, которая содержит объявления разметки (или указывает на них), описывающие класс документов XML.
Document Type Definition (DTD, определение типа документа) — объявления разметки, которые описывают структуру и свойства класса документов XML.
DOM См. Document Object Model.
double — обозначение примитивного численного типа Java, использующего 64 бита для представления вещественных чисел с плавающей точкой.
Double — класс-оболочка Java для значений примитивов типа double.
drag&drop (перетащить и бросить) — операция графического интерфейса (из пакета java.awt.dnd), позволяющая передавать данные между приложениями Java и другими приложениями.
DTD См. Document Type Definition.
dynamic link library (DLL, библиотека динамической компоновки) — выполняемые пакеты или модули, которые программист может записывать в память и связывать их с приложениями.
dynamic method lookup (динамический поиск метода) — способ, который использует JVM (виртуальная машина Java) для нахождения и вызова соответствующего метода во время выполнения программы, основанный на фактическом типе объекта (в отличие от типа, указанного в ссылке).
E
editable — свойство компонентов TextArea и TextField. Если для данного компонента это свойство истинно, то содержимое компонента может быть изменено пользователем.
element (элемент) — структурная конструкция XML, состоящая из открывающего тега, закрывающего тега и собственно содержимого.
enableEvents — метод Java из пакета Java.awt.Component, который вызывается для того, чтобы разрешить создание событий пользовательского интерфейса. Какие конкретно события разрешается создавать, определяет маска события.
encapsulation (инкапсуляция) — термин объектно-ориентированного программирования, означающий, что структура объекта и детали его реализации скрыты от других объектов; информация об объекте находится внутри этого объекта. Инкапсуляция позволяет программистам модифицировать внутренние функции объекта, не изменяя кода, в котором этот объект задействован как единое целое.
entity (сущность) — структурная конструкция XML, которая связывает символьные данные или правильно оформленный (well-formed) документ XML с некоторым именем. К сущности можно обращаться с помощью ссылки на сущность.
entity reference (ссылка на сущность) — структурная конструкция XML, которая используется для обращения к сущности. Ссылка на сущность выделяется с помощью знака амперсанд (&) в начале и точки с запятой в конце (;).
Enumeration — интерфейс Java 1.0 (java.util.enumeration), определяющий способ, с помощью которого коллекция генерирует последовательности элементов коллекции, используя методы nextElement и HasMoreElements. Компания Sun планировала заменить Enumeration на интерфейс Iterator версии Java 2, но он попрежнему широко используется.
equals — метод Java, который сравнивает две ссылки на объекты и возвращает true, если содержимое этих объектов идентично. Встроенный метод equal s класса Object возвращает true, когда обе ссылки указывают на один и тот же объект.
Error — класс Java (Java.lang.error), который является родительским классом всех классов ошибок Java и подклассом Throwable. Под ошибками здесь обычно понимаются ситуации, из которых программа не может выйти самостоятельно, например нехватка памяти.
escape sequence (управляющая последовательность) — комбинация символов, обычно используемая для задания отсутствующих на клавиатуре символов и символов, которые могут вызвать сбой компилятора Java.
event listener (слушатель событий) — объект Java, который контролирует деятельность пользователя и отслеживает определенные события.
event mask (маска события) — свойство класса Java.awt.Component, которое позволяет определить типы событий GUI, генерируемых объектом.
Exception — класс Java java.lang.exception, который является родительским по отношению ко всем исключениям Java, а также подклассом класса Throwable. Исключение обычно означает такую ситуацию, из которой программа может выйти самостоятельно.
extends — ключевое слово Java, используемое для описания нового класса. Это слово указывает на базовый класс, свойства которого наследует новый класс.
Extensible Markup Language (XML, расширяемый язык разметки) — упрощенная форма SGML, предложенная в качестве стандарта для создания пользовательских языков разметки. Основное отличительное свойство языка XML заключается в том, что он позволяет вводить новые теги, чтобы максимально точно описывать содержание документа.
Extensible Stylesheet Language (XSL, расширяемый язык таблиц стилей) — язык, предложенный в качестве стандарта для преобразования данных XML в визуальный формат HTML.
F
field (поле) — переменная Java, которая определяет конкретную характеристику класса.
File — класс Java (Java.iо.File), который управляет полными именами файлов и папок, но не самими файлами данных.
file separator (файловый разделитель) — символ, который разделяет имя файла и путь доступа к нему, указанные в путевом имени.
filter (в системе ввода-вывода) — пакет интерфейсов (java.io), который определяет методы фильтрования для входных и выходных потоков и имена файлов.
filter (в системе графического представления) — пакет Java.awt.image, который обеспечивает так называемые классы фильтров для преобразования графической информации.
final — ключевое слово Java, означающее, что данный класс не может иметь подклассы. В применении к методу-члену класса это слово означает, что данный метод не может быть отменен в подклассе. В применении к переменной-члену класса это слово означает, что переменная является константой, то есть ее значение нельзя изменить после того, как оно было единожды задано.
finalize — объектный метод, вызывается в процессе сборки мусора, когда требуется восстановить память, которая была занята объектом, подлежащим уничтожению. Обычно этот метод используется для того, чтобы убедиться, что после уничтожения объекта системные ресурсы восстановлены.
finally — ключевое слово Java, используемое для того, чтобы к блоку try присоединить блок кода, который должен выполняться независимо от возникновения исключительной ситуации в блоке try.
float — обозначение примитивного 32-битного числового типа Java с плавающей точкой.
Float — класс-оболочка Java для значений примитивов типа float.
Font — класс Java (Java.awt.font), содержащий специфическую информацию о шрифтах.
font family (семейство шрифтов) — класс или группа шрифтов, которые обладают общими характеристиками.
FontMetrics — класс Java (Java.awt.FontMetrics), объекты которого необходимы для выполнения всех вычислений, связанных с внешним видом шрифта (например, этот класс содержит информацию о высоте и ширине отдельных литер данного шрифта).
form (форма) — структура, используемая в HTML-страницах для создания элементов, которые на основе соглашений CGI способны принимать введенную пользователем информацию и передавать ее на web-сервер.
Электронный магазин на Java и XML
garbage collection (сборка мусора) — процесс JVM (виртуальной машины Java) поиска и восстановления памяти, занятой объектами, которые больше не используются в программе и подлежат уничтожению.
GIF См. Graphics Interchange Format.
Graphical User Interface (GUI, графический пользовательский интерфейс) — интерфейс, в котором используются графические элементы, окна и указательное устройство; примерами GUI являются MacOs, Windows и Xll. JVM также поддерживает графический пользовательский интерфейс.
Graphics — класс Java (Java.awt.Graphics), в котором определены все методы и графические примитивы, необходимые для создания изображений на экране.
graphics context (графический контекст) — информация, относящаяся к аппаратной части компьютера, используемая операционной системой для создания изображений на графических устройствах, например на экране компьютера.
Graphics Interchange Format (GIF, формат графического обмена) — повсеместно распространенный формат графических файлов HTML (расширение .gif) для встроенных графических элементов. Патент на этот формат принадлежит Unisys. См. также Joint Photograpfic Expert Group (JPEG).
Graphics2D — класс Java 2 (Java.awt.Graphics2D), который является расширением класса Graphics.
GUI См. graphical user interface.
H
hashcode (хэш-код) — в контексте программирования характеристическое число, выводимое из содержимого элемента данных, которое позволяет программе или приложению быстро отыскать этот элемент.
hashCode — метод, присущий каждому объекту Java, который генерирует целочисленный хэш-код (принадлежащий примитивному типу int), характеризующий данный объект.
Hashtable — экземпляры этого класса Java (java.util .Hashtable) можно использовать для хранения произвольных объектов, причем для индексации этой коллекции также применимы любые объекты.
heavyweight components (тяжелые компоненты) — компоненты графического пользовательского интерфейса Java, которые используют операционную сиcтему пользовательской машины, в отличие от lightweight — легких компонентов пакета графического пользовательского интерфейса Swing.
hex (hexadecimal) (шестнадцатеричный) — о системе счисления с основанием 16, используемой в программировании. В эту систему входят цифровые символы от 0 до 9 и буквенные от А до F (или от а до f)
hidden variable (скрытая переменная) — в HTML-форме скрытая переменная содержит информацию, которая недоступна для прочтения или изменения пользователем, но передается на web-сервер.
hierarchical (иерархический) — способ логической организации элементов, называемый также древовидной структурой, при котором каждый элемент, за исключением корневого элемента, имеет родительский элемент и может иметь или не иметь дочерние элементы. Примерами такой организации могут служить библиотека классов Java, документы XML и система файлов и папок в компьютере.
HTML См. Hypertext Markup Language.
HttpServlet — базовый класс пакета javax.servlet.http, расширенный сервлетами, которые должны отвечать на операции GET и POST.
Hypertext Markup Language (HTML, язык гипертекстовой разметки) — язык, используемый для создания web-страниц и стандартизованный консорциумом W3C.
Hypertext Transfer Protocol (HTTP, протокол передачи гипертекстовых файлов) — набор правил (протоколов), базирующийся на TCP/IP, который служит основой для связи между web-сервером и клиентами.
I
IDE См. Integrated Development Environment.
identifier (идентификатор) — имя, присвоенное элементу в протоколе Java или в приложении.
IEEE См. Institute of Electrical and Electronics Engineers.
Image — абстрактный класс Java (Java.awt.image), который определяет, как хранится графическая информация.
implements — ключевое слово Java в объявлении класса, которое предшествует списку из одного или более интерфейсов, методы для которых содержатся в данном классе.
implicit variables (неявные переменные) — эти переменные автоматически создаются в JSP-странице.
import — инструкция исходного кода Java, которая сообщает компилятору Java, в каком пакете содержатся классы, используемые в этом коде.
increment — оператор (++), увеличивающий на единицу значение своего операнда, которым служит численная переменная примитивного типа.
IndexOutOfBoundsException — исключение Java, возникающее, когда происходит попытка обращения к несуществующему элементу массива; Array! ndexOutOf - BoundsException и StringlndexOutOfBoundsException являются подклассами класса IndexOutOfBoundsException.
inheritance (наследование) — в объектно-ориентированном программировании механизм связи между иерархически организованными объектами, характеризующийся тем, что некоторые объекты (дочерние) получают (наследуют) атрибуты другого объекта (родительского).
init (метод апплета) — по соглашению это метод, принадлежащий исходному классу апплета Java и вызываемый JVM web-браузера после создания апплета, но перед его отображением.
init (метод сервлета) — метод, принадлежащий классу сервлета Java и используемый для однократной инициализации сервлета. Он вызывается после создания сервлета, но перед тем, как сервлет начнет выполнять свои функции.
initialization (инициализация) — задание начального значения переменной.
inner class (внутренний класс) — вложенный класс или интерфейс, имеющий доступ ко всем методам и полям — членам того класса, в который вложен данный, в том числе и ко всем его членам, объявленным как private (то есть закрытым).
InputStream — абстрактный базовый класс Java (java.awt.inputStream) для различных классов Java, которые считывают данные как поток байтов.
Insets — класс Java (Java. awt. Insets), используемый в графическом интерфейсе. В этом классе содержится объект, задающий ширину границ всех сторон контейнера.
instance (экземпляр) — объект, созданный на основе данного класса, называется экземпляром этого класса.
instance fields (поля экземпляра) — набор специфических переменных данного экземпляра класса.
instance methods (методы экземпляра) — методы данного экземпляра класса, которые выполняются только при ссылке на данный экземпляр класса.
instance variable (переменная экземпляра) — переменная Java, которая является частью данного экземпляра класса, а не самого класса (в отличие от статической переменной).
instanceof — логический оператор, который используется для определения типа ссылки в выражении.
Institute of Electrical and Electronic Engineers (IEEE, Институт инженеров по электротехнике и электронике) — профессиональная организация, создающая стандарты для аппаратной части компьютеров и для программного обеспечения, а также для электронной промышленности.
int — обозначение примитивного 32-битного целочисленного типа Java, который всегда интерпретируется как целое число со знаком.
Integer — класс-оболочка Java для значений примитивного типа int.
Integrated Development Environment (IDE, интегрированная среда разработки) — среда разработки приложений, которая объединяет в одном пакете инструментальные программные средства, такие как редактор исходного кода, компилятор, загрузчик и отладчик.
interface (интерфейс) — почти то же, что и класс Java, но в интерфейсе присутствуют только объявления методов, но не их реализации. Класс Java может реализовать любое количество интерфейсов.
International Organization for Standardization (ISO, Международная организация по стандартизации) — группа, состоящая из национальных организаций по стандартизации из 89 стран, которая устанавливает стандарты в сфере телекоммуникаций и компьютерных технологий.
interrupt — метод экземпляра класса Thread; если объект Thread находится в состоянии sleep или wait, то вызов метода interrupt приводит к возбуждению потока и генерирует исключение InterruptedException. В противном случае устанавливается флаг прерывания.
interrupted — статический метод Java, который используется работающим потоком (Thread) для определения, имело ли место прерывание потока.
InterruptedException — исключение, которое генерируется, если поток (Thread), находящийся в состоянии sleep или wait, оказывается прерванным. Поток не может продолжать выполнение, но должен сначала обработать исключение.
lOException — класс Java (Java.io.exception), который является родительским по отношению ко всем исключениям, относящимся к процессам ввода-вывода, например открытие и чтение файла.
ISO См. International Organization for Standardization.
Iterator — интерфейс Java (Java.util.Iterator), который должен был заменить интерфейс Enumeration как предпочтительное средство перебора элементов коллекции.
J
J2EE См. Java 2 Enterprise Edition.
J2ME См. Java 2 Micro Edition.
J2ME См. Java 2 Standard Edition.
JAR (Java ARchive, архив Java) — формат файлов, аналогичный формату zip, используемый для объединения нескольких ресурсов (например, классификационных файлов и библиотек классов Java) в один файл.
Java 2 Enterprise Edition (редакция Java 2 для корпоративных программных систем на базе Java) — наибольшая коллекция утилит Java, разработанная компанией Sun для создания базовых приложений, удобных для подключения к Интернету.
Java 2 Micro Edition (J2ME, редакция Java 2 Микро) — уменьшенная в объеме и упрощенная коллекция утилит и библиотек Java, специально подобранных компанией Sun для решения несложных задач.
Java 2 Standard Edition (J2SE, стандартная редакция Java 2) — коллекция утилит и библиотек Java, созданная компанией Sun как стандарт, соответствующий требованиям большинства разработчиков приложений для Интернета.
Java 2D — группа классов Java, которая содержит некоторые дополнительные графические методы.
JavaBean — компонент Java, предназначенный для создания объектов, которые затем могут многократно использоваться в разрабатываемых приложениях.
Java Communications API (интерфейс прикладного программирования Java для организации связи) — группа классов Java и специфический для данной операционной системы код, который поддерживает непосредственное взаимодействие с последовательным и параллельным портами ввода-вывода.
Java Database Connectivity (JDBC, средство доступа Java-приложений к базам данных) — коллекция классов Java в пакете java.sql, которая позволяет программам Java соединяться с базами данных SQL.
Java Development Kit QDK, базовый комплект разработчика приложений на Java) — пакет Java, состоящий из инструментальных средств разработки, утилит, библиотеки классов и документации, который можно загрузить с web-сайта компании Sun java.sun.com.
Java Foundation Classes (JFC, основные классы Java) — имя, присвоенное компанией Sun коллекции из пяти инструментальных пакетов (Swing, Java 2D, Accessibility, Drag & Drop и Application Services), предназначенной для создания дополнительных графических пользовательских интерфейсов на Java 2.
Java Native Interface (JNI, собственный интерфейс Java) — интерфейс JNI является стандартным интерфейсом, который предоставляет языку Java доступ к языкам операционной системы хоста и определяет взаимодействие Java с программными модулями, написанными на других языках (на данный момент — С и C++).
Java Runtime Environment (JRE, среда исполнения Java) — коллекция программ и библиотек для конкретной операционной системы, которая позволяет выполнять программы Java. Состоит из виртуальной машины Java, основных классов Java и сопутствующих файлов. JRE не содержит компилятора, отладчика и других инструментов.
Java Virtual Machine (JVM, виртуальная машина Java) — виртуальный (в отличие от физического) компьютер, который является частью JRE и выполняет байт-коды Java, что обеспечивает мобильность приложений Java, то есть возможность их перенесения на многие платформы.
JavaBeans — стандарт Java, которому должны соответствовать компоненты JavaBean. Содержит набор стандартных спецификаций для написания компонентных приложений на языке Java. Компоненты позволяют пользователям строить приложения из многократно используемых частей и работать с ними в любой операционной системе и на любых платформах.
javac — приложение Java, которое запускает компилятор.
javadoc — утилита Java, которая позволяет автоматически создавать документацию путем обработки исходного кода и генерации HTML-страниц со справочной информацией.
JavaScript — язык сценариев, разработанный компанией Netscape (исходное его название было LiveScript) для создания web-страниц. Позволяет контролировать способ представления web-страниц в браузере. До некоторой степени обеспечивает поддержку встроенных апплетов Java.
JavaServer Pages OSP) — интерфейс прикладного программирования Java, который позволяет программисту комбинировать коды HTML и Java в одном документе для создания динамической web-страницы.
JComponent — класс Java (javax. swing. JComponent), который является базовым классом для визуальных компонентов Swing.
JDBC См. Java Database Connectivity.
JDK См. Java Development Kit.
JFC CM. Java Foundation Classes.
JIT CM. Just In Time.
join — метод экземпляра класса Thread, координирующий связь между потоками.
Joint Photographic Experts Group (JPEG, объединенная группа экспертов по машинной обработке фотоизображений) — формат для хранения графических файлов (расширение .jpg), поддерживаемый JVM и часто используемый на web- страницах. См. также Graphics Interchange Format (GIF).
JNI См. Java Native Interface.
JPEG CM. Joint Photographic Experts Group.
JRE См. Java Runtime Environment.
JSP CM. JavaServer Pages.
jspDestroy — метод, который всегда вызывается перед тем, как web-сервер удаляет код JSP-страницы из памяти.
jsplnit — метод, который всегда создается на JSP-странице и всегда вызывается перед тем, как начинает обрабатываться запрос пользователя.
_jspService — метод, который всегда создается на JSP-странице для обработки HTTP-запроса пользователя.
Just in Time (JIT, немедленный, по требованию) — технология, которая ускоряет выполнение программ на Java за счет динамической замены байт-кода Java на машинный язык по мере вызовов методов JVM. См. Java Virtual Machine.
L
label (метка) — идентификатор, который задается в инструкциях break и continue, идентифицируя точку перехода; после метки всегда ставится двоеточие.
layout manager (диспетчер компоновки) — объект, контролирующий позицию и размер компонента, находящегося внутри объекта Java.awt.Container.
lightweight components (легкие компоненты) — компоненты графического пользовательского интерфейса Java, для которых JVM выполняет всю обработку экранных событий и осуществляет создание на экране графических объектов.
List — интерфейс Java (Java.util .list), который предоставляет упорядоченную коллекцию ссылок на объекты.
listener (слушатель) — объект Java 1.1, связанный с генерирующим события компонентом и получающий сообщения о событиях конкретного класса.
local class (локальный класс) — внутренний класс Java, который определен внутри метода — члена класса (внешнего), имеющего доступ ко всем членам класса и всем локальным переменным, отмеченным ключевым словом final.
local variable См. automatic.
lock (блокировка) — эквивалент переменной, которая связывается с каждым объектом для контроля доступа потоков к этому объекту. Этими переменными может манипулировать только JVM в процессе синхронизации доступа к объекту.
long — примитивный 64-битный целочисленный тип Java, который всегда интерпретируется как целое число со знаком. См. также double (числа с двойной точностью).
Long — класс-оболочка Java для значений примитивного типа long.
low-level event (событие низкого уровня) — события Java, близкие к событиям операционной системы; например движениям мыши.
M
main — статический метод Java, необходимый для исходного класса приложения Java, который выполняется JVM после загрузки класса для того, чтобы запустить приложение.
manifest (манифест) — файл, присутствующий во всех архивных файлах JAR, который содержит дополнительную информацию об остальных файлах в архиве (например, электронную подпись или информацию о шифровании). Доступ к этой информации дает класс Java, util.jar.manifest.
Map — интерфейс Java (java.util .Map), который требует, чтобы реализующий его класс создавал пары ключ-значение, то есть каждому объекту сопоставлял уникальный ключ. К числу классов, реализующих интерфейс Map, относятся Hashtable и SortedMap.
marshalling (составление) — в технологии распределенного программирования — это процесс компоновки объектов и переменных для передачи их удаленному обработчику.
maximumSize — параметр, характеризующий объекты графического интерфейса, предком которых является Jcomponent. Значение этого параметра задается методом setmaximumSize.
MAX_PRIORITY — константа класса Thread, которая используется в методе setPriority для придания потоку (объекту Thread) наивысшего приоритета, допустимого для пользовательского потока.
member (член) — переменные, методы и внутренние классы Java, объявленные как часть класса, называются членами класса.
member class (класс-член) — внутренний класс Java, который не объявлен как статический и не объявлен внутри метода-члена класса.
MenuComponent — класс Java (java.awt.MenuComponent), родительский для всех классов Java. awt, которые используются для отображения меню на экране.
method (метод) — функция класса Java, для которой определено имя и объявлены специфические входные параметры и типы выходных данных.
method signature (сигнатура метода) — комбинация имени и параметров метода, с помощью которой данный метод можно отличить от других.
minimumSize — параметр, характеризующий компоненты Java, предком которых является Jcomponent. Значение этого параметра задается методом setMinimumSize и определяет минимальное пространство, которое менеджер компоновки отводит данному компоненту.
MIME См. Multipurpose Internet Mail Extensions.
MIN_PRIORITY — константа класса Thread, которая используется в методе setPriority для придания потоку (объекту Thread) наименьшего приоритета.
model — в схеме Model-View-Controller — объект Java, содержащий данные.
Model I (модель I) — относится к архитектуре приложений JSP, в которых код JSP отвечает и за первичное принятие решений, и за форматирование. В терминологии Model-View-Controller JSP-страница выполняет функции controller и view, в то время как объект JavaBean выполняет функции model.
Model II (модель II) — относится к архитектуре приложений JSP, в которых первичное принятие решений осуществляет сервлет, который передает изображение JSP-страницам при помощи метода RequestDispatcher. В терминологии Model-View-Controller контроллер является сервлетом, в то время как JSP-страница выполняет функции, связанные с визуальным представлением данных (функции view).
Model-View-Controller (MVC, модель-представление-контроллер) — технология создания компонентов пользовательского интерфейса, основанная на взаимодействии трех объектов: модель отвечает за логическое представление данных, представления — за визуальное представление данных, контроллер обрабатывает входные данные и передает их изменения в модель.
modulus (modulo) — оператор Java (%), применимый к объектам целочисленного типа или к вещественным числам с плавающей точкой. Данный оператор делит левый операнд на правый операнд и возвращает результат.
monitor (монитор) — механизм JVM, который использует переменную блокировки объекта (lock) для контроля доступа потоков к объекту.
multiple inheritance (множественное наследование) — в объектно-ориентированном программировании этот термин означает, что переменные и методы данного класса унаследованы более чем от одного класса. В языке Java множественное наследование не предусмотрено.
Multipurpose Internet Mail Extensions (MIME, многоцелевое расширение почты Итернета) — дополнение к протоколу STMP, содержащее, в частности, стандартные определения различных типов файлов и позволяющее включать в сообщения электронной почты мультимедийные файлы и использовать различные виды кодировок. Первоначально протокол MIME предназначался для передачи сообщений электронной почты, но теперь он широко используется в сетевых приложениях.
multitasking (многозадачность) — организация вычислительных процессов в операционной системе, при которой одновременно (или квазиодновременно) выполняется несколько задач.
multithreading (многопоточность) — характеристика среды выполнения, в которой возможно одновременное выполнение нескольких независимых потоков в рамках одной задачи, при этом каждый поток имеет полноценный доступ ко всем ресурсам основной задачи и к памяти, отведенной для нее.
N
namespace (пространство имен) — полный набор имен классов, методов и других программных элементов, который используется компилятором Java для однозначной идентификации этих элементов. Средство для разрешения конфликтов по совпадению имен между элементами из различных словарей в документе XML.
NaN См. Not a Number.
narrowing conversion (сужающее преобразование примитивов) — процесс Java, преобразующий один примитивный тип к другому примитивному типу, сопровождающийся возможной потерей информации; например, преобразование типа int к типу byte устраняет дополнительные биты.
narrowing conversion (сужающее преобразование ссылочных типов) — процесс Java, преобразующий ссылочный тип в подкласс; например, преобразование из Object в String.
NEGATIVE_INFINITY — константа Java, определенная в классах Float и Double, которая получается как результат вещественного деления отрицательного числа с плавающей точкой на ноль.
nested top-level inner class or interface (вложенный внутренний класс или интерфейс) — внутренний класс Java, который объявлен как статический и обрабатывается так же, как любой другой внешний класс Java.
new — ключевое слово Java, указывающее на создание нового объекта или массива.
NORM_PRIORITY — константа класса Thread, которая используется в методе SetPriority для придания потоку (объекту Thread) нормального приоритета приложения.
Not a Number (NaN, не число) — специальная константа Java, принадлежащая к типу вещественных чисел с плавающей точкой, которая обозначает результат некорректной арифметической операции, например извлечение квадратного корня из отрицательного числа. Эта константа определена в классах Float и Double.
notify — метод класса Object, который запускает выполнение потока, находящегося в списке очередности данного объекта. Поток не начинает выполняться, пока на это не поступит разрешение от специального механизма JVM, контролирующего очередность выполнения потоков.
notify All — метод, который действует аналогично методу notify, но вызывает выполнение всех потоков, находящихся в списке очередности данного объекта.
null — специальная литерная константа, которая используется в качестве значения неинициализированной ссылочной переменной.
O
object (объект) — экземпляр класса.
Observable — класс Java (java.util .observable), который является базовым для всех наблюдаемых объектов; в схеме Observer-Observable — это тот объект, изменение состояния которого отслеживает интерфейс Observer.
Observer — интерфейс Java (java.util .Observer) для объектов-наблюдателей (объектов Observer), которые следят за объектами класса Obsevrable.
OutStream — абстрактный класс Java (java.io.outstream), который является базовым для всех классов, которые записывают данные в виде потока байтов.
overloading (перегрузка) — ситуация, при которой- в классе Java имеются несколько методов с одинаковым именем, но различными наборами параметров. Тогда имя метода называется перегруженным.
overriding (переопределение) — методы подкласса заменяют методы суперкласса с тем же типом возвращаемого значения и той же сигнатурой.
и приложений Java, соответствующих критериям
Словарь терминов
100 % Pure Java — обозначение для классов и приложений Java, соответствующих критериям Sun о полной независимости от конкретной операционной системы.
Р
package (пакет) — коллекция связанных между собой классов и интерфейсов Java, обладающая единым пространством имен.
parent (родитель) — родителем данного класса является любой класс, предшествующий данному в иерархической системе (то есть расположенный ближе к корневому элементу).
path separator (разделитель пути) — символ, который служит разделителем в списке путей; примером может служить переменная окружения PATH в Windows. Класс File содержит строку PathSeparatorString, соответствующую данному окружению.
peer — объект пользовательского графического интерфейса операционной системы, который соответствует некоторому объекту из Java AWT.
pixel (пиксел) — наименьший видимый и адресуемый элемент изображения на мониторе или другом выходном устройстве. В Java используется как единица для определения размера и расположения объектов.
pointer (указатель) — в языке программирования С это механизм, обеспечивающий непрямой доступ к объектам и переменным; в Java отсутствует.
polymorphic (полиморфный) — характеристика объекта, указывающая на его способность принимать различные формы благодаря наследованию и перегрузке методов.
port address (адрес порта) — в компьютерных сетях, основанных на протоколе TCP/IP, это идентификатор сокета данного адреса в сети. По этому идентификатору программа или служба находит сокет.
POSITIVE_INFINITY — константа Java, определенная в классах Float и Double, которая получается как результат вещественного деления положительного числа с плавающей точкой на ноль.
preferredSize — параметр, характеризующий компоненты Java, предком которых является класс Jcomponent. Значение этого параметра задается методом setPre- ferredSize.
primary container (первичный контейнер) — объект Swing, для которого имеется соответствующий объект графического интерфейса операционной системы и который может поддерживать независимое окно.
primitive (примитив) — общее название некоторых типов Java (boolean, char, byte, short, int, long, float и double), которые хранятся непосредственно в двоичной форме.
priority (приоритет) — целочисленное значение от 1 до 10, которое присваивается потоку (Thread) и используется JVM при определении очередности выполнения потоков.
private — ключевое слово Java для маркировки переменных и методов, которые доступны только для методов, объявленных в том же классе.
promotion (повышение) — процесс, происходящий при компиляции, когда числа подвергаются расширяющему преобразованию к другому типу, если этого требует данная операция.
protected — ключевое слово Java для маркировки переменных и методов, которые доступны только для методов, принадлежащих классам из того же пакета или классам, для которых данный класс является суперклассом.
protocol (протокол) — набор правил, регламентирующих передачу данных между различными устройствами.
public — ключевое слово Java, позволяющее менять область видимости классов и их членов, делая их доступными для всех объектов независимо от границ пакетов.
С
CAB (cabinet) (кабинет) — формат Microsoft для сжатых файлов ресурса и других классификационных файлов. Используется также для распространения установочных файлов.
case-insensitive (без учета регистра) — свойство языка программирования, означающее, что в данном языке буквы, записанные в верхнем и нижнем регистрах, воспринимаются одинаково.
case-sensitive (чувствительный к регистру) — свойство языка программирования, означающее, что в данном языке буквы, записанные в верхнем и нижнем регистрах, воспринимаются как разные; другими словами, в таком языке слова «текст» и «Текст» воспринимаются как два разных слова. Язык Java является чувствительным к регистру.
cast — выражение Java, которое изменяет тип выражения на новый тип, указанный в скобках.
catch — ключевое слово языка Java. Применяется для объявления специального типа исключений и создания программного блока или инструкции, которые выполняются, если это исключение возникнет в блоке, содержащем инструкцию try.
CGI См. Common Gateway Interface.
char — обозначение типа целочисленных примитивных переменных языка Java, в котором символы Unicode представлены в виде 16-битных целых без знака.
Character — класс-оболочка Java для значений типа char.
character data (символьные данные) — текстовое содержание элемента или атрибута.
checked exceptions (обрабатываемые исключения) — программные исключения Java, для обработки которых требуется явный код.
child (дочерний) — в контексте объектно-ориентированного программирования дочерним называется любой объект, который наследует свойства и получает информацию от какого-либо другого объекта; класс Java, который связан с другим классом (родительским классом, или суперклассом) механизмом наследования.
class (класс) — в общем контексте объектно-ориентированного программирования метод группировки объектов, обладающих каким-либо общим свойством или свойствами; все классы Java происходят от класса Object.
Class — класс Java (Java.lang.Class), который идентифицирует тип любого объекта во время выполнения программы.
class file (файл класса) — результат компиляции класса Java.
class method (метод класса) — метод Java, объявленный статически и относящийся ко всему классу, а не к отдельным его экземплярам.
class modifiers (модификаторы класса) — ключевые слова Java (public, abstract и final), которые задают свойства или характеристики класса.
class variable (переменная класса) — статическая переменная, принадлежащая всему классу Java, а не отдельному экземпляру класса.
ClassCastException — исключение, возникающее в случае, если виртуальная машина Java замечает попытку преобразовать ссылку на объект к несовместимому типу.
clone — метод класса Object, предназначенный для создания копии объекта.
Collection — интерфейс Java (Java.util .Collection), который определяет основное поведение объектов Collections API.
Collections API (интерфейс прикладных программ для коллекций) — набор классов и интерфейсов Java 2, который предоставляет методы для манипуляций с коллекциями объектов.
Collections — класс Java (Java.util .collection), содержащий статические методы, применимые к коллекциям.
Color — класс Java (java.awt.color), который объединяет красный, зеленый и синий цвета с нужной интенсивностью для формирования цвета, видимого на экране.
Common Gateway Interface (CGI, универсальный интерфейс шлюзов) — соглашения, регулирующие взаимодействие между web-серверами и вспомогательными программами, например поисковыми машинами. Сценарии или исполняемые файлы, которые поддерживают взаимодействие между пользователями (через браузеры) и web-серверами.
Comparator — интерфейс Java (Java.util.comparator), который содержит методы, позволяющие пользовательским классам использовать методы сортировки и поиска класса Arrays.
completeness (завершенность) — термин объектно-ориентированного программирования, указывающий, что поведение класса полностью разработано и не требует дальнейшего уточнения при помощи подклассов.
Component — абстрактный класс Java (Java.awt.Component), который является родительским для всех экранных компонентов в графическом пакете AWT, кроме тех, которые относятся к меню.
constraints — объект Java, который передается диспетчеру компоновки, реализующему интерфейс LayoutManager2, и определяет способ обработки компонентов.
constructor (конструктор) — особая разновидность метода, вызываемого при создании экземпляра класса с помощью оператора new; при этом конструктор инициализирует объект. В классе Java может быть объявлен один или несколько конструкторов либо не объявлено ни одного.
constructor chaining (связывание конструкторов) — конструктор Java, который вызывает другой конструктор в соответствии со специальным набором правил, принятых в Java.
container (контейнер) — в терминологии Sun среда, в которой функционируют апплеты, сервлеты и EJB, необходимая для реализации специальных служб.
Container — класс Java (Java.awt.Container), являющийся предком по отношению ко всем объектам AWT GUI, которые содержат все компоненты интерфейса и управляют ими.
content pane (область содержимого) — в классах контейнеров Swing, таких как JFrame, данная область — тот контейнер, которому передаются все компоненты интерфейса.
continue — ключевое слово Java, которое используется в двух случаях: для возобновления работы программы после выхода из текущего цикла или, если вместе с ним указана метка, для передачи управления на помеченную инструкцию. См. также break.
controller (контроллер) — в схеме Model-View-Controller контроллер обеспечивает функции или услуги для передачи введенных пользователем данных объектам model и view (см. Model-View-Controller).
cookie — небольшой фрагмент данных в текстовом формате, содержащий информацию о предыстории обращений данного пользователя к данному web-серверу, автоматически создаваемый сервером на машине пользователя и сохраняемый web-браузером. Эти данные сервер может использовать для идентификации пользователя.
T
tag (тег) — в языках разметки, таких как HTML, XML и JSP-страницы, тег представляет собой специальную последовательность символов, которая не является частью текста документа, но содержит информацию о способе отображения этого текста.
taglib — в технологии JSP программист может определить свою собственную библиотеку специальных функций Java, обозначенных с помощью тегов. Специальная директива taglib указывает JSP, что нужно использовать конкретную библиотеку.
TCP/IP См. Transmission Control Protocol/Internet Protocol.
Thread — класс Java (Java.lang.Thread), который является родительским для потоков в JVM и определяет их поведение.
ThreadDeath — исключительная ситуация, возникающая при внезапном прекращении выполнения потока.
ThreadGroup — класс Java (Java.lang.ThreadGroup), объекты которого используются JVM для определения множества объектов Thread и для регулирования операций над этим множеством.
throw — инструкция Java, которая вызывает прекращение обработки нормальных инструкций и инициирует обработку исключения; должна быть связана с объектом Throwable.
Throwable — класс Java (Java.lang.Throwable), который является родительским по отношению ко всем классам ошибок и исключений Java.
throws — ключевое слово Java, которое используется в объявлении методов для введения списка исключений, которые может вызвать этот метод.
timestamp — переменная Java типа long, в которой записывается системное время в момент, когда происходит какое-либо событие.
toString — метод, входящий во все ссылочные типы Java, который используется компилятором для обработки инструкций, содержащих объекты String и оператор +.
Transmission Control Protocol/Internet Protocol (TCP/IP, протокол управления передачей/протокол Интернета) — набор протоколов для передачи сообщений, разработанных для использования в семействе сетей Интернета и для объединения неоднородных сетей.
try — инструкция Java, конструирующая блок кода, в котором может возникнуть исключительная ситуация; за этой инструкцией должна следовать хотя бы одна инструкция catch и/или инструкция finally.
type (тип) — класс или интерфейс объекта Java. Вообще говоря, в объектно- ориентированном программировании интерфейс объекта иногда рассматривается отдельно от его реализации, что приводит к дальнейшему подразделению на класс и тип.
U
UDP См. User Datagram Protocol.
UML См. Unified Modeling Language.
unary (унарный) — характеристика оператора Java, означающая, что у него имеется только один операнд, например оператор ++.
unchecked exceptions (необрабатываемые исключения) — исключения класса RuntimeException, для которых компилятор не требует от программиста задания явного кода обработки исключений.
Unicode — международный 16-битный стандарт ANSI для представления алфавитных символов (содержит более 65 000 символов, включая графические). В Java используется версия Unicode 2.0, см. www.unicode.org.
Unified Modeling Language (UML, унифицированный язык моделирования) — стандартная нотация визуального моделирования программных систем.
Uniform Resource Identifier (URI, универсальный идентификатор ресурса) — набор имен и адресов, указывающих на ресурсы.
Uniform Resource Locator (URL, универсальный указатель ресурса) — система унифицированных адресов ресурсов, которая содержит явные указания, как найти нужный ресурс в Интернете.
UPI См. Uniform Resource Identifier.
URL См. Uniform Resource Locator.
URL — класс Java (Java.net.URL), который предназначен для работы с ресурсами, заданными своими URL-адресами, и для создания сетевых приложений.
User Datagram Protocol (протокол датаграмм пользователя) — протокол передачи пакетов без установления прямого соединения (альтернатива TCP/IP), который поддерживает простую службу передачи данных между программами; считается ненадежным, так как не предоставляет никаких гарантий доставки пакетов.
user thread (пользовательский поток) — любой поток Java, который не обозначен как демон.
V
Valid XML (допустимый документ XML) — документ XML, который соответствует правилам, заданным в DTD или в схеме документа.
variable shadowing (сокрытие переменных) — механизм, в рамках которого переменные Java, относящиеся к определенной области видимости, могут запретить непосредственный доступ к другим переменным с теми же идентификаторами, принадлежащими той же области видимости.
Vector — класс Java (Java.util.Vector), который включает в себя расширяемый массив ссылок на объекты класса Object.
view (представление) — объект Java, который отвечает за визуальное представление данных в технологии Model-View-Controller.
viewport (порт просмотра) — логическое окно, в которое видна часть просматриваемого объекта Java. С помощью полосы прокрутки можно перемещать это окно так, чтобы по частям просмотреть весь объект.
visibility (видимость) — уровень доступа к данному классу Java других классов.
W
W3C См. World Wide Web Consortium.
wait — метод класса Object, который при вызове со стороны некоторого потока блокирует его доступ к объекту с помощью переменной lock, делает этот поток неактивным и переводит в состояние ожидания. В этом состоянии поток находится до тех пор, пока не будет вызван извещающий метод notify, или notifyAll, или же пока не истечет время, указанное в параметре метода wait.
wait list (список очередности) — список потоков Java, которые относятся к определенному объекту и находятся в режиме ожидания.
wait set (набор задержек) См. wait list.
Web application (web-приложение) — набор сервлетов, JSP-страниц, файлов HTML, графических файлов и других ресурсов, которые объединены в структурированную иерархию, расположенную на web-сервере.
Web Application Resource (WAR, ресурсы web-приложения) — набор всех файлов, необходимых для создания web-приложения, сжатый в один архивный файл по алгоритму zip. Определен в спецификации сервлета 2.2.
well-formed XML (правильно оформленный документ XML) — документ XML, соответствующий требованиям W3C (W3C Recommendation) для XML 1.0.
widening conversions (расширяющие преобразования) — такие преобразования примитивных типов, при которых не происходит потери информации; для ссылочных типов — преобразование из подкласса в класс, расположенный выше в иерархической системе классов.
widget («прибамбас») — термин профессионального жаргона программистов, означающий компонент пользовательского интерфейса, например кнопку или переключатель.
World Wide Web Consortium (W3C, консорциум W3C) — организация, устанавливающая стандарты для WWW (www.w3.org).
wrapper classes (классы-оболочки) — классы Java, которые соответствуют каждому из примитивных типов и обеспечивают соответствующие служебные функции.
Writer — абстрактный класс Java (Java.io.writer), базовый для всех классов, которые записывают данные как поток 16-битных символов.
X
XML См. Extensible Markup Language. XSL См. Extensible Stylesheet Language.