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