out对象
1、什么是out对象?
(1) out对象是一个输出流,用于向客户端输出数据。
(2) out对象基类是:javax.servlet.jsp.JspWriter类。
注意:out对象跟Servlet中由HttpServletResponse得到的PrintWriter对象略有不同,但是JspWriter类和PrintWriter类都是从java.io.Writer继承而来,所以基本上还是一样的。
(3) out对象的常用方法,如下所示:
方法名
描述
 void print()
输出数据,不换行。
void println()
输出数据,换行。
void newLine()
输出一个换行符。
void flush()
输出缓冲区里的内容。
void close()
关闭输出流。
void clear()
清除缓冲区里的内容。
void clearBuffer()
清除缓冲区里的内容。
int getBufferSize()
获得缓冲区的大小。
int getRemaining()
获得缓冲区里没有使用的空间大小。
print()println()方法的区别:
print()方法输出数据时,不会写入一个换行符;而println()方法输出数据时,会写入一个换行符。
但是,浏览器目前不识别println()写入的换行符,如果希望浏览器显示换行,应当向浏览器写入<br>来实现换行。
2 out.close()方法的使用
close()方法:用于关闭输出流,一旦输出流被关闭了,就不能再使用out对象进行任何操作。
一般来说,不要在JSP页面中,直接调用out对象的close()方法,将会抛出异常。
测试代码:
TestOut01.jsp
<%@ page contentType="text/html; charset=gb2312"%>
<html>
    <body>
        <%
            out.println("长沙民政学院<br>");
            out.println("软件学院<br>");
           
            out.close();  //关闭输出流
           
        %>
    </body>
</html>
测试结果:
访问该JSP页面,抛出IOException,见该JSP页面转换后的Java文件,可以看到在调用close()方法后,继续使用了out对象,所以会抛出异常。
3 对缓冲区的操作
测试代码:
    TestOut02.jsp
一般来说,服务器把发送给客户端的数据先放到一个缓冲区里,缓存起来,缓冲区的默认设置大小为8KB,默认为当缓冲区存满后,将自动发送,autoFlush属性默认为true
clear()方法和clearBuffer()方法的区别:
<%@ page contentType="text/html;charset=GBK"%>
<html>
    <body>
        <%
            for (int i = 0; i < 5; i++) {
               
                out.println("<h2>Hello World!</h2>");
               
            }
       
            out.println("<p>缓冲区的大小:" + BufferSize()); //获得缓冲区的大小,缓冲区的大小可以用<%@page buffer="size"%\>设置
       
            out.println("<p>缓冲区剩余空间的大小:" + Remaining()); //获得缓冲区里没有使用的空间大小
       
            //out.flush();
           
            out.clear(); //清除缓冲区里的内容
           
            //out.clearBuffer();
        %>
jsp使用el表达式    </body>
</html>
如果缓冲区里的内容已经被输出,即已经调用了flush()方法,再去调用clear()方法,来清除缓冲区里的内容,则会抛出IOException
如果缓冲区里的内容已经被输出,即已经调用了flush()方法,再去调用clearBuffer()方法,来清除缓冲区里的内容,则不会抛出IOException