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

📄 jettyhttpexchange.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
//========================================================================//$$Id: JettyHttpExchange.java 549 2007-11-02 12:41:46Z lorban $$////------------------------------------------------------------------------//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.j2se6;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetSocketAddress;import java.net.URI;import java.net.URISyntaxException;import java.util.Enumeration;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.sun.net.httpserver.Headers;import com.sun.net.httpserver.HttpContext;import com.sun.net.httpserver.HttpExchange;import com.sun.net.httpserver.HttpPrincipal;/** * Jetty implementation of {@link com.sun.net.httpserver.HttpExchange} * @author lorban */public class JettyHttpExchange extends HttpExchange{    private HttpContext _context;    private HttpServletRequest _req;    private HttpServletResponse _resp;    private Headers _responseHeaders = new Headers();    private int _responseCode = 0;    private InputStream _is;    private OutputStream _os;	private HttpPrincipal _principal;	    public JettyHttpExchange(HttpContext context, HttpServletRequest req,            HttpServletResponse resp)    {        this._context = context;        this._req = req;        this._resp = resp;        try        {            this._is = req.getInputStream();            this._os = resp.getOutputStream();        }        catch (IOException ex)        {            throw new RuntimeException(ex);        }    }    @Override    public Headers getRequestHeaders()    {        Headers headers = new Headers();        Enumeration en = _req.getHeaderNames();        while (en.hasMoreElements())        {            String name = (String) en.nextElement();            Enumeration en2 = _req.getHeaders(name);            while (en2.hasMoreElements())            {                String value = (String) en2.nextElement();                headers.add(name, value);            }        }        return headers;    }    @Override    public Headers getResponseHeaders()    {        return _responseHeaders;    }    @Override    public URI getRequestURI()    {        try        {        	String uriAsString = _req.getRequestURI();        	if (_req.getQueryString() != null)        		uriAsString += "?" + _req.getQueryString();        	            return new URI(uriAsString);        }        catch (URISyntaxException ex)        {            throw new RuntimeException(ex);        }    }    @Override    public String getRequestMethod()    {        return _req.getMethod();    }    @Override    public HttpContext getHttpContext()    {        return _context;    }    @Override    public void close()    {        try        {            _resp.getOutputStream().close();        }        catch (IOException ex)        {            throw new RuntimeException(ex);        }    }    @Override    public InputStream getRequestBody()    {        return _is;    }    @Override    public OutputStream getResponseBody()    {        return _os;    }    @Override    public void sendResponseHeaders(int rCode, long responseLength)            throws IOException    {        this._responseCode = rCode;        Iterator it = _responseHeaders.entrySet().iterator();        while (it.hasNext())        {            Map.Entry entry = (Map.Entry) it.next();            String name = (String) entry.getKey();            List values = (List) entry.getValue();            for (int i = 0; i < values.size(); i++)            {                String value = (String) values.get(i);                _resp.setHeader(name, value);            }        }        if (responseLength > 0)            _resp.setHeader("content-length", "" + responseLength);        _resp.setStatus(rCode);    }    @Override    public InetSocketAddress getRemoteAddress()    {        return new InetSocketAddress(_req.getRemoteAddr(), _req.getRemotePort());    }    @Override    public int getResponseCode()    {        return _responseCode;    }    @Override    public InetSocketAddress getLocalAddress()    {        return new InetSocketAddress(_req.getLocalAddr(), _req.getLocalPort());    }    @Override    public String getProtocol()    {        return _req.getProtocol();    }    @Override    public Object getAttribute(String name)    {        return _req.getAttribute(name);    }    @Override    public void setAttribute(String name, Object value)    {        _req.setAttribute(name, value);    }    @Override    public void setStreams(InputStream i, OutputStream o)    {        _is = i;        _os = o;    }    @Override    public HttpPrincipal getPrincipal()    {    	return _principal;    }        public void setPrincipal(HttpPrincipal principal)    {    	this._principal = principal;    }}

⌨️ 快捷键说明

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