Java-ServletResponse-ServletResponseWrapper
- /**
- * Defines an object to assist a servlet in sending a response to the client.
- * The servlet container creates a <code>ServletResponse</code> object and
- * passes it as an argument to the servlet's <code>service</code> method.
- *
- * <p>To send binary data in a MIME body response, use
- * the {@link ServletOutputStream} returned by {@link #getOutputStream}.
- * To send character data, use the <code>PrintWriter</code> object
- * returned by {@link #getWriter}. To mix binary and text data,
- * for example, to create a multipart response, use a
- * <code>ServletOutputStream</code> and manage the character sections
- * manually.
- *
- * <p>The charset for the MIME body response can be specified
- * explicitly using the {@link #setCharacterEncoding} and
- * {@link #setContentType} methods, or implicitly
- * using the {@link #setLocale} method.
- * Explicit specifications take precedence over
- * implicit specifications. If no charset is specified, ISO-8859-1 will be
- * used. The <code>setCharacterEncoding</code>,
- * <code>setContentType</code>, or <code>setLocale</code> method must
- * be called before <code>getWriter</code> and before committing
- * the response for the character encoding to be used.
- * <p>See the Internet RFCs such as
- * <a href="http://www.ietf.org/rfc/rfc2045.txt">
- * RFC 2045</a> for more information on MIME. Protocols such as SMTP
- * and HTTP define profiles of MIME, and those standards
- * are still evolving.
- * @author Various
- * @version $Version$
- *
- * @see ServletOutputStream
- *
- */
- public interface ServletResponse {
- /**
- * Returns the name of the character encoding (MIME charset)
- * used for the body sent in this response.
- * The character encoding may have been specified explicitly
- * using the {@link #setCharacterEncoding} or
- * {@link #setContentType} methods, or implicitly using the
- * {@link #setLocale} method. Explicit specifications take
- * precedence over implicit specifications. Calls made
- * to these methods after <code>getWriter</code> has been
- * called or after the response has been committed have no
- * effect on the character encoding. If no character encoding
- * has been specified, <code>ISO-8859-1</code> is returned.
- * <p>See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
- * for more information about character encoding and MIME.
- * @return a <code>String</code> specifying the
- * name of the character encoding, for
- * example, <code>UTF-8</code>
- */
- //获得返回body的字符类型
- public String getCharacterEncoding();
- /**
- * Returns the content type used for the MIME body
- * sent in this response. The content type proper must
- * have been specified using {@link #setContentType}
- * before the response is committed. If no content type
- * has been specified, this method returns null.
- * If a content type has been specified and a
- * character encoding has been explicitly or implicitly
- * specified as described in {@link #getCharacterEncoding},
- * the charset parameter is included in the string returned.
- * If no character encoding has been specified, the
- * charset parameter is omitted.
- *
- * @return a <code>String</code> specifying the
- * content type, for example,
- * <code>text/html; charset=UTF-8</code>,
- * or null
- *
- * @since 2.4
- */
- //body中的文件类型
- public String getContentType();
- /**
- * Returns a {@link ServletOutputStream} suitable for writing binary
- * data in the response. The servlet container does not encode the
- * binary data.
- * <p> Calling flush() on the ServletOutputStream commits the response.
- * Either this method or {@link #getWriter} may
- * be called to write the body, not both.
- * @return a {@link ServletOutputStream} for writing binary data
- * @exception IllegalStateException if the <code>getWriter</code> method has been called on this response
- * @exception IOException if an input or output exception occurred
- * @see #getWriter
- */
- //
- public ServletOutputStream getOutputStream() throws IOException;
- /**
- * Returns a <code>PrintWriter</code> object that
- * can send character text to the client.
- * The <code>PrintWriter</code> uses the character
- * encoding returned by {@link #getCharacterEncoding}.
- * If the response's character encoding has not been
- * specified as described in <code>getCharacterEncoding</code>
- * (i.e., the method just returns the default value
- * <code>ISO-8859-1</code>), <code>getWriter</code>
- * updates it to <code>ISO-8859-1</code>.
- * <p>Calling flush() on the <code>PrintWriter</code>
- * commits the response.
- * <p>Either this method or {@link #getOutputStream} may be called
- * to write the body, not both.
- * @return a <code>PrintWriter</code> object that
- * can return character data to the client
- * @exception UnsupportedEncodingException
- * if the character encoding returned
- * by <code>getCharacterEncoding</code> cannot be used
- * @exception IllegalStateException
- * if the <code>getOutputStream</code>
- * method has already been called for this
- * response object
- * @exception IOException
- * if an input or output exception occurred
- * @see #getOutputStream
- * @see #setCharacterEncoding
- *
- */
- //
- public PrintWriter getWriter() throws IOException;
- /**
- * Sets the character encoding (MIME charset) of the response
- * being sent to the client, for example, to UTF-8.
- * If the character encoding has already been set by
- * {@link #setContentType} or {@link #setLocale},
- * this method overrides it.
- * Calling {@link #setContentType} with the <code>String</code>
- * of <code>text/html</code> and calling
- * this method with the <code>String</code> of <code>UTF-8</code>
- * is equivalent with calling
- * <code>setContentType</code> with the <code>String</code> of
- * <code>text/html; charset=UTF-8</code>.
- * <p>This method can be called repeatedly to change the character
- * encoding.
- * This method has no effect if it is called after
- * <code>getWriter</code> has been
- * called or after the response has been committed.
- * <p>Containers must communicate the character encoding used for
- * the servlet response's writer to the client if the protocol
- * provides a way for doing so. In the case of HTTP, the character
- * encoding is communicated as part of the <code>Content-Type</code>
- * header for text media types. Note that the character encoding
- * cannot be communicated via HTTP headers if the servlet does not
- * specify a content type; however, it is still used to encode text
- * written via the servlet response's writer.
- * @param charset a String specifying only the character set
- * defined by IANA Character Sets
- * (http://www.iana.org/assignments/character-sets)
- * @see #setContentType
- * #setLocale
- * @since 2.4
- *
- */
- //设置字符类型
- public void setCharacterEncoding(String charset);
- /**
- * Sets the length of the content body in the response
- * In HTTP servlets, this method sets the HTTP Content-Length header.
- * @param len an integer specifying the length of the
- * content being returned to the client; sets the Content-Length header
- */
- //设置response body中内容的长度
- public void setContentLength(int len);
- /**
- * Sets the content type of the response being sent to
- * the client, if the response has not been committed yet.
- * The given content type may include a character encoding
- * specification, for example, <code>text/html;charset=UTF-8</code>.
- * The response's character encoding is only set from the given
- * content type if this method is called before <code>getWriter</code>
- * is called.
- * <p>This method may be called repeatedly to change content type and
- * character encoding.
- * This method has no effect if called after the response
- * has been committed. It does not set the response's character
- * encoding if it is called after <code>getWriter</code>
- * has been called or after the response has been committed.
- * <p>Containers must communicate the content type and the character
- * encoding used for the servlet response's writer to the client if
- * the protocol provides a way for doing so. In the case of HTTP,
- * the <code>Content-Type</code> header is used.
- * @param type a <code>String</code> specifying the MIME
- * type of the content
- * @see #setLocale
- * @see #setCharacterEncoding
- * @see #getOutputStream
- * @see #getWriter
- *
- */
- //返回给客户端的内容类型,text/html;charset=UTF-8
- public void setContentType(String type);
- /**
- * Sets the preferred buffer size for the body of the response.
- * The servlet container will use a buffer at least as large as
- * the size requested. The actual buffer size used can be found
- * using <code>getBufferSize</code>.
- * <p>A larger buffer allows more content to be written before anything is
- * actually sent, thus providing the servlet with more time to set
- * appropriate status codes and headers. A smaller buffer decreases
- * server memory load and allows the client to start receiving data more
- * quickly.
- * <p>This method must be called before any response body content is
- * written; if content has been written or the response object has
- * been committed, this method throws an
- * <code>IllegalStateException</code>.
- * @param size the preferred buffer size
- * @exception IllegalStateException if this method is called after
- * content has been written
- * @see #getBufferSize
- * @see #flushBuffer
- * @see #isCommitted
- * @see #reset
- *
- */
- //response body缓冲区大小
- public void setBufferSize(int size);
- /**
- * Returns the actual buffer size used for the response. If no buffering
- * is used, this method returns 0.
- * @return the actual buffer size used
- * @see #setBufferSize
- * @see #flushBuffer
- * @see #isCommitted
- * @see #reset
- */
- //获得response使用的真是的缓冲区大小
- public int getBufferSize();
- /**
- * 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.
- * @see #setBufferSize
- * @see #getBufferSize
- * @see #isCommitted
- * @see #reset
- */
- //刷新缓冲区内容到客户端
- public void flushBuffer() throws IOException;
- /**
- * 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
- * <code>IllegalStateException</code>.
- * @see #setBufferSize
- * @see #getBufferSize
- * @see #isCommitted
- * @see #reset
- *
- * @since 2.3
- */
- //
- public void resetBuffer();
- /**
- * Returns a boolean indicating if the response has been
- * committed. A committed response has already had its status
- * code and headers written.
- * @return a boolean indicating if the response has been
- * committed
- * @see #setBufferSize
- * @see #getBufferSize
- * @see #flushBuffer
- * @see #reset
- *
- */
- //
- public boolean isCommitted();
- /**
- * Clears any data that exists in the buffer as well as the status code and
- * headers. If the response has been committed, this method throws an
- * <code>IllegalStateException</code>.
- *
- * @exception IllegalStateException if the response has already been
- * committed
- * @see #setBufferSize
- * @see #getBufferSize
- * @see #flushBuffer
- * @see #isCommitted
- */
- public void reset();
- /**
- * Sets the locale of the response, if the response has not been
- * committed yet. It also sets the response's character encoding
- * appropriately for the locale, if the character encoding has not
- * been explicitly set using {@link #setContentType} or
- * {@link #setCharacterEncoding}, <code>getWriter</code> hasn't
- * been called yet, and the response hasn't been committed yet.
- * If the deployment descriptor contains a
- * <code>locale-encoding-mapping-list</code> element, and that
- * element provides a mapping for the given locale, that mapping
- * is used. Otherwise, the mapping from locale to character
- * encoding is container dependent.
- * <p>This method may be called repeatedly to change locale and
- * character encoding. The method has no effect if called after the
- * response has been committed. It does not set the response's
- * character encoding if it is called after {@link #setContentType}
- * has been called with a charset specification, after
- * {@link #setCharacterEncoding} has been called, after
- * <code>getWriter</code> has been called, or after the response
- * has been committed.
- * <p>Containers must communicate the locale and the character encoding
- * used for the servlet response's writer to the client if the protocol
- * provides a way for doing so. In the case of HTTP, the locale is
- * communicated via the <code>Content-Language</code> header,
- * the character encoding as part of the <code>Content-Type</code>
- * header for text media types. Note that the character encoding
- * cannot be communicated via HTTP headers if the servlet does not
- * specify a content type; however, it is still used to encode text
- * written via the servlet response's writer.
- * @param loc the locale of the response
- * @see #getLocale
- * @see #setContentType
- * @see #setCharacterEncoding
- */
- public void setLocale(Locale loc);
- /**
- * Returns the locale specified for this response
- * using the {@link #setLocale} method. Calls made to
- * <code>setLocale</code> after the response is committed
- * have no effect. If no locale has been specified,
- * the container's default locale is returned.
- * @see #setLocale
- */
- public Locale getLocale();
- }
- /**
- *
- * Provides a convenient implementation of the ServletResponse interface that
- * can be subclassed by developers wishing to adapt the response from a Servlet.
- * This class implements the Wrapper or Decorator pattern. Methods default to
- * calling through to the wrapped response object.
- *
- * @author Various
- * @version $Version$
- * @since v 2.3
- *
- * @see javax.servlet.ServletResponse
- *
- */
- public class ServletResponseWrapper implements ServletResponse {
- private ServletResponse response;
- /**
- * Creates a ServletResponse adaptor wrapping the given response object.
- * @throws java.lang.IllegalArgumentException if the response is null.
- */
- public ServletResponseWrapper(ServletResponse response) {
- if (response == null) {
- throw new IllegalArgumentException("Response cannot be null");
- }
- this.response = response;
- }
- /**
- * Return the wrapped ServletResponse object.
- */
- public ServletResponse getResponse() {
- return this.response;
- }
- /**
- * Sets the response being wrapped.
- * @throws java.lang.IllegalArgumentException if the response is null.
- */
- public void setResponse(ServletResponse response) {
- if (response == null) {
- throw new IllegalArgumentException("Response cannot be null");
- }
- this.response = response;
- }
- /**
- * The default behavior of this method is to call setCharacterEncoding(String charset)
- * on the wrapped response object.
- *
- * @since 2.4
- */
- public void setCharacterEncoding(String charset) {
- this.response.setCharacterEncoding(charset);
- }
- /**
- * The default behavior of this method is to return getCharacterEncoding()
- * on the wrapped response object.
- */
- public String getCharacterEncoding() {
- return this.response.getCharacterEncoding();
- }
- /**
- * The default behavior of this method is to return getOutputStream()
- * on the wrapped response object.
- */
- public ServletOutputStream getOutputStream() throws IOException {
- return this.response.getOutputStream();
- }
- /**
- * The default behavior of this method is to return getWriter()
- * on the wrapped response object.
- */
- public PrintWriter getWriter() throws IOException {
- return this.response.getWriter();
- }
- /**
- * The default behavior of this method is to call setContentLength(int len)
- * on the wrapped response object.
- */
- public void setContentLength(int len) {
- this.response.setContentLength(len);
- }
- /**
- * The default behavior of this method is to call setContentType(String type)
- * on the wrapped response object.
- */
- public void setContentType(String type) {
- this.response.setContentType(type);
- }
- /**
- * The default behavior of this method is to return getContentType()
- * on the wrapped response object.
- *
- * @since 2.4
- */
- public String getContentType() {
- return this.response.getContentType();
- }
- /**
- * The default behavior of this method is to call setBufferSize(int size)
- * on the wrapped response object.
- */
- public void setBufferSize(int size) {
- this.response.setBufferSize(size);
- }
- /**
- * The default behavior of this method is to return getBufferSize()
- * on the wrapped response object.
- */
- public int getBufferSize() {
- return this.response.getBufferSize();
- }
- /**
- * The default behavior of this method is to call flushBuffer()
- * on the wrapped response object.
- */
- public void flushBuffer() throws IOException {
- this.response.flushBuffer();
- }
- /**
- * The default behavior of this method is to return isCommitted()
- * on the wrapped response object.
- */
- public boolean isCommitted() {
- return this.response.isCommitted();
- }
- /**
- * The default behavior of this method is to call reset()
- * on the wrapped response object.
- */
- public void reset() {
- this.response.reset();
- }
- /**
- * The default behavior of this method is to call resetBuffer()
- * on the wrapped response object.
- */
- public void resetBuffer() {
- this.response.resetBuffer();
- }
- /**
- * The default behavior of this method is to call setLocale(Locale loc)
- * on the wrapped response object.
- */
- public void setLocale(Locale loc) {
- this.response.setLocale(loc);
- }
- /**
- * The default behavior of this method is to return getLocale()
- * on the wrapped response object.
- */
- public Locale getLocale() {
- return this.response.getLocale();
- }
- }
Java-ServletResponse-ServletResponseWrapper的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)
本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...
- [原创]java WEB学习笔记09:ServletResponse & HttpServletResponse
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Java EE javax.servlet中的ServletResponse接口
ServletResponse接口 public interface ServletResponse 子接口:HttpServletResponse 实现类:HttpServletResponseWr ...
- java web servlet
一.什么是Servlet Servlet是一种小型的Java程序,它扩展了Web服务器的功能.作为一种服务器端的应用,他是运行在Servlet容器当中,例如Tomcat就是一种流行的Servlet容器 ...
- java HttpServletRequest和HttpServletResponse詳解
這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 java HttpServletRequest和HttpS ...
- Java精选笔记_Servlet技术
Servlet技术 Servlet开发入门 Servlet接口 针对Servlet技术的开发,SUN公司提供了一系列接口和类,其中最重要的是javax.servlet.Servlet接口. Servl ...
- 《Tomcat与Java Web开发技术详解》思维导图
越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...
- [原创]java WEB学习笔记15:域对象的属性操作(pageContext,request,session,application) 及 请求的重定向和转发
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Java HttpServletRequest中getAttribute()方法和getParameter()区别
一.ServletRequest接口 HttpServletRequest接口继承了ServletRequest接口,实现类通常代表一个实际的Http Request. Servlet容器负责创建一个 ...
随机推荐
- Swift3中如何为Array写一个限定Type的扩展
我们知道Swift可以扩展已存在的类或结构,这些类或结构可以存在于标准库(或称为核心库)中.如果结构是一个集合类型(比如Array)就更有趣了.我们想尝试写一个限定Type数组的扩展,So我们就拿Ar ...
- 如何使用Matlab产生对称矩阵
有时候做实验需要使用对称矩阵,这里介绍如何使用Matlab产生随机的对称矩阵. 用例子说明一下:我要产生4X4的随机矩阵,要求是对称矩阵. 产生对称矩阵 A = rand(4); B = tril(A ...
- MySQL 视图技术
以前也只是知道数据库中有视图这么个概念,但是没有去深究,今天正好有时间,就来总结一下吧. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表.视图就像一个窗口(数据展示的窗口),通过 ...
- 高通msm8994性能及温度监测脚本
[plain] view plain copystartTime=$(date +%Y-%m-%d-%H-%M-%S) pathName="/data/cpu_logs" fi ...
- shell 数据流重定向操作符总结
最近看了鸟哥私房菜关于shell数据流重定向的内容,总结一下. 操作符: 1.标准输入(stdin):代码为0,符号:< 或者<< 2.标准输出(stdout):代码为1,符号:&g ...
- UNIX环境高级编程——初始化一个守护进程
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...
- 使用Geolocation校正GDAL不支持的数据
对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正.在GDAL中,这种校正方式叫Geolocation array.常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系 ...
- Java基础---Java---IO流-----LineNumberReader方法及原理、自定义一个LineNumberReader、字节流、图片复制、mp3复制、
LineNumberReader 跟综行号的缓冲字符输入流,些类定义了setLineNumber(int)和getLineNumber(int),它们可分别用于设置和获取当前行号 import jav ...
- acm入门搜索-水池数目
水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处 ...
- 在Android中使用AlarmManager
AlarmManager是Android中的一种系统级别的提醒服务,它会为我们在特定的时刻广播一个指定的Intent.而使用Intent的时候,我们还需要它执行一个动作,如startActivity, ...