Эта глава описывает пакет javax.servlet.jsp
. В главе имеется содержимое,
сгенерированное автоматически из javadoc, внедрённых в Java-классы и интерфейсы.
Это делает возможным создание единого авторизованного документа спецификации.
Пакет javax.servlet.jsp
содержит несколько классов и интерфейсов, описывающих и
определяющих контракты между классом реализации JSP-страницы и средой работы
программы/runtime environment, предоставляемые экземпляру такого класса соответствующим JSP-контейнером.
В разделе рассматривается базовый контракт между объектом реализации JSP-страницы
и его контейнером. Главный контракт определяется классами JspPage
и HttpJspPage
.
Класс JspFactory
описывает механизм портативной инстанциации всех необходимых объектов
прогона, а JspEngineInfo
предоставляет базовую информацию о текущем JSP-контейнере.
Ни один из классов, рассматриваемых здесь, не предназначен для использования
авторами JSP-страниц; пример использования этих классов имеется в данной главе.
JspPage
Синтаксис
public interface JspPage extends javax.servlet.Servlet
Все Известные Субинтерфейсы: HttpJspPage
Все Суперинтерфейсы: javax.servlet.Servlet
Описание
Интерфейс JspPage описывает основное взаимодействие, которому класс реализации JSP-страницы
обязан удовлетворять; страницы, использующие HTTP-протокол, описаны через интерфейс HttpJspPage
.
Этот интерфейс определяет протокол с 3 методами; только два из них: jspInit()
и
jspDestroy()
являются частью этого интерфейса как подпись третьего метода: _jsp-Service()
зависит от специфического используемого протокола и не может быть выражен общим способом в Java.
Класс, реализующий этот интерфейс, отвечает за вызов вышеуказанных методов в
нужное время, базируясь на соответствующих вызовах методов на базе Servlet'а.
Методы jspInit()
и jspDestroy()
могут быть определены автором JSP, но метод
_jspService()
определяется автоматически JSP-процессором на основе содержимого JSP-страницы.
_jspService()
Метод _jspService()
соответствует телу JSP-страницы. этот метод определяется
автоматически JSP-контейнером и никогда не должен определяться автором JSP.
Если суперкласс специфицируется через использование атрибута extends
, то этот
суперкласс может избрать выполнение некоторых акций в своём методе
service()
до или после вызова метода
_jspService()
.
См. использование атрибута
extends
в главе JSP_Engine JSP-спецификации.
Специфика подписи зависит от протокола, поддерживаемого JSP-страницейJSP page.
public void _jspService(ServletRequestSubtype
request,
ServletResponseSubtype response)
throws ServletException, IOException;
()
public void jspDestroy
Метод jspDestroy()
вызывается при уничтожении JSP-страницы. JSP-страница может
переопределять этот метод включением его определения в элемент declaration
. JSP-страница
должна переопределять метод destroy()
из Servlet'а.
public void jspInit()
Метод jspInit()
вызывается при инициализации JSP-страницы. Реализация JSP
(и класса, упоминаемого атрибутом
extends
, если имеется) отвечает за то, что с этой точки вызовы метода getServlet-Config()
будут возвращать требуемое значение. JSP-страница может переопределять этот
метод включением его определения в элемент declaration
. JSP-страница должна
переопределять метод init()
из Servlet'а.
HttpJspPage
Синтаксис
public interface HttpJspPage extends JspPage
Все Суперинтерфейсы: JspPage, javax.servlet.Servlet
Описание
Интерфейс HttpJspPage
описывает взаимодействие, которое Класс Реализации JSP-Страницы
обязан выполнять при использовании HTTP-протокола.
Поведение идентично поведению JspPage
, за исключением подписи метода
_jspService
, которая теперь выражается в системе типов Java и включается в интерфейс явно.
См. Также: JspPage
public void _jspService(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Метод _jspService()
соответствует телу JSP-страницы. Этот метод определяется
автоматически JSP-контейнером и никогда не должен определяться автором JSP-страниц.
Если суперкласс специфицируется через использование атрибута extends, то этот
суперкласс может избрать выполнение некоторых акций в своём методе
service()
до или после вызова метода
_jspService()
. См. использование атрибута
extends
в главе JSP_Engine JSP-спецификации.
Вызывает: IOException, ServletException
JspFactory
Синтаксис
public abstract class JspFactory
Описание
является абстрактным классом, определяющим несколько factory/"фабричных"-методов,
доступных JSP-странице на этапе прогона, для создания экземпляров различных
интерфейсов и классов, используемых для поддержки JSP-реализации.
JspFactory
Соответствующая реализация JSP Engine будет, в процессе своей инициализации,
инстанциировать зависящий от реализации подкласс этого класса сделает его
глобально доступным для использования классами реализации JSP
путём регистрации экземпляра, созданного этим классом, через static/статичный
метод setDefaultFactory()
.
Классы PageContext
и
JspEngineInfo
являются единственными зависящими от реализации классами, которые
могут создаваться из factory/фактории.
JspFactory-объекты не должны использоваться авторами JSP-страниц.
public JspFactory()
public static
synchronized JspFactory getDefaultFactory()
Возвращает: факторию по умолчанию для данной реализации
public abstract JspEngineInfo getEngineInfo()
вызывается для получения специфической для реализации информации о текущей JSP-машине.
Возвращает: объект JspEngineInfo
, описывающий текущую JSP-машину.
public abstract PageContext getPageContext(javax.servlet.Servlet servlet,
javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, java.lang.String errorPageURL,
boolean needsSession, int buffer, boolean autoflush)
Получает экземпляр зависящего от реализации абстрактного класса javax.servlet.jsp.Page-Context
для вызова Servlet и текущего отправления запроса/request и ответа/response.
Этот метод обычно вызывает раньше при обработке методом _jspService()
класса реализации JSP для того, чтобы получить объект PageContext
для обрабатываемого запроса.
Вызов этого метода должен давать в результате вызов метода PageContext.initialize()
.
Возвращённый PageContext
соответственно инициализирован.
Все объекты PageContext
, полученные этим методом, должны быть освобождены через вызов
releasePageContext()
.
Параметры:
- запрашивающий сервлет
servlet
config
- ServletConfig для запрашивающего Servlet'а
request
- текущий запрос, находящийся в сервлете.
response
- текущий ответ, находящийся в сервлете.
errorPageURL
- URL страницы ответа на ошибки для запрашивающей JSP, или null.
needsSession
- true
, если JSP участвует в сессии.
buffer
- размер буфера в байтах,
PageContext.NO_BUFFER
- если буфера нет,
PageContext.DEFAULT_BUFFER
- если по умолчанию в реализации.
autoflush
- должен ли буфер автоматически зачищаться (опять зачистка...) в потоке вывода
при переполнени буфера, или должно вызываться IOException
?
Возвращает: page context/контекст страницы.
См. Также:
PageContext
.
Вызывается для освобождения ранее размещённого объекта
public abstract void releasePageContext(PageContext pc)
PageContext
. Даёт в
результате вызов Page-Context.release()
. Этот метод должен вызываться до
возвращения из метода _jspService()
класса реализации JSP.
Параметры:
, полученный ранее методом
pc - PageContextgetPageContext()
public static synchronized void setDefaultFactory(JspFactory deflt)
Устанавливает факторию по умолчанию для данной реализации. Для любой principal (основной среды
работы?), кроме среды JSP Engine, недопустимо вызывать этот метод.
Параметры:
- реализация фактории по умолчанию.
default
JspEngineInfo
Синтаксис
public abstract class JspEngineInfo
Описание
это абстрактный класс, предоставляющий информацию о текущей
JSP-машине.
JspEngineInfo
public JspEngineInfo()
public abstract java.lang.String getSpecificationVersion()
Возвращает номер версии JSP-спецификации, поддерживаемой этой JSP-машиной.
Номера версии состоят из положительных целых чисел, разделённых точками ".", например, "2.0" или "1.2.3.4.5.6.7". Это позволяет использовать расширенную нумерацию для представления версий major, minor, micro и т.д.
Номер версии обязан начинаться с цифры.
Возвращает: версию спецификации, null
возвращается, если номер неизвестен.
Объекты PageContext
и
JspWriter
доступны по умолчанию в качестве неявных объектов.
PageContext
Синтаксис
public abstract class PageContext
Описание
Экземпляр PageContext
предоставляет доступ ко всем пространствам имён, ассоциированным с
JSP-страницей, предоставляет доступ к некоторым атрибутам страницы, а также слой поверх деталей реализации.
Неявные объекты добавляют pageContext
автоматически.
Класс PageContext
является абстрактным классом,
созданный как расширяемый для предоставления реализаций соответствующей средой запуска программ JSP-машины.
Экземпляр PageContext
получается классом реализации JSP через вызов метода
JspFactory.getPageContext()
и освобождается через вызов
JspFactory.releasePageContext()
.
Примеры использования PageContext
,
JspFactory
и других классов в объекте реализацииJSP-страницы можно найти повсюду.
облегчает работу автора страниц/компонентов и реализатора страниц, предоставляя:
PageContext
JspWriter
для вывода/outputpage
в среде скриптингаerrorpage
Некоторые методы предназначены для использования в коде, генерируемом контейнером, а не для кода, написанного авторами JSP-страниц или библиотек тэгов JSP.
Методы, поддерживающие lifecycle/жизненный цикл
- initialize()
и release()
Следующие методы делают возможным обслуживание вложенных JspWriter-потоков
через реализацию Tag Extensions/Расширений Тэгов: pushBody()
и popBody()
Некоторые методы предоставляют универсальный доступ к различным объектам,
представляющим области видимости/scopes. Реализация обязана использовать
основные механизмы Servlet, соответствующие данной области видимости/scope,
чтобы информация могла передаваться туда и обратно между Сервлетами и JSP-страницами.
Это методы:
setAttribute(),
getAttribute(),
find-Attribute(),
removeAttribute(),
getAttributesScope()
и
getAttributeNamesIn-Scope()
.
Следующие методы предоставляют удобный доступ к неявным/implicit объектам:
getOut(),
getException(),
getPage()
getRequest(),
getResponse(),
getSession(),
getServlet-Config()
и getServletContext()
.
Следующие методы предоставляют поддержку перенаправления/forwarding, включения в/inclusion и обработки ошибок:
forward(), include() handlePageException()
.
public static final java.lang.String APPLICATION
Имя используется в для хранения ServletContext
в таблице имён PageContext
.
public static final int APPLICATION_SCOPE
Область видимости приложения: именованные ссылки остаются доступными в ServletContext
,
пока он не будет затребован обратно.
public static final java.lang.String CONFIG
Имя используется для хранения ServletConfig
в таблице имён PageContext
.
public static final java.lang.String EXCEPTION
Имя используется для хранения неотловленного исключения в списке
атрибутов ServletRequest
и в таблице имён PageContext
.
public static final java.lang.String OUT
Имя используется для хранения текущего JspWriter
в таблице имён PageContext
.
public static final java.lang.String PAGE
Имя используется для хранения Сервлета в таблицах имён данного PageContext
.
public static final int PAGE_SCOPE
Область видимости: (по умолчанию) именованные ссылки остаются видимыми в данном
PageContext
до возврата из текущего вызова Servlet.service()
.
public static final java.lang.String PAGECONTEXT
Имя используется для хранения этого PageContext
в его собственной таблице имён.
public static final java.lang.String REQUEST
Имя используется для хранения ServletRequest
в таблице имён PageContext
.
public static final int REQUEST_SCOPE
Область видимости: именованные ссылки остаются доступными из Servlet-Request
,
ассоциированного с Сервлетом, до завершения текущего запроса.
public static final java.lang.String RESPONSE
Имя используется для хранения ServletResponse
в таблице имён PageContext
.
public static final java.lang.String SESSION
Имя используется для хранения HttpSession
в таблице имён PageContext
.
public static final int SESSION_SCOPE
Область видимости (верна, только если эта страница участвует в сессии):
именованные ссылки остаются доступными из HttpSession
(если он имеется),
ассоциированного с Сервлетом, пока HttpSession
не будет закрыта.
public PageContext()
public abstract java.lang.Object findAttribute(java.lang.String name)
Ищет именованные атрибуты на странице, в запросе/request, сессии/session (если
запущена) и области(-ях) видимости приложения, чтобы возвратить ассоциированные значения или null
.
Возвращает: ассоциированное значение или null.
public abstract void forward(java.lang.String relativeUrlPath)
ServletRequest
и ServletResponse другому активному компоненту приложения.
Если relativeUrlPath начинается с "/", тогда специфицированный URL вычисляется относительно DOCROOT
ServletContext'а
для данной JSP.
Если путь не начинается с "/", тогда специфицированный URL вычисляется относительно URL
запроса, который был отображён в вызывающую JSP.
Верен только для вызова этого метода из выполнения Thread/Потока в методе _jsp-Service(...)
JSP.
Если этот метод был успешно вызван, вызывающему
Thread не разрешается модификация объекта
ServletResponse
. Любая попытка сделать это даёт непредсказуемый результат.
Обычно вызывающий объект сразу же возвращается из _jspService(...)
после вызова этого метода.
Параметры:
- специфицирует относительный путь URL к целевому ресурсу, как рассмотрено выше.
relativeUrlPath
Вызывает:
ServletException, IOException
IllegalArgumentException
- если URL целевого ресурса не может быть разрешён/высчитан.
IllegalStateException
- если
ServletResponse
не в том состоянии, чтобы выполнить forward/направление.
SecurityException
- если вызывающий не может получить доступ к целевому ресурсу.
public abstract java.lang.Object getAttribute(java.lang.String name)
Возвращает объект, ассоциированный с именем в области видимости страницы, или null
, если объект не найден.
Параметры:
- имя атрибута для получения.
name
Вызывает:
- если имя - null.
NullPointerException
IllegalArgumentException
- если область видимости неверна.
public abstract java.lang.Object getAttribute(java.lang.String name, int scope)
Возвращает объект, ассоциированный с именем в специфицированной области видимости, или null, если объект не найден.
Параметры:
- имя атрибута для установки.
name
- область видимости, с которой ассоциировать имя/объект.
scope
Вызывает:
- если имя -
NullPointerExceptionnull.
IllegalArgumentException
- если область видимости неверна.
public abstract java.util.Enumeration getAttributeNamesInScope(int scope)
Перечисляет все атрибуты в данной области видимости.
Возвращает: перечисление имён (java.lang.String)
всех атрибутов специфицированной области видимости.
public abstract int getAttributesScope(java.lang.String name)
Получает область видимости, в которой определён данный атрибут.
Возвращает: область видимости объекта, ассоциированного со специфицированным именем, или 0.
public abstract java.lang.Exception getException()
Текущее значение объекта exception
(Exception).
Возвращает: любое исключение, переданное ему как errorpage
.
public abstract JspWriter getOut()
Текущее значение объекта вывода/out (JspWriter)
.
Возвращает: поток текущего JspWriter
, используемый для ответа клиенту.
public abstract java.lang.Object getPage()
Значение объекта страницы/page
(Servlet).
Возвращает: экземпляр класса реализации (Servlet), ассоциированный с этим PageContext
.
public abstract javax.servlet.ServletRequest getRequest
()
Текущее значение объекта request (ServletRequest)
.
Возвращает: ServletRequest
для данного PageContext
.
public abstract javax.servlet.ServletResponse getResponse()
Текущее значение объекта response (ServletResponse)
.
Возвращает: ServletResponse
для данного PageContext
.
public abstract javax.servlet.ServletConfig getServletConfig()
Экземпляр ServletConfig
.
Возвращает: ServletConfig
для данного
PageContext
.
public abstract javax.servlet.ServletContext getServletContext()
Экземпляр ServletContext
.
Возвращает: ServletContext
для данного PageContext
.
public abstract javax.servlet.http.HttpSession getSession()
Текущее значение объекта session (HttpSession)
.
Возвращает: HttpSession
для данного
PageContext
или null
.
public abstract void handlePageException(java.lang.Exception e)
Этот метод предназначен для обработки необработанных исключений уровня "page"
путём перенаправления исключения специализированной для данной
JSP странице ошибок/error page, или, если ничего не
специфицировано, для выполнения акции, определяемой реализацией.
Класс реализации JSP обычно будет очищать локальный статус до вызова этого
метода и будет возвращать сразу после этого. Не разрешается генерировать
какой-либо вывод клиенту или модифицировать любой статус ServletResponse
после
этого вызова.
Этот метод сохранён для обеспечения обратной совместимости. Вновь генерируемый
код должен использовать
PageContext.handlePageException(Throwable)
.
Параметры:
- обрабатываемое исключение.
e
Вызывает:
ServletException, IOException
NullPointerException - если исключение - null
.
SecurityException
- если вызывающий не может достичь целевого ресурса.
См. Также: public abstract void handlePageException(java.lang.Throwable t)
public abstract void handlePageException(java.lang.Throwable t)
Этот метод идентичен
handlePageException(Exception)
, за исключением того, что он принимает Throwable
.
Это предпочтительный метод, так как он даёт возможность правильной реализации
семантики errorpage
.
Этот метод предназначен для обработки необработанных исключений уровня "page"
путём перенаправления исключения специализированной для данной
JSP странице ошибок/error page, или, если ничего не
специфицировано, для выполнения акции, определяемой реализацией.
Класс реализации JSP обычно будет очищать локальный статус до вызова этого
метода и будет возвращать сразу после этого. Не разрешается генерировать
какой-либо вывод клиенту или модифицировать любой статус ServletResponse
после этого вызова.
Параметры:
- обрабатываемый
tthrowable
.
Вызывает:
ServletException, IOException
NullPointerException - если исключение - null
.
SecurityException
- если вызывающий не может достичь целевого ресурса.
См. Также: public abstract void handlePageException(java.lang.Exception e)
public abstract void include(java.lang.String relativeUrlPath)
Вызывает обработку ресурса, специфицированного для обработки как
часть текущих Servlet-Request
и ServletResponse
, в вызывающем Thread
. Вывод
обработки целевых ресурсов запроса записывается непосредственно в поток вывода ServletResponse
.
Текущий JspWriter "out"
для данной JSP очищается - как побочный эффект этого
вызова - до обработки include
.
Если relativeUrlPath начинается с "/", тогда специфицированный URL вычисляется относительно DOCROOT
ServletContext'а
для данной JSP.
Если путь не начинается с "/", тогда специфицированный URL вычисляется относительно URL
запроса, который был отображён в вызывающую JSP. Верным является только вызов
этого метода из выполнения Thread
в методе _jsp-Service(...)
JSP.
Параметры:
- специфицирует относительный путь-URL
к включаемому целевому ресурсу.
relativeUrlPath
Вызывает:
ServletException, IOException
IllegalArgumentException - если URL целевого ресурса не может быть разрешён.
SecurityException
- если вызывающий не может достичь целевого ресурса.
public abstract void initialize(javax.servlet.Servlet servlet,
javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, java.lang.String errorPageURL,
boolean needsSession, int bufferSize, boolean autoFlush)
Метод initialize
вызывается для инициализации неинициализированного PageContext
,
чтобы он мог быть использован классом реализации JSP
для обслуживания входящих запросов и для ответов в его методе _jspService()
.
Этот метод обычно вызывается из JspFactory.getPageContext()
для инициализации статуса.
Этот метод необходим для создания начального JspWriter
и ассоциирования имени "out"
в области видимости страницы с этим вновь созданным объектом.
Этот метод не должен использоваться авторами страниц или библиотек тэгов.
Параметры:
- Servlet, ассоциированный с данным
servletPageContext
.
request
- текущий рассматриваемый запрос для данного Servlet
.
response
- текущий рассматриваемый ответ для данного Servlet
.
errorPageURL
- значение атрибута errorpage в директиве page, или null
.
needsSession
- значение атрибута session директивы page.
bufferSize
- значение атрибута buffer
директивы page
.
autoFlush
- значение атрибута autoflush
директивы page.
Вызывает:
- во время создания
IOExceptionJspWriter
.
IllegalStateException
- если некорректно инициализирован.
IllegalArgumentException
public JspWriter popBody()
Возвращает предыдущий JspWriter "out"
, сохранённый совпадающим pushBody()
,
и обновляет значение атрибута "out"
в пространстве имён атрибута страницы scope в PageConxtext
.
Возвращает: сохранённый JspWriter
.
public BodyContent pushBody()
Возвращает новый объект BodyContent
,
сохраняет текущий "out" JspWriter
и обновляет значение атрибута "out"
в пространстве имён атрибута страницы scope
в PageContext
.
Возвращает: новый BodyContent
.
public abstract void release()
Этот метод должен "reset/восстанавливать" внутренний статус PageContext
,
освобождая все внутренние ссылки и подготавливая PageCont
для возможного
использования последующим вызовом initialize()
.
Этот метод обычно вызывается из Jsp-Factory.releasePageContext()
.
Подклассы будут окружать/envelop этот метод.
Этот метод не должен использоваться авторами страниц или библиотек тэгов.
public abstract void removeAttribute(java.lang.String name)
Удаляет ссылку на объект, ассоциированную с данным именем, просматривает во всех scope в порядке scope.
Параметры:
- имя удаляемого объекта.
name
public abstract void removeAttribute(java.lang.String name, int scope)
Удаляет ссылку на объект, ассоциированную с данным именем, в данной области видимости.
Параметры:
- имя удаляемого объекта.
name
scope
- область видимости, где идёт просмотр.
public abstract void setAttribute(java.lang.String name, java.lang.Object attribute)
Регистрирует имя и объект, специфицированные с семантикой области видимости страницы.
Параметры:
- имя устанавливаемого атрибута.
name
attribute
- объект для ассоциирования с этим именем.
Вызывает:
- если
NullPointerExceptionname
или object
- null
.
public abstract void setAttribute(java.lang.String name, java.lang.Object o,
int scope)
Регистрирует имя и объект, специфицированные с семантикой соответствующей области видимости.
Параметры:
- имя устанавливаемого атрибута.
name
o
- объект для ассоциирования с этим именем.
scope
- область видимости, с которой ассоциируется name/object
.
Вызывает:
- если
NullPointerExceptionname
или object
- null
.
IllegalArgumentException
- если область видимости неверна.
JspWriter
Синтаксис
public abstract class JspWriter extends java.io.Writer
Прямые/Direct Известные Подклассы: BodyContent
Описание
Акции и шаблонные данные
JSP-страницы записываются с использованием объекта JspWriter
, на который
ссылаются через неявную переменную out
, которая инициализируется автоматически
при использовании методов в объекте PageContext
.
Этот абстрактный класс эмулирует некоторую функциональность классов java.io.BufferedWriter
и
java.io.PrintWriter
, однако он отличается тем, что вызывает java.io.IOException
из методов print
, в то время как PrintWriter
этого не делает.
Буферизация
Начальный объект JspWriter
ассоциируется с объектом PrintWriter
в
ServletResponse
способом, зависящим от того, буферизуется страница, или нет.
Если страница не буферизуется, вывод, записываемый в этот объект JspWriter
,
будет записан непосредственно через PrintWriter
, который будет создан, если
необходимо, путём вызова метода getWriter()
в объекте response
.
Но если страница буферизуется, объект
PrintWriter
не будет создан, пока буфер не будет очищен, и операции типа setContentType()
также будут разрешены. Поскольку такая гибкость частично облегчает программирование, буферизация JSP-страниц
выполняется по умолчанию.
Буферизация поднимает вопрос: что делать, если буфер исчерпан/переполнен?
Можно использовать два подхода:
Оба подхода являются допустимыми, и, таким образом, оба поддерживаются JSP-технологией.
Поведение страницы управляется атрибутом autoFlush
, который по умолчанию -true
.
В общем, JSP-страницы, которым необходимо удостовериться в корректности и
полноте высылаемых клиентам данных, могут установить атрибут autoFlush
в false
,
что типично для случая, когда клиентом является само приложение. С другой
стороны, JSP-страницы, высылающие данные, что имеет место даже если они
сконструированы только частично, могут "захотеть" установить
autoFlush
в true
; как если бы данные высылались для немедленного просмотра в
браузере. Каждое приложение должно учитывать свои специфические потребности.
Альтернативой могло бы быть создание буфера нелимитированного размера; но это
имело бы тот недостаток, что процесс вычислений захватит неограниченное количество ресурсов системы.
Неявная переменная "out"
класса реализации JSP имеет этот тип. Если директива
page выбирает autoflush="true"
, то все операции ввода/вывода (I/O) этого класса
будут автоматически очищать содержимое буфера, если условие overflow/переполнения
будет достигнуто при выполнении текущей операции без очистки.
Если autoflush="false"
,
все операции ввода/вывода (I/O) этого класса будут должны вызывать IOException
,
если выполнение текущей операции будет давать выполнение условия переполнения буфера.
См. Также: java.io.Writer, java.io.BufferedWriter, java.io.PrintWriter
protected boolean autoFlush
protected int bufferSize
public static final int DEFAULT_BUFFER
константа, обозначающая, что Writer
буферизуется и использует размер
буфера по умолчанию для данной реализации.
public static final int NO_BUFFER
константа, обозначающая, что Writer
не буферизует вывод.
public static final int UNBOUNDED_BUFFER
константа, обозначающая, что Writer
буферизуется и не лимитирован; это
используется в BodyContent
.
protected JspWriter(int bufferSize, boolean autoFlush)
protected-конструктор.
public abstract void clear()
Очищает содержимое буфера.
Если буфер уже был очищен, тогда операция clear
должна вызывать IOException
,
сигнализируя, что некоторые данные уже безвозвратно записаны в поток вывода клиенту.
Вызывает: IOException
- если возникает ошибка I/O.
public abstract void clearBuffer()
Очищает текущее содержимое буфера. В отличие от clear()
, этот метод не
вызывает IOExceptio
, если буфер уже был очищен. Он лишь очищает текущее
содержимое буфера и возвращает управление.
Вызывает: IOException
- если возникает ошибка I/O.
public abstract void close()
Закрывает поток, предварительно очищая его. Этот метод не должен
вызываться явно для начального JspWriter
, так как код, генерируемый JSP-контейнером,
будет автоматически включать вызов close()
.
Закрытие ранее уже закрытого потока, в отличие от flush()
, не имеет эффекта.
Переопределяет: java.io.Writer.close()
в классе java.io.Writer
.
Вызывает: IOException
- если возникает ошибка I/O.
public abstract void flush()
Очищает поток. Если поток сохранил какие-либо символы из различных
методов write()
в буфере, записывает их непосредственно по назначению.
Затем, если назначением является другой поток символов или байтов, очищает их.
Таким образом, один вызов flush
очистит все буферы в цепи из Writers
и
OutputStreams
.
Этот метод может быть вызван неявно, если ёмкость буфера исчерпана. Если поток был уже закрыт,
дальнейшие вызовы write(
или flush()
вызовут IOException
.
Переопределяет: java.io.Writer.flush() в классе java.io.Writer
.
Вызывает: IOException
- если возникает ошибка I/O.
public int getBufferSize()
Этот метод возвращает размер буфера, используемого JspWriter
.
Возвращает: размер буфера в байтах, или 0 - если не буферизован.
public abstract int getRemaining()
Этот метод возвращает количество неиспользованных байтов буфера.
Возвращает: количество неиспользованных байтов в буфере.
public boolean isAutoFlush()
Этот метод сообщает, является ли JspWriter autoFlushing
(очищается ли автоматически).
Возвращает:
очищается ли данный JspWriter
автоматически, или вызывает IOExceptions
при
достижении переполнения буфера.
public abstract void newLine()
Записывает символы новой строки. Строка - разделитель строк - определяется системным свойством
line.separator
, и это не обязательно просто символ новой строки ('\n')
.
Вызывает:
- если возникает ошибка ввода/вывода.
IOException
public abstract void print(boolean b)
Печатает булево значение. Строка произведённая
java.lang.String.valueOf(boolean)
, транслируется в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются
точно в манере метода java.io.Writer.write(int)
.
Параметры:
- печатаемый булев параметр.
b
Вызывает: java.io.IOException
public abstract void print(char c)
Печатает символ. Этот символ транслируется в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются
точно в манере метода java.io.Writer.write(int)
.
Параметры:
- печатаемый char.
c
Вызывает: java.io.IOException
public abstract void print(char[] s)
Печатает массив символов. Символы конвертируются в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются
точно в манере метода java.io.Writer.write(int)
.
Параметры:
- массив печатаемых chars.
s
Вызывает:
-если
NullPointerExceptions
- null
.
java.io.IOException
public abstract void print(double d)
Печатает число с плавающей точкой двойной точности. Строка, производимая
java.lang.String.valueOf(double)
, транслируется в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int)
.
Параметры:
- печатаемое double.
d
Вызывает: java.io.IOException
См. Также: java.lang.Double
public abstract void print(float f)
Печатает число с плавающей точкой. Строка, производимая
java.lang.String.valueOf(float)
, транслируется в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются
точно в манере метода java.io.Writer.write(int)
.
Параметры:
- печатаемое float.
f
Вызывает: java.io.IOException
См. Также: java.lang.Float
public abstract void print(int i)
Печатает целое число. Строка, производимая
java.lang.String.valueOf(int)
, транслируется в байты в соответствии с кодировкой
символов по умолчанию данной платформы, и эти байты записываются точно в манере
метода java.io.Writer.write(int)
.
Параметры:
- печатаемое int.
i
Вызывает: java.io.IOException
См. Также: java.lang.Integer
public abstract void print(long l)
Печатает длинное целое. Строка, производимая
java.lang.String.valueOf(long)
, транслируется в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются
точно в манере метода java.io.Writer.write(int)
.
Параметры:
- печатаемое long.
l
Вызывает: java.io.IOException
См. Также:
java.lang.Long
public abstract void print(java.lang.Object obj)
Печатает объект. Строка, производимая методом
java.lang.String.valueOf(Object)
, транслируется в байты в соответствии с
кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int)
.
Параметры:
- печатаемый
objObject
.
Вызывает: java.io.IOException
См. Также: java.lang.Object.toString()
public abstract void print(java.lang.String s)
Печатает строку. Если аргумент - null
, тогда печатается строка
"null". Иначе символы строки конвертируются в байты в соответствии с кодировкой
символов по умолчанию данной платформы, и эти байты записываются точно в манере
метода java.io.Writer.write(int)
.
Параметры:
- печатаемая
sString
.
Вызывает: java.io.IOException
public abstract void println()
Обрывает текущую строку, печатая строку разделителя строк. Строка
разделителя строк определяется системным свойством
line.separator
, и это не обязательно одиночный символ новой строки ('\n')
.
Вызывает: java.io.IOException
public abstract void println(boolean x)
Печатает булево значение и затем заканчивает строку. Это метод ведёт себя
так, будто он вызывает public abstract
void print(boolean b)
, а затем -
public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(char x)
Печатает символ и затем заканчивает строку. Это метод ведёт себя так, будто он вызывает
public abstract void print(char c)
, а затем - public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(char[] x)
Печатает массив символов и затем заканчивает строку. Это метод ведёт себя так, будто он вызывает
print(char[])
и затем println()
.
Вызывает: java.io.IOException
public abstract void println(double x)
Печатает число двойной точности с плавающей точкой и заканчивает строку.
Это метод ведёт себя так, будто он вызывает public abstract void print(double d)
и затем public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(float x)
Печатает число с плавающей точкой и заканчивает строку. Это метод ведёт себя так, будто он вызывает
public abstract void print(float f)
и затем public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(int x)
Печатает целое число и заканчивает строку. Это метод ведёт себя так, будто он вызывает
public abstract void print(int i
) и затем public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(long x)
Печатает длинное целое и заканчивает строку. Это метод ведёт себя так, будто он вызывает
public abstract void print(long l)
и затем public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(java.lang.Object x)
Печатает Object
и заканчивает строку. Это метод ведёт себя так, будто он вызывает
public abstract void print(java.lang.Object obj)
и затем public abstract void println()
.
Вызывает: java.io.IOException
public abstract void println(java.lang.String x)
Печатает String
и заканчивает строку. Это метод ведёт себя так, будто он вызывает
public abstract void print(java.lang.String s)
и затем public abstract void println()
.
Вызывает: java.io.IOException
Экземпляр зависящего от реализации подкласса этого абстрактного базового класса
может быть создан классом реализации JSP в начале её метода _jspService()
через JspFactory
по умолчанию для данной реализации.
Вот пример использования этих классов:
public class foo implements Servlet {
// ...
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
JspFactory factory = JspFactory.getDefaultFactory();
PageContext pageContext = factory.getPageContext(
this,
request,
response,
null, // errorPageURL
false, // needsSession
JspWriter.DEFAULT_BUFFER,
true // autoFlush
);
// инициализируются неявные переменные среды скриптинга ...
HttpSession session = pageContext.getSession();
JspWriter out = pageContext.getOut();
Object page = this;
try {
// здесь тело транслированной JSP ...
} catch (Exception e) {
out.clear();
pageContext.handlePageException(e);
} finally {
out.close();
factory.releasePageContext(pageContext);
}
}
Класс
JspException
является базовым классом для всех JSP-исключений.
JspTag-Exception
используется механизмом исключения тэга.
JspException
Синтаксис
public class JspException extends java.lang.Exception
Прямые/Direct Известные Подклассы: JspTagException
Все Реализованные Интерфейсы: java.io.Serializable
Описание
Родовое исключение, известное JSP-машине; неотловленное JspExceptions
даст вызов механизма errorpage
.
public JspException()
Конструирует JspException
.
public JspException(java.lang.String msg)
Конструирует новое JSP-исключение со специфицированным сообщением.
Сообщение может быть записано в server log-файл и/или выводится пользователю.
Параметры:
-
msgString
, специфицирующая текст сообщения об исключении.
public JspException(java.lang.String message, java.lang.Throwable rootCause)
Конструирует новое JSP-исключение, если JSP нужно вызвать исключение и
вставить сообщение о "причине" исключения, помешавшего нормальному ходу операции, включая описательное сообщение.
Параметры:
-
messageString
, содержащая текст сообщения об исключении.
rootCause
- исключение
Throwable
, нарушившее нормальную работу сервлета; делает это исключение сервлета необходимым.
public JspException(java.lang.Throwable rootCause)
Конструирует новое JSP-исключение, если JSP нужно вызвать исключение и
вставить сообщение о "причине" исключения, помешавшего нормальному ходу операции.
Сообщение об исключении базируется на локализованном сообщении об вызвавшем его исключении.
Этот метод вызывает метод getLocalizedMessage
в исключении
Throwable
для получения локализованного сообщения об исключении. При создании
подкласса для JspException
, этот метод может быть переопределён для создания сообщения об исключении,
разработанного для определённой страны (языка и т.п.).
Параметры:
- исключение
rootCauseThrowable
, нарушившее нормальную работу
JSP-операции, ; делает это JSP-исключение необходимым.
public java.lang.Throwable getRootCause()
Возвращает исключение, вызвавшее это JSP-исключение.
Возвращает: Throwable
, вызывавшее это JSP-исключение.
JspTagException
Синтаксис
public class JspTagException extends JspException
Все Реализованные Интерфейсы:
java.io.Serializable
Описание
Исключение используется Tag Handler/Обработчиком Тэга для обозначения неисправимой ошибки. Эта ошибка
отлавливается на верхнем уровне JSP-страницы и выдаёт страницу для ошибок/errorpage.
public JspTagException()
Нет сообщения.
public JspTagException(java.lang.String msg)
Конструктор с сообщением...