javax.servlet.jsp
Класс JspWriter

java.lang.Object | +--java.io.Writer | +--javax.servlet.jsp.JspWriter
Прямые Известные Подклассы:
BodyContent

public abstract class JspWriter
extends 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 autoFlush
           
protected  int bufferSize
           
static int DEFAULT_BUFFER
          константа, указывающая, что Writer буферизуется и использует размер буфера по умолчанию для данной реализации.
static int NO_BUFFER
          константа, указывающая, что Writer не буферизует вывод.
static int UNBOUNDED_BUFFER
          константа, указывающая, что Writer буферизуется и размер буфера не ограничен; это используется в BodyContent.
 
Поля, унаследованные от класса java.io.Writer
lock
 
Конструктор. Резюме.
protected JspWriter (int bufferSize, boolean autoFlush)
          protected-конструктор.
 
Метод. Резюме.
abstract  void clear ()
          Очищает содержимое буфера.
abstract  void clearBuffer ()
          Очищает текущее содержимое буфера.
abstract  void close ()
          Закрывает поток, предварительно очистив его. Этот метод не должен вызываться явно для начального/initial JspWriter'а, так как код, генерируемый JSP-контейнером, будет автоматически включать вызов close().
abstract  void flush ()
          Очищает поток.
 int getBufferSize ()
          Этот метод возвращает размер буфера, используемого JspWriter'ом.
abstract  int getRemaining ()
          Этот метод возвращает количество неиспользуемых байтов буфера.
 boolean isAutoFlush ()
          Этот метод указывает, очищается ли JspWriter автоматически.
abstract  void newLine ()
          Записывает символы новой строки.
abstract  void print (boolean b)
          Печатает булево значение.
abstract  void print (char c)
          Печатает символ.
abstract  void print (char[] s)
          Печатает массив символов.
abstract  void print (double d)
          Печатает число с плавающей точкой двойной точности.
abstract  void print (float f)
          Печатает число с плавающей точкой.
abstract  void print (int i)
          Печатает целое число.
abstract  void print (long l)
          Печатает длинное целое число.
abstract  void print (java.lang.Object obj)
          Печатает объект.
abstract  void print (java.lang.String s)
          Печатает строку.
abstract  void println ()
          Заканчивает текущую строку печатью символов новой строки.
abstract  void println (boolean x)
          Печатает булево значение и затем оканчивает строку.
abstract  void println (char x)
          Печатает символ и затем оканчивает строку.
abstract  void println (char[] x)
          Печатает массив символов и затем оканчивает строку.
abstract  void println (double x)
          Печатает число с плавающей точкой двойной точности и затем оканчивает строку.
abstract  void println (float x)
          Печатает число с плавающей точкой и затем оканчивает строку.
abstract  void println (int x)
          Печатает целое число и затем оканчивает строку.
abstract  void println (long x)
          Печатает длинное целое число и затем оканчивает строку.
abstract  void println (java.lang.Object x)
          Печатает Object и затем оканчивает строку.
abstract  void println (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
 

Поле. Детали.

NO_BUFFER

public static final int NO_BUFFER
константа, указывающая, что Writer не буферизует вывод.

DEFAULT_BUFFER

public static final int DEFAULT_BUFFER
константа, указывающая, что Writer буферизуется и использует размер буфера по умолчанию для данной реализации.

UNBOUNDED_BUFFER

public static final int UNBOUNDED_BUFFER
константа, указывающая, что Writer буферизуется и размер буфера не ограничен; испоьзуется в  BodyContent.

bufferSize

protected int bufferSize

autoFlush

protected boolean autoFlush
Конструктор. Детали.

JspWriter

protected JspWriter(int bufferSize, boolean autoFlush)
protected-конструктор.
Метод. Детали.

newLine

public abstract void newLine() throws java.io.IOException
Записывает разделитель строк. Строковое значение разделителей строк определяется системным свойством line.separator, и это не обязательно может быть один символ новой строки ('\n').
Вызывает:
java.io.IOException - если возникает ошибка I/O (ввода-вывода).

print

public abstract void print(boolean b) throws java.io.IOException
Печатает булево значение. Строка, производимая методом String.valueOf(boolean), транслируется в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
b - печатаемое boolean.
Вызывает:
java.io.IOException

print

public abstract void print(char c) throws java.io.IOException
Печатает символ. Символ транслируется в один или более байтов в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
c - печатаемый char.
Вызывает:
java.io.IOException

print

public abstract void print(int i) throws java.io.IOException
Печатает целое число. Строка, производимая методом String.valueOf(int), транслируется в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
i - печатаемое int.
Вызывает:
java.io.IOException
См. также:
java.lang.Integer#toString(int)

print

public abstract void print(long l) throws java.io.IOException
Печатает длинное целое. Строка, производимая методом by String.valueOf(long), транслируется в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
l - печатаемое long.
Вызывает:
java.io.IOException -  
См. также:
java.lang.Long#toString(long)

print

public abstract void print(float f) throws java.io.IOException
Печатает число с плавающей точкой. Строка, производимая методом String.valueOf(float) , транслируется в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
f - печатаемое float.
Вызывает:
java.io.IOException
См. также:
java.lang.Float#toString(float)

print

public abstract void print(double d) throws java.io.IOException
Печатает число с плавающей точкой двойной точности. Строка, производимая методом  String.valueOf(double) , транслируется в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
d - печатаемое double.
Вызывает:
java.io.IOException
См. также:
java.lang.Double#toString(double)

print

public abstract void print(char[] s) throws java.io.IOException
Печатает массив символов. Символы конвертируются в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
параметры:
s - массив печатаемых chars.
Вызывает:
NullPointerException - если s равно null
java.io.IOException

print

public abstract void print(java.lang.String s) throws java.io.IOException
Печатает строку. Если аргумент - null, тогда печатается строка "null". Иначе, символы строки  конвертируются в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int).
Параметры:
s - печатаемая String.
Вызывает:
java.io.IOException

print

public abstract void print(java.lang.Object obj) throws java.io.IOException
Печатает объект. Строка, производимая методом String.valueOf(Object), транслируется в байты в соответствии с кодировкой символов по умолчанию на данной платформе, и эти байты записываются точно в манере метода Writer.write(int.
Параметры:
obj - печатаемый Object.
Вызывает:
java.io.IOException
См. также:
Object.toString()

println

public abstract void println() throws java.io.IOException
Заканчивает текущую строку, печатая строку разделителей строк. Строка разделителей строк определяется системным свойством line.separator, и это не обязательно один символ новой строки ('\n').
Вызывает:
java.io.IOException

println

public abstract void println(boolean x) throws java.io.IOException
Печатает булево значение и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(boolean) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(char x) throws java.io.IOException
Печатает символ и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(char) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(int x) throws java.io.IOException
Печатает целое число и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(int) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(long x) throws java.io.IOException
Печатает длинное целое число и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(long) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(float x) throws java.io.IOException
Печатает число с плавающей точкой и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(float) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(double x) throws java.io.IOException
Печатает число с плавающей точкой двойной точности и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(double) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(char[] x) throws java.io.IOException
Печатает массив символов и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print( char[]) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(java.lang.String x) throws java.io.IOException
Печатает String и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(String) , а затем - println() .
Вызывает:
java.io.IOException

println

public abstract void println(java.lang.Object x) throws java.io.IOException
Печатает Object и заканчивает строку. Этот метод ведёт себя так, будто он вызывает print(Object) , а затем - println() .
Вызывает:
java.io.IOException

clear

public abstract void clear() throws java.io.IOException
Очищает содержимое буфера. Если буфер уже был очищен, тогда операция clear должна вызывать IOException для обозначения указания на то, что некоторые данные безвозвратно записаны в поток вывода клиенту.
Вызывает:
java.io.IOException - если возникает ошибка I/O.

clearBuffer

public abstract void clearBuffer() throws java.io.IOException
Очищает текущее содержимое буфера. В отличие от clear(), этот метод не вызывает исключение IOException, если буфер уже очищен. Он лишь очищает текущее содержимое буфера и возвращает управление.
Вызывает:
java.io.IOException - если возникает ошибка I/O.

flush

public abstract void flush() throws java.io.IOException
Очищает (промывает/Flush) поток. Если поток сохранил в буфере любые символы из разных методов write(), немедленно записывает их по назначению. Затем, если назначением является другой символ или поток байтов, очищает поток. Таким образом, один вызов flush() будет очищать все буферы в цепи Writer'ов и OutputStream'ов.

Этот метод может быть вызван неявно, если размер буфера превышен.

После того как поток был закрыт, последующие вызовы методов write() или flush() приводят к вызову исключения IOException.

Вызывает:
java.io.IOException - если возникает ошибка I/O.
Переопределяет:
flush в классе java.io.Writer

close

public abstract void close() throws java.io.IOException
Закрывает поток, предварительно очистив его.

Этот метод не должен вызываться явно для начального/initial JspWriter'а, так как код, генерируемый JSP-контейнером, будет автоматически включать вызов close().

Закрытие уже закрытого потока, в отличие от flush(), не даст никакого эффекта.

Вызывает:
java.io.IOException - если возникает ошибка I/O.
Переопределяет:
close в классе java.io.Writer

getBufferSize

public int getBufferSize()
Этот метод возвращает размер буфера, используемого JspWriter'ом.
Возвращает:
размер буфера в байтах или 0, если буферизации нет.

getRemaining

public abstract int getRemaining()
Этот метод возвращает количество неиспользуемых байтов в буфере.
Возвращает:
количество неиспользуемых байтов в буфере.

isAutoFlush

public boolean isAutoFlush()
Этот метод указывает, очищается ли JspWriter автоматически (autoFlush).
Возвращает:
очищается ли JspWriter автоматически, или вызывает исключение IOExceptions при выполнении условий переполнения буфера.