out对象用于输出数据到页面,它是javax.servlet.jsp.JspWriter的一个实例。out对象的范围是page(即当前页面)。
从java.io.Writer拓展而来的公共抽象类JspWriter效仿了java.io.BufferedWriter和java.Io.PrintWriter中的某些功能。但是,不同之处在于它会在打印方法中抛出(throw)java.Io.IOException异常,而PrintWriter不这样做。
JSP中的out对象就是这种类型的。如果page指令选择了autoflush="true",那么当出现由于当前的操作不清空缓存而造成缓冲区溢出的情况时,这个类的所有I/O操作会自动清空缓冲区的内容。如果autoflush="false",那么当操作造成了缓冲区溢出时,这个类的所有的I/O操作将抛出一个IOException。
out对象的主要方法如下
// 清除输出缓冲区的内容,但是不输出到客户端 void clear() // 清除输出缓冲区的内容,并输出到客户端 void clearBuffer() // 关闭输出流,清除所有内容 void close() // 输出缓冲区里面的数据 void flush() // 获取以kb为单位的目前缓冲区大小 int getBufferSize() // 获取以kb为单位的缓冲区中未被占用的空间大小 int getRemaining() // 是否自动刷新缓冲区 boolean isAutoFlush() // 输出一个换行字符 void newLine() // 将指定类型的数据输出到Http流,不换行 void print(boolean b) void print(char c) void print(char[] s) void print(double d) void print(float f) void print(int i) void print(long l) void print(Object obj) void print(String s) // 将指定类型的数据输出到Http流,并输出一个换行符 void println(boolean b) void println(char c) void println(char[] s) void println(double d) void println(float f) void println(int i) void println(long l) void println(Object obj) void println(String s) // 将一个字符或者实现了CharSequence接口的对象添加到输出流的后面 Appendable append(char c) Appendable append(CharSequence cxq, int start, int end) Appendable append(CharSequence cxq)
out对象的成员变量
// 缺省缓冲区大小 int DEFAULT_BUFFER = 0; // writer是否处于缓冲输出状态 int NO_BUFFER = -1; // 是否限制缓冲区大小 int UNBOUNDED_BUFFER = -2;
【例子】输出out对象中的缓冲区大小等信息
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <html> <head> <title>My JSP 'OutDemo.jsp' starting page</title> </head> <body> <% int all=out.getBufferSize(); // 获得缓冲区大小 int remain=out.getRemaining(); // 获得剩余缓冲区大小 int use=all-remain; // 使用的缓冲区大小 out.println("使用的缓冲区大小" + use); %> </body> </html>
输出结果:
使用的缓冲区大小128