⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 response.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
//========================================================================//$Id: Response.java,v 1.8 2005/11/25 21:01:45 gregwilkins Exp $//Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.//------------------------------------------------------------------------//Licensed under the Apache License, Version 2.0 (the "License");//you may not use this file except in compliance with the License.//You may obtain a copy of the License at//http://www.apache.org/licenses/LICENSE-2.0//Unless required by applicable law or agreed to in writing, software//distributed under the License is distributed on an "AS IS" BASIS,//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.//See the License for the specific language governing permissions and//limitations under the License.//========================================================================package org.mortbay.jetty;import java.io.IOException;import java.io.PrintWriter;import java.util.Collections;import java.util.Enumeration;import java.util.Locale;import javax.servlet.ServletOutputStream;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.mortbay.io.BufferCache.CachedBuffer;import org.mortbay.jetty.handler.ContextHandler;import org.mortbay.jetty.handler.ErrorHandler;import org.mortbay.jetty.servlet.ServletHandler;import org.mortbay.log.Log;import org.mortbay.util.ByteArrayISO8859Writer;import org.mortbay.util.IO;import org.mortbay.util.QuotedStringTokenizer;import org.mortbay.util.StringUtil;import org.mortbay.util.URIUtil;/* ------------------------------------------------------------ *//** Response. * <p> * Implements {@link javax.servlet.HttpServletResponse} from the {@link javax.servlet} package.    * </p> *  * @author gregw * */public class Response implements HttpServletResponse{    public static final int        DISABLED=-1,        NONE=0,        STREAM=1,        WRITER=2;    private static PrintWriter __nullPrintWriter;    private static ServletOutputStream __nullServletOut;    static    {        try{            __nullPrintWriter = new PrintWriter(IO.getNullWriter());            __nullServletOut = new NullOutput();        }        catch (Exception e)        {            Log.warn(e);        }    }    private HttpConnection _connection;    private int _status=SC_OK;    private String _reason;    private Locale _locale;    private String _mimeType;    private CachedBuffer _cachedMimeType;    private String _characterEncoding;    private boolean _explicitEncoding;    private String _contentType;    private int _outputState;    private PrintWriter _writer;    /* ------------------------------------------------------------ */    /**     *     */    public Response(HttpConnection connection)    {        _connection=connection;    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.ServletResponse#reset()     */    protected void recycle()    {        _status=SC_OK;        _reason=null;        _locale=null;        _mimeType=null;        _cachedMimeType=null;        _characterEncoding=null;        _explicitEncoding=false;        _contentType=null;        _outputState=NONE;        _writer=null;    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#addCookie(javax.servlet.http.Cookie)     */    public void addCookie(Cookie cookie)    {        _connection.getResponseFields().addSetCookie(cookie);    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#containsHeader(java.lang.String)     */    public boolean containsHeader(String name)    {        return _connection.getResponseFields().containsKey(name);    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#encodeURL(java.lang.String)     */    public String encodeURL(String url)    {        Request request=_connection.getRequest();        SessionManager sessionManager = request.getSessionManager();        if (sessionManager==null)            return url;        String sessionURLPrefix = sessionManager.getSessionURLPrefix();        if (sessionURLPrefix==null)            return url;        // should not encode if cookies in evidence        if (url==null || request==null || request.isRequestedSessionIdFromCookie())        {            int prefix=url.indexOf(sessionURLPrefix);            if (prefix!=-1)            {                int suffix=url.indexOf("?",prefix);                if (suffix<0)                    suffix=url.indexOf("#",prefix);                if (suffix<=prefix)                    return url.substring(0,prefix);                return url.substring(0,prefix)+url.substring(suffix);            }            return url;        }        // get session;        HttpSession session=request.getSession(false);        // no session        if (session == null)            return url;                // invalid session        if (!sessionManager.isValid(session))            return url;                String id=sessionManager.getNodeId(session);                        // TODO Check host and port are for this server        // Already encoded        int prefix=url.indexOf(sessionURLPrefix);        if (prefix!=-1)        {            int suffix=url.indexOf("?",prefix);            if (suffix<0)                suffix=url.indexOf("#",prefix);            if (suffix<=prefix)                return url.substring(0,prefix+sessionURLPrefix.length())+id;            return url.substring(0,prefix+sessionURLPrefix.length())+id+                url.substring(suffix);        }        // edit the session        int suffix=url.indexOf('?');        if (suffix<0)            suffix=url.indexOf('#');        if (suffix<0)            return url+sessionURLPrefix+id;        return url.substring(0,suffix)+            sessionURLPrefix+id+url.substring(suffix);    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#encodeRedirectURL(java.lang.String)     */    public String encodeRedirectURL(String url)    {        return encodeURL(url);    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#encodeUrl(java.lang.String)     */    public String encodeUrl(String url)    {        return encodeURL(url);    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#encodeRedirectUrl(java.lang.String)     */    public String encodeRedirectUrl(String url)    {        return encodeURL(url);    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#sendError(int, java.lang.String)     */    public void sendError(int code, String message) throws IOException    {    	if (_connection.isIncluding())    		return;    	        if (isCommitted())            Log.warn("Committed before "+code+" "+message);        resetBuffer();        _characterEncoding=null;        setHeader(HttpHeaders.EXPIRES,null);        setHeader(HttpHeaders.LAST_MODIFIED,null);        setHeader(HttpHeaders.CACHE_CONTROL,null);        setHeader(HttpHeaders.CONTENT_TYPE,null);        setHeader(HttpHeaders.CONTENT_LENGTH,null);             _outputState=NONE;        setStatus(code,message);                if (message==null)            message=HttpGenerator.getReason(code);        // If we are allowed to have a body        if (code!=SC_NO_CONTENT &&            code!=SC_NOT_MODIFIED &&            code!=SC_PARTIAL_CONTENT &&            code>=SC_OK)        {            Request request = _connection.getRequest();            ErrorHandler error_handler = null;            ContextHandler.SContext context = request.getContext();            if (context!=null)                error_handler=context.getContextHandler().getErrorHandler();            if (error_handler!=null)            {                // TODO - probably should reset these after the request?                request.setAttribute(ServletHandler.__J_S_ERROR_STATUS_CODE,new Integer(code));                request.setAttribute(ServletHandler.__J_S_ERROR_MESSAGE, message);                request.setAttribute(ServletHandler.__J_S_ERROR_REQUEST_URI, request.getRequestURI());                request.setAttribute(ServletHandler.__J_S_ERROR_SERVLET_NAME,request.getServletName());                                 error_handler.handle(null,_connection.getRequest(),this, Handler.ERROR);            }            else            {                setHeader(HttpHeaders.CACHE_CONTROL, "must-revalidate,no-cache,no-store");                setContentType(MimeTypes.TEXT_HTML_8859_1);                ByteArrayISO8859Writer writer= new ByteArrayISO8859Writer(2048);                if (message != null)                {                    message= StringUtil.replace(message, "&", "&amp;");                    message= StringUtil.replace(message, "<", "&lt;");                    message= StringUtil.replace(message, ">", "&gt;");                }                String uri= request.getRequestURI();                if (uri!=null)                {                    uri= StringUtil.replace(uri, "&", "&amp;");                    uri= StringUtil.replace(uri, "<", "&lt;");                    uri= StringUtil.replace(uri, ">", "&gt;");                }                                writer.write("<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\"/>\n");                writer.write("<title>Error ");                writer.write(Integer.toString(code));                writer.write(' ');                if (message==null)                    message=HttpGenerator.getReason(code);                writer.write(message);                writer.write("</title>\n</head>\n<body>\n<h2>HTTP ERROR: ");                writer.write(Integer.toString(code));                writer.write("</h2>\n<p>Problem accessing ");                writer.write(uri);                writer.write(". Reason:\n<pre>    ");                writer.write(message);                writer.write("</pre>");                writer.write("</p>\n<hr /><i><small>Powered by Jetty://</small></i>");                                for (int i= 0; i < 20; i++)                    writer.write("\n                                                ");                writer.write("\n</body>\n</html>\n");                                writer.flush();                setContentLength(writer.size());                writer.writeTo(getOutputStream());                writer.destroy();            }        }        else if (code!=SC_PARTIAL_CONTENT)        {            _connection.getRequestFields().remove(HttpHeaders.CONTENT_TYPE_BUFFER);            _connection.getRequestFields().remove(HttpHeaders.CONTENT_LENGTH_BUFFER);            _characterEncoding=null;            _mimeType=null;            _cachedMimeType=null;        }        complete();    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#sendError(int)     */    public void sendError(int sc) throws IOException    {        if (sc==102)            sendProcessing();        else            sendError(sc,null);    }    /* ------------------------------------------------------------ */    /* Send a 102-Processing response.     * If the connection is a HTTP connection, the version is 1.1 and the     * request has a Expect header starting with 102, then a 102 response is     * sent. This indicates that the request still be processed and real response     * can still be sent.   This method is called by sendError if it is passed 102.     * @see javax.servlet.http.HttpServletResponse#sendError(int)     */    public void sendProcessing() throws IOException    {        Generator g = _connection.getGenerator();        if (g instanceof HttpGenerator)        {            HttpGenerator generator = (HttpGenerator)g;                        String expect = _connection.getRequest().getHeader(HttpHeaders.EXPECT);                        if (expect!=null && expect.startsWith("102") && generator.getVersion()>=HttpVersions.HTTP_1_1_ORDINAL)            {                boolean was_persistent=generator.isPersistent();                generator.setResponse(HttpStatus.ORDINAL_102_Processing,null);                generator.completeHeader(null,true);                generator.setPersistent(true);                generator.complete();                generator.flush();                generator.reset(false);                generator.setPersistent(was_persistent);            }        }    }    /* ------------------------------------------------------------ */    /*     * @see javax.servlet.http.HttpServletResponse#sendRedirect(java.lang.String)     */    public void sendRedirect(String location) throws IOException    {    	if (_connection.isIncluding())    		return;    	        if (location==null)            throw new IllegalArgumentException();        if (!URIUtil.hasScheme(location))        {   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -