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

📄 httpconnection.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        /*         * @see         * org.mortbay.jetty.HttpParser.EventHandler#parsedHeaderValue(org.mortbay         * .io.Buffer)         */        public void parsedHeader(Buffer name, Buffer value)        {            int ho = HttpHeaders.CACHE.getOrdinal(name);            switch (ho)            {                case HttpHeaders.HOST_ORDINAL:                    // TODO check if host matched a host in the URI.                    _host = true;                    break;                case HttpHeaders.EXPECT_ORDINAL:                    value = HttpHeaderValues.CACHE.lookup(value);                    _expect = HttpHeaderValues.CACHE.getOrdinal(value);                    break;                case HttpHeaders.ACCEPT_ENCODING_ORDINAL:                case HttpHeaders.USER_AGENT_ORDINAL:                    value = HttpHeaderValues.CACHE.lookup(value);                    break;                case HttpHeaders.CONTENT_TYPE_ORDINAL:                    value = MimeTypes.CACHE.lookup(value);                    _charset = MimeTypes.getCharsetFromContentType(value);                    break;                case HttpHeaders.CONNECTION_ORDINAL:                    // looks rather clumsy, but the idea is to optimize for a                    // single valued header                    int ordinal = HttpHeaderValues.CACHE.getOrdinal(value);                    switch (ordinal)                    {                        case -1:                        {                            String[] values = value.toString().split(",");                            for (int i = 0; values != null && i < values.length; i++)                            {                                CachedBuffer cb = HttpHeaderValues.CACHE.get(values[i].trim());                                if (cb != null)                                {                                    switch (cb.getOrdinal())                                    {                                        case HttpHeaderValues.CLOSE_ORDINAL:                                            _responseFields.add(HttpHeaders.CONNECTION_BUFFER,HttpHeaderValues.CLOSE_BUFFER);                                            _generator.setPersistent(false);                                            break;                                        case HttpHeaderValues.KEEP_ALIVE_ORDINAL:                                            if (_version == HttpVersions.HTTP_1_0_ORDINAL)                                                _responseFields.add(HttpHeaders.CONNECTION_BUFFER,HttpHeaderValues.KEEP_ALIVE_BUFFER);                                            break;                                    }                                }                            }                            break;                        }                        case HttpHeaderValues.CLOSE_ORDINAL:                            _responseFields.put(HttpHeaders.CONNECTION_BUFFER,HttpHeaderValues.CLOSE_BUFFER);                            _generator.setPersistent(false);                            break;                        case HttpHeaderValues.KEEP_ALIVE_ORDINAL:                            if (_version == HttpVersions.HTTP_1_0_ORDINAL)                                _responseFields.put(HttpHeaders.CONNECTION_BUFFER,HttpHeaderValues.KEEP_ALIVE_BUFFER);                            break;                    }            }            _requestFields.add(name,value);        }        /*         * @see org.mortbay.jetty.HttpParser.EventHandler#headerComplete()         */        public void headerComplete() throws IOException        {            _requests++;            _generator.setVersion(_version);            switch (_version)            {                case HttpVersions.HTTP_0_9_ORDINAL:                    break;                case HttpVersions.HTTP_1_0_ORDINAL:                    _generator.setHead(_head);                    break;                case HttpVersions.HTTP_1_1_ORDINAL:                    _generator.setHead(_head);                    if (_server.getSendDateHeader())                        _responseFields.put(HttpHeaders.DATE_BUFFER,_request.getTimeStampBuffer(),_request.getTimeStamp());                    if (!_host)                    {                        _generator.setResponse(HttpStatus.ORDINAL_400_Bad_Request,null);                        _responseFields.put(HttpHeaders.CONNECTION_BUFFER,HttpHeaderValues.CLOSE_BUFFER);                        _generator.completeHeader(_responseFields,true);                        _generator.complete();                        return;                    }                    if (_expect != UNKNOWN)                    {                        if (_expect == HttpHeaderValues.CONTINUE_ORDINAL)                        {                            // TODO delay sending 100 response until a read is                            // attempted.                            if (((HttpParser)_parser).getHeaderBuffer() == null || ((HttpParser)_parser).getHeaderBuffer().length() < 2)                            {                                _generator.setResponse(HttpStatus.ORDINAL_100_Continue,null);                                _generator.completeHeader(null,true);                                _generator.complete();                                _generator.reset(false);                            }                        }                        else if (_expect == HttpHeaderValues.PROCESSING_ORDINAL)                        {                        }                        else                        {                            _generator.sendError(HttpStatus.ORDINAL_417_Expectation_Failed,null,null,true);                            return;                        }                    }                    break;                default:            }            if (_charset != null)                _request.setCharacterEncodingUnchecked(_charset);            // Either handle now or wait for first content            if (((HttpParser)_parser).getContentLength() <= 0 && !((HttpParser)_parser).isChunking())                handleRequest();            else                _delayedHandling = true;        }        /* ------------------------------------------------------------ */        /*         * @see org.mortbay.jetty.HttpParser.EventHandler#content(int,         * org.mortbay.io.Buffer)         */        public void content(Buffer ref) throws IOException        {            if (_delayedHandling)            {                _delayedHandling = false;                handleRequest();            }        }        /*         * (non-Javadoc)         *          * @see org.mortbay.jetty.HttpParser.EventHandler#messageComplete(int)         */        public void messageComplete(long contentLength) throws IOException        {            if (_delayedHandling)            {                _delayedHandling = false;                handleRequest();            }        }        /*         * (non-Javadoc)         *          * @see         * org.mortbay.jetty.HttpParser.EventHandler#startResponse(org.mortbay         * .io.Buffer, int, org.mortbay.io.Buffer)         */        public void startResponse(Buffer version, int status, Buffer reason)        {            Log.debug("Bad request!: " + version + " " + status + " " + reason);        }    }    /* ------------------------------------------------------------ */    /* ------------------------------------------------------------ */    /* ------------------------------------------------------------ */    public class Output extends AbstractGenerator.Output    {        Output()        {            super((AbstractGenerator)HttpConnection.this._generator,_connector.getMaxIdleTime());        }        /* ------------------------------------------------------------ */        /*         * @see java.io.OutputStream#close()         */        public void close() throws IOException        {            if (_closed)                return;            if (!isIncluding() && !_generator.isCommitted())                commitResponse(HttpGenerator.LAST);            else                flushResponse();            super.close();        }        /* ------------------------------------------------------------ */        /*         * @see java.io.OutputStream#flush()         */        public void flush() throws IOException        {            if (!_generator.isCommitted())                commitResponse(HttpGenerator.MORE);            super.flush();        }        /* ------------------------------------------------------------ */        /*         * @see javax.servlet.ServletOutputStream#print(java.lang.String)         */        public void print(String s) throws IOException        {            if (_closed)                throw new IOException("Closed");            PrintWriter writer = getPrintWriter(null);            writer.print(s);        }        /* ------------------------------------------------------------ */        public void sendResponse(Buffer response) throws IOException        {            ((HttpGenerator)_generator).sendResponse(response);        }        /* ------------------------------------------------------------ */        public void sendContent(Object content) throws IOException        {            Resource resource = null;            if (_closed)                throw new IOException("Closed");            if (_generator.getContentWritten() > 0)                throw new IllegalStateException("!empty");            if (content instanceof HttpContent)            {                HttpContent c = (HttpContent)content;                Buffer contentType = c.getContentType();                if (contentType != null && !_responseFields.containsKey(HttpHeaders.CONTENT_TYPE_BUFFER))                {                    String enc = _response.getSetCharacterEncoding();                    if(enc==null)                        _responseFields.add(HttpHeaders.CONTENT_TYPE_BUFFER, contentType);                    else                    {                        if(contentType instanceof CachedBuffer)                        {                            CachedBuffer content_type = ((CachedBuffer)contentType).getAssociate(enc);                            if(content_type!=null)                                _responseFields.put(HttpHeaders.CONTENT_TYPE_BUFFER, content_type);                            else                            {                                _responseFields.put(HttpHeaders.CONTENT_TYPE_BUFFER,                                         contentType+";charset="+QuotedStringTokenizer.quote(enc,";= "));                            }                        }                        else                        {                            _responseFields.put(HttpHeaders.CONTENT_TYPE_BUFFER,                                     contentType+";charset="+QuotedStringTokenizer.quote(enc,";= "));                        }                    }                }                if (c.getContentLength() > 0)                    _responseFields.putLongField(HttpHeaders.CONTENT_LENGTH_BUFFER,c.getContentLength());                Buffer lm = c.getLastModified();                long lml = c.getResource().lastModified();                if (lm != null)                    _responseFields.put(HttpHeaders.LAST_MODIFIED_BUFFER,lm,lml);                else if (c.getResource() != null)                {                    if (lml != -1)                        _responseFields.putDateField(HttpHeaders.LAST_MODIFIED_BUFFER,lml);                }                content = c.getBuffer();                if (content == null)                    content = c.getInputStream();            }            else if (content instanceof Resource)            {                resource = (Resource)content;                _responseFields.putDateField(HttpHeaders.LAST_MODIFIED_BUFFER,resource.lastModified());                content = resource.getInputStream();            }            if (content instanceof Buffer)            {                _generator.addContent((Buffer)content,HttpGenerator.LAST);                commitResponse(HttpGenerator.LAST);            }            else if (content instanceof InputStream)            {                InputStream in = (InputStream)content;                try                {                    int max = _generator.prepareUncheckedAddContent();                    Buffer buffer = _generator.getUncheckedBuffer();                    int len = buffer.readFrom(in,max);                    while (len >= 0)                    {                        _generator.completeUncheckedAddContent();                        _out.flush();                        max = _generator.prepareUncheckedAddContent();                        buffer = _generator.getUncheckedBuffer();                        len = buffer.readFrom(in,max);                    }                    _generator.completeUncheckedAddContent();                    _out.flush();                }                finally                {                    if (resource != null)                        resource.release();                    else                        in.close();                }            }            else                throw new IllegalArgumentException("unknown content type?");        }    }    /* ------------------------------------------------------------ */    /* ------------------------------------------------------------ */    /* ------------------------------------------------------------ */    public class OutputWriter extends AbstractGenerator.OutputWriter    {        OutputWriter()        {            super(HttpConnection.this._out);        }    }}

⌨️ 快捷键说明

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