public class SystemResponseWrapper
extends javax.servlet.http.HttpServletResponseWrapper
SystemResponseWrapper
功能描述: response装饰器 用于获取要发送到浏览器的页面
大致思路为:在response在发送页面前用本修饰器,自定义的PrintWriter,ServletoutPutStream替换掉
servlet的PrintWriter,ServletOutPutStream。然后servlet在使用PrintWriter,ServletO-
utPutStream时将要发送的页面放在了自定义的PrintWriter,ServletOutPutStream中。
在response过滤器修改本方法获取的页面后,用response自己的PrintWriter,HttpServletoutputStr-
eam将修改后的页面发送到浏览器。
这里重载getWriter和getOutputStream是为了兼容tomcat和weblogic,这两种服务器的servlet有区别,
区别为:tomcat调用getWriter,但是weblogic调用getOutputStream。以后再遇见其他的服务器也就这两种
调用的方法了,可以做到服务器的兼容。
而且这样做PrintWriter和ServletOutPutStream都是自定义的PrintWriter和ServletOutPutStream
避免Servlet自身的PrintWriter与ServletOutPutStream同时调用的问题。
最后说明:本实现方法是参考了常规的response过滤器和oscache的页面缓存,对服务器内部的servlet运行也不是
很清楚。以上都是自己的推测,欢迎指正。
创建人: 陈伟
创建日期: 2013-11-20 上午09:27:45
开发环境: JDK6.0SC_ACCEPTED, SC_BAD_GATEWAY, SC_BAD_REQUEST, SC_CONFLICT, SC_CONTINUE, SC_CREATED, SC_EXPECTATION_FAILED, SC_FORBIDDEN, SC_FOUND, SC_GATEWAY_TIMEOUT, SC_GONE, SC_HTTP_VERSION_NOT_SUPPORTED, SC_INTERNAL_SERVER_ERROR, SC_LENGTH_REQUIRED, SC_METHOD_NOT_ALLOWED, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_MULTIPLE_CHOICES, SC_NO_CONTENT, SC_NON_AUTHORITATIVE_INFORMATION, SC_NOT_ACCEPTABLE, SC_NOT_FOUND, SC_NOT_IMPLEMENTED, SC_NOT_MODIFIED, SC_OK, SC_PARTIAL_CONTENT, SC_PAYMENT_REQUIRED, SC_PRECONDITION_FAILED, SC_PROXY_AUTHENTICATION_REQUIRED, SC_REQUEST_ENTITY_TOO_LARGE, SC_REQUEST_TIMEOUT, SC_REQUEST_URI_TOO_LONG, SC_REQUESTED_RANGE_NOT_SATISFIABLE, SC_RESET_CONTENT, SC_SEE_OTHER, SC_SERVICE_UNAVAILABLE, SC_SWITCHING_PROTOCOLS, SC_TEMPORARY_REDIRECT, SC_UNAUTHORIZED, SC_UNSUPPORTED_MEDIA_TYPE, SC_USE_PROXY| Constructor and Description |
|---|
SystemResponseWrapper(javax.servlet.http.HttpServletResponse response) |
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
void |
finalize() |
java.lang.String |
getContent(java.lang.String serverInfo)
获得要发送到浏览器的页面
|
javax.servlet.ServletOutputStream |
getOutputStream() |
java.io.PrintWriter |
getWriter() |
addCookie, addDateHeader, addHeader, addIntHeader, containsHeader, encodeRedirectUrl, encodeRedirectURL, encodeUrl, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, sendError, sendError, sendRedirect, setDateHeader, setHeader, setIntHeader, setStatus, setStatusflushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale, setResponsepublic SystemResponseWrapper(javax.servlet.http.HttpServletResponse response)
public void finalize()
throws java.lang.Throwable
finalize in class java.lang.Objectjava.lang.Throwablepublic java.lang.String getContent(java.lang.String serverInfo)
serverInfo - 服务器类型public java.io.PrintWriter getWriter()
throws java.io.IOException
getWriter in interface javax.servlet.ServletResponsegetWriter in class javax.servlet.ServletResponseWrapperjava.io.IOExceptionpublic javax.servlet.ServletOutputStream getOutputStream()
throws java.io.IOException
getOutputStream in interface javax.servlet.ServletResponsegetOutputStream in class javax.servlet.ServletResponseWrapperjava.io.IOExceptionpublic void close()
throws java.io.IOException
java.io.IOException