📄 request.java
字号:
/* * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */package org.apache.tomcat.core;import org.apache.tomcat.util.*;import java.io.*;import java.io.IOException;import java.net.*;import java.security.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;/** * */public interface Request { // -------------------- Basic Request properties -------------------- public String getScheme() ; public void setScheme( String r ) ; public String getMethod() ; public void setMethod( String s ); public String getRequestURI() ; public void setRequestURI(String s) ; public String getQueryString() ; public void setQueryString(String q) ; public String getProtocol() ; public void setProtocol(String p) ; // -------------------- Connection information public String getServerName() ; public void setServerName(String serverName) ; public int getServerPort() ; public void setServerPort( int i ); public String getRemoteAddr() ; public void setRemoteAddr(String remote) ; /** Expensive - should be implemented as a callback where * possible! */ public String getRemoteHost() ; public void setRemoteHost(String s) ; public String getLocalHost() ; public void setLocalHost(String host) ; // -------------------- Headers -------------------- public MimeHeaders getMimeHeaders(); public String getHeader(String name) ; public Enumeration getHeaderNames() ; public Enumeration getHeaders(String name) ; //-------------------- "Computed" properties -------------------- // ( directly derived from headers or request paths ) public Cookie getCookie( int idx ); public int getCookieCount(); public int getContentLength() ; public void setContentLength( int len ) ; public String getContentType() ; public void setContentType( String type ) ; public void setCharEncoding( String enc ) ; public String getCharacterEncoding() ; // -------------------- Mapping -------------------- // Will be set by mappers or // by adapter /** Context - will be set by contextMap stage of request interceptors */ public void setContext(Context context) ; public Context getContext() ; /** Real Path - should be implemented as a callback ( override it in adapters). * Map interceptor should set it to something reasonable ( context home + path ) * MappedPath is similar - it contain mappings inside a context, for normal * contexts pathTranslated==context.docBase + mappedPath */ String getPathTranslated() ; /** */ void setPathTranslated(String path) ; /** Path Info - set be mappers or from adapter */ public String getPathInfo() ; public void setPathInfo(String pathInfo) ; /** Servlet Path */ public void setServletPath(String servletPath) ; public String getServletPath() ; public Container getContainer() ; public void setContainer(Container handler) ; // -------------------- Security -------------------- // Will be set by security interceptors public String getAuthType() ; public void setAuthType(String authType) ; String getRemoteUser() ; void setRemoteUser(String s) ; boolean isSecure() ; // XXX remove - not needed public void setUserRoles( String roles[] ); public String[] getUserRoles( ); /** If this request is subject to a security constraint. A better way would be to have a "merge" mechanism to add all properties to the container ( like in Apache), but until this is implemented we'll just keep the fields in request. */ public String[] getRequiredRoles( ); public void setRequiredRoles( String roles[] ); /** */ Principal getUserPrincipal() ; void setUserPrincipal(Principal p) ; /** */ boolean isUserInRole(String role) ; // -------------------- Session -------------------- // Multiple JVM support // GS, used by the load balancing layer public String getJvmRoute(); public void setJvmRoute(String route); // Will be set by session interceptors public String getRequestedSessionId() ; public void setRequestedSessionId(String reqSessionId) ; public static final String SESSIONID_FROM_COOKIE="cookie"; public static final String SESSIONID_FROM_URL="url"; /** Get the source of the session Id. */ public String getSessionIdSource() ; public void setSessionIdSource(String s) ; public void setSession(HttpSession serverSession) ; public HttpSession getSession(boolean create) ; // -------------------- Parameters -------------------- /** Set query string - will be called by forward */ public String[] getParameterValues(String name) ; public String getParameter(String name ); public Enumeration getParameterNames() ; // -------------------- Attributes -------------------- public Object getAttribute(String name) ; public void setAttribute(String name, Object value) ; public void removeAttribute(String name) ; public Enumeration getAttributeNames() ; // -------------------- Input -------------------- // XXX review - do we need both reader and IS ? public BufferedReader getReader() throws IOException; public ServletInputStream getInputStream() throws IOException; public int doRead( byte b[], int off, int len ) throws IOException; // -------------------- Internal methods -------------------- /** Support for "pools" */ public void recycle() ; /** One-to-One with Response */ public Response getResponse() ; public void setResponse(Response response) ; /** One-to-One with Facade */ public HttpServletRequest getFacade() ; /** Pointer to the server engine - for errors, etc */ public void setContextManager( ContextManager cm ); public ContextManager getContextManager(); // -------------------- Internal/deprecated-------------------- // Derived from parsing query string and body (for POST) // Used in ReqDispatcher /** @deprecated internal use only */ public void setParameters( Hashtable h ) ; /** @deprecated internal use only */ public Hashtable getParameters() ; /** Wrapper - the servlet that will execute the request * Similar with "handler" in Apache. * @deprecated - use Container instead */ public ServletWrapper getWrapper() ; /** * @deprecated - use Container instead */ public void setWrapper(ServletWrapper handler) ; // -------------------- Included requests -------------------- public static final int MAX_INCLUDE=10; /** If this is a sub-request, return the parent */ public Request getParent(); public void setParent( Request req ); /** During include, a sub-request will be created. * This represents the current included request */ public Request getChild(); public void setChild( Request req ); /** This is the top request ( for a sub-request ) */ public Request getTop(); // -------------------- Buffers -------------------- public ByteBuffer getInputBuffer(); public void setInputBuffer(ByteBuffer buf); // -------------------- Notes -------------------- /** Add a per/request internal attribute. * We keep internal attributes in a separate space to prevent * servlets from accessing them. We also use indexed access for * speed ( as oposed to hashtable lookups ). Get an Id from ContextManager. */ public void setNote( int pos, Object value ); public Object getNote( int pos ); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -