JSP.9.2.2 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
JSP.9.2.2.10 Поля
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.
JSP.9.2.2.11 Конструкторы
protected JspWriter(int bufferSize, boolean autoFlush)
protected-конструктор.
JSP.9.2.2.12 Методы
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).
Параметры:
c - печатаемый char.
Вызывает: java.io.IOException
public abstract void print(char[] s)
Печатает массив символов. Символы конвертируются в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
s - массив печатаемых chars.
Вызывает:
NullPointerException -если s - null.
java.io.IOException
public abstract void print(double d)
Печатает число с плавающей точкой двойной точности. Строка, производимая java.lang.String.valueOf(double), транслируется в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
d- печатаемое double.
Вызывает: java.io.IOException
См. Также: java.lang.Double
public abstract void print(float f)
Печатает число с плавающей точкой. Строка, производимая java.lang.String.valueOf(float), транслируется в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
f - печатаемое float.
Вызывает: java.io.IOException
См. Также: java.lang.Float
public abstract void print(int i)
Печатает целое число. Строка, производимая java.lang.String.valueOf(int), транслируется в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
i - печатаемое int.
Вызывает: java.io.IOException
См. Также: java.lang.Integer
public abstract void print(long l)
Печатает длинное целое. Строка, производимая java.lang.String.valueOf(long), транслируется в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
l - печатаемое long.
Вызывает: java.io.IOException
См. Также: java.lang.Long
public abstract void print(java.lang.Object obj)
Печатает объект. Строка, производимая методом java.lang.String.valueOf(Object), транслируется в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
obj - печатаемый Object.
Вызывает: java.io.IOException
См. Также: java.lang.Object.toString()
public abstract void print(java.lang.String s)
Печатает строку. Если аргумент - null, тогда печатается строка “null”. Иначе символы строки конвертируются в байты в соответствии с кодировкой символов по умолчанию данной платформы, и эти байты записываются точно в манере метода java.io.Writer.write(int).
Параметры:
s - печатаемая String.
Вызывает: 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