`
jayjayjaylun
  • 浏览: 90123 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

page buffer autoFlush

    博客分类:
  • java
阅读更多
<%@ page language="java" pageEncoding="UTF-8"  autoFlush="false" buffer="10kb" contentType="text/html; charset=UTF-8"%><%
//jsp.error.page.badCombo
//autoFlush="false" buffer="none"
/***
从源码 可以看出
out 最后将自动清理缓存//所以要测试 autoFlush 和 buffer 将采用 out.getBufferSize() 和 out.clear() 结合测试.
} catch (Throwable t) {
    if (!(t instanceof SkipPageException)){
      out = _jspx_out;
      if (out != null && out.getBufferSize() != 0)
        try { out.clearBuffer(); } catch (java.io.IOException e) {}
      if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
    }
  } finally {
    _jspxFactory.releasePageContext(_jspx_page_context);
  }
}
}
       
*****/

/*
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
response.flushBuffer();
*/
String name="";
for(int i = 0 ;i<1024*10; i++){
    name+="D";
}





//这里name 的长度为10240 个字符 刚好 等于buffer ="10kb" 大小 如果 此时 autoFlush="false"
//将抛出 //java.io.IOException: Error: JSP Buffer overflow (if autoFlush="false"  and  buffer  can't flush)
//note :  jsp 页面 一个回车换行 out('\n');out('\r') 输入2个字符.

System.out.println(" ===========name : " +name.length());
System.out.println(" =========== buffer size : " + out.getBufferSize());
System.out.println(" =========== out.isAutoFlush()  : " + out.isAutoFlush());
out.print(name);

//out.print("AAAAAAAAAAAAAAAAA");
//清除buffer 抛出异常 如果buffer 已经被清空
//out.clear();
//刷新buffer 输出到页面
out.flush();
//清除buffer 不会抛出异常
//out.clearBuffer();

out.print("<br/> BBBBBBBBBBBBBBBBB");
System.out.println(" =========== buffer size : " + out.getBufferSize());

//这里假设 可以 使得 out 最后不会调用out.clearBuffer();//可惜不可能
//  out = _jspx_out;  即使你这样设置了  tomcat 源码还是会帮你还原
/*
} catch (Throwable t) {
    if (!(t instanceof SkipPageException)){
      out = _jspx_out;
      if (out != null && out.getBufferSize() != 0)
        try { out.clearBuffer(); } catch (java.io.IOException e) {}
      if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
    }
  } finally {
    _jspxFactory.releasePageContext(_jspx_page_context);
  }
}
}
*/
out=null;
%><% //if out=null 后面不能出现空行 回车 out已经为空了...会有异常
%><%--
//out.isAutoFlush();
//out.close();

System.out.println(" =========== buffer size : " + response.getBufferSize());
Thread.sleep(3000);
/**
    public boolean isCommitted()
    Returns a boolean indicating if the response has been committed. A committed response has already had its status code and headers written.
**/

System.out.println(" =========== response is commited? /  : " + response.isCommitted());
//response.setBufferSize(1024*10);
//response.setBufferSize(10);
/**
public void flushBuffer()
                 throws java.io.IOException
    Forces any content in the buffer to be written to the client. A call to this method automatically commits the response, meaning the status code and headers will be written.
**/
//response.flushBuffer();
//response.resetBuffer();
//response.reset();

System.out.println(" =========== buffer size : " + response.getBufferSize());



/**
public void resetBuffer()
    Clears the content of the underlying buffer in the response without clearing headers or status code. If the response has been committed, this method throws an IllegalStateException.

public void reset()
    Clears any data that exists in the buffer as well as the status code and headers.
**/
    System.out.println(" =========================B");
    //response.sendRedirect("http://www.baidu.com");
   
    /*
        response.sendRedirect("whoami.jsp");
        Enter:
            http://192.168.1.14:8082/kathleen/a.jsp
        To:
            http://192.168.1.14:8082/whoami.jsp
           
        response.sendRedirect("whoami.jsp");
        To:
            http://192.168.1.14:8082/kathleen/whoami.jsp
    */
    //return;
    //if  you send this it will show IllegalStateException
    //because you had commit response.
    //response.sendRedirect("whoami.jsp");
    /**will not print in tomcat console**/
    System.out.println(" =========================A");
   
   
--%>
 



参考文档 :http://www.scribd.com/doc/34446565/JSP-Out-Object-Methods

分享到:
评论

相关推荐

    jsp中page指令用法详解

    page指令定义的大小写敏感属性包括:import、contentType、pageEncoding、session、isELIgnored、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language和extends。接下来我们逐一分析这些属性...

    Java Web初级编程:JSP 页面元素.pptx

    Page 指令中可以指定多种属性,例如 language、extends、import、session、errorPage、autoFlush、isErrorPage、contentType、buffer、info、isELIgnored、isELEnabled、isScriptingEnabled、isThreadSafe 和 ...

    11-page-Directive-Chinese.pdf

    5. **输出缓冲区**:通过`buffer`和`autoFlush`属性设置输出缓冲区的大小及溢出行为。 6. **错误处理页面**:通过`errorPage`属性指定当发生异常时跳转到的错误处理页面。 7. **线程安全性**:通过`isThreadSafe`...

    WEB开发 之 JSP指令.docx

    - `buffer`: 设置JSP输出的缓冲区大小,如`&lt;%@ page buffer="8kb" %&gt;`,或者设置为`none`禁用缓冲。 - `autoFlush`: 控制是否自动刷新缓冲区。默认为`true`,当缓冲区满时会自动刷新。 - `isThreadSafe`: 指定...

    JSP基本语法

    在 JSP 中,page 指令可以设置的属性包括 language、extends、import、session、errorPage、isErrorPage、contentType、buffer、autoFlush、pageEncoding 和 isELIgnored 等。 本文总结了 JSP 基本语法的知识点,...

    JSP语法Page指令

    page [ language=”java” ] [ extends=”package.class” ] [ import=”{package.class | package.*}, …” ] [ session=”true | false” ] [ buffer=”none | 8kb | sizekb” ] [ ...

    我从JSP最简单开始教你

    - `buffer`和`autoflush`:控制输出缓冲区的大小和是否自动刷新,如`&lt;%@page buffer=".." autoflush="true|false"%&gt;`。 - `isThreadSafe`:指定Servlet是否线程安全,默认为true,一般不建议手动设置。 - `errorPage...

    JSP应用技巧及心得---数据库的链接

    JSP页面指令的属性包括`language`(指定脚本语言)、`extends`(自定义servlet的超类)、`import`(导入类)、`session`(启用或禁用session)、`buffer`(控制输出缓冲区)、`autoFlush`(自动刷新缓冲区)、`...

    02_javaWeb知识

    - **buffer**: 设置输出流的缓冲区大小,默认为8KB。 - **isELIgnored**: 控制是否忽略EL表达式,默认为`false`,表示启用EL表达式的解析。 - **session**: 控制当前页面是否可以使用`session`对象,默认为`true`。...

    JSP学习笔记

    &lt;%@ page autoFlush="false" %&gt; ``` 7. **info:** - 设置关于当前页面的信息,可通过 `getServletInfo()` 方法获取。 - 示例: ```jsp &lt;%@ page info="This is a simple JSP example." %&gt; ``` 8. **error...

    jsp语法基础

    - **buffer**:用于指定`out`对象(类型为JspWriter)使用的缓冲区大小,如果设置为`none`,则所有输出直接通过`ServletResponse`的`PrintWriter`对象写出。设置该属性的值只能以kb为单位,默认值是8kb。 - **...

    JSP编译指令page、include详解

    - buffer="none|8kb|sizekb":指定输出流使用的缓冲区大小,默认大小依赖于服务器。 - autoFlush="true|false":当缓冲区满时,是否自动刷新,默认为true。 - isThreadSafe="true|false":指示页面是否可以由多个...

    第4章 JSP服务器对象

    page指令用于设置JSP页面的特性,如编程语言、导入的类、会话控制、缓冲区设置等。其语法格式如下: ```jsp &lt;%@ page language="java" extends="package.class" import="{package.class | package.*}, …" ...

    JSP指令元素(page指令/include指令/taglib指令)复习整理

    6. **autoFlush**:设置是否自动清空缓冲区,true表示当缓冲区满时自动输出,false则等待手动清空。 7. **isThreadSafe**:确定JSP页面是否支持多线程,true表示支持,false表示不支持,默认为true。 8. **info**:...

    Servlet与JSP核心编程第2版

    12.6 buffer和autoflush属性 12.7 info属性 12.8 errorpage和iserrorpage属性 12.9 isthreadsafe属性 12.10 extends属性 12.11 language属性 12.12 指令的xml语法 第13章 在jsp页面中包含文件和applet...

    JSP基础知识-期末复习题

    - `buffer`属性:控制输出流的缓冲区大小,`none`表示不使用缓冲,`8kb`或指定大小表示使用指定大小的缓冲区。 - `autoFlush`属性:当缓冲区满时,设置是否自动刷新缓冲区,`true`表示自动刷新,`false`则不刷新。...

    jsp语法大全

    &lt;%@ page buffer="5kb" autoFlush="false" %&gt; &lt;!-- 设置缓冲区大小及是否自动刷新 --&gt; &lt;%@ page errorPage="error.jsp" %&gt; &lt;!-- 指定错误处理页面 --&gt; &lt;%@ page contentType="text/html; charset=UTF-8" %&gt; &lt;!-- ...

    jsp的常用指令有哪些(编译指令 动作指令整理).docx

    5. **Buffer属性**: - 指定输出缓冲区的大小,默认值为`8kb`。 - 可选值包括`none`(禁用缓冲)、自定义大小(如`16kb`)。 6. **AutoFlush属性**: - 当缓冲区满时,是否自动刷新并清空缓冲区。 - 取值为`...

Global site tag (gtag.js) - Google Analytics