Javax.servlet.jsp Класс JspWriter
java.lang.Object | +--java.io.Writer | +--javax.servlet.jsp.JspWriter
Прямые Известные Подклассы:
public abstract class JspWriterextends java.io.Writer
Акции и шаблонные данные на JSP-странице записываются с использованием JspWriter-объекта, на который ссылаются через неявную переменную out, инициализируемую автоматически, через использование методов в PageContext-объекте.
Этот абстрактный класс эмулирует некоторую функциональность классов java.io.BufferedWriter и java.io.PrintWriter, однако отличие в том, что он взывает java.io.IOException из методов print, в то время как PrintWriter этого не делает.
Буферизация
Начальный/initial 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, если при выполнении текущей операции приводит к условию overflow/переполнения буфера.
См. также:Writer, java.io.BufferedWriter, PrintWriter
Поле. Резюме. | |
protected boolean | |
protected int | |
static int | константа, указывающая, что Writer буферизуется и использует размер буфера по умолчанию для данной реализации. |
static int | константа, указывающая, что Writer не буферизует вывод. |
static int | константа, указывающая, что Writer буферизуется и размер буфера не ограничен; это используется в BodyContent. |
Поля, унаследованные от класса java.io.Writer |
lock |
Конструктор. Резюме. | |
protected | (int bufferSize, boolean autoFlush) protected-конструктор. |
Метод. Резюме. | |
abstract void | () Очищает содержимое буфера. |
abstract void | () Очищает текущее содержимое буфера. |
abstract void | () Закрывает поток, предварительно очистив его. Этот метод не должен вызываться явно для начального/initial JspWriter'а, так как код, генерируемый JSP-контейнером, будет автоматически включать вызов close(). |
abstract void | () Очищает поток. |
int | () Этот метод возвращает размер буфера, используемого JspWriter'ом. |
abstract int | () Этот метод возвращает количество неиспользуемых байтов буфера. |
boolean | () Этот метод указывает, очищается ли JspWriter автоматически. |
abstract void | () Записывает символы новой строки. |
abstract void | (boolean b) Печатает булево значение. |
abstract void | (char c) Печатает символ. |
abstract void | (char[] s) Печатает массив символов. |
abstract void | (double d) Печатает число с плавающей точкой двойной точности. |
abstract void | (float f) Печатает число с плавающей точкой. |
abstract void | (int i) Печатает целое число. |
abstract void | (long l) Печатает длинное целое число. |
abstract void | (java.lang.Object obj) Печатает объект. |
abstract void | (java.lang.String s) Печатает строку. |
abstract void | () Заканчивает текущую строку печатью символов новой строки. |
abstract void | (boolean x) Печатает булево значение и затем оканчивает строку. |
abstract void | (char x) Печатает символ и затем оканчивает строку. |
abstract void | (char[] x) Печатает массив символов и затем оканчивает строку. |
abstract void | (double x) Печатает число с плавающей точкой двойной точности и затем оканчивает строку. |
abstract void | (float x) Печатает число с плавающей точкой и затем оканчивает строку. |
abstract void | (int x) Печатает целое число и затем оканчивает строку. |
abstract void | (long x) Печатает длинное целое число и затем оканчивает строку. |
abstract void | (java.lang.Object x) Печатает Object и затем оканчивает строку. |
abstract void | (java.lang.String x) Печатает String и затем оканчивает строку. |
Методы, унаследованные от класса java.io.Writer |
write, write, write, write, write |
Методы, унаследованные от класса java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Поле. Детали. |