Спецификация Java Server Pages 1.2

       

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


    Содержание раздела