就像tomcat中的这两个类: /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.catalina; import java.security.Principal; import java.util.Locale; import javax.servlet.http.Cookie; /** * An <b>HttpRequest</b> is the Catalina internal facade for an * <code>HttpServletRequest</code> that is to be processed, in order to * produce the corresponding <code>HttpResponse</code>. * * @author Craig R. McClanahan * @version $Revision: 466595 $ $Date: 2006-10-21 23:24:41 +0100 (Sat, 21 Oct 2006) $ */public interface HttpRequest extends Request { // --------------------------------------------------------- Public Methods /** * Add a Cookie to the set of Cookies associated with this Request. * * @param cookie The new cookie */ public void addCookie(Cookie cookie); /** * Add a Header to the set of Headers associated with this Request. * * @param name The new header name * @param value The new header value */ public void addHeader(String name, String value); /** * Add a Locale to the set of preferred Locales for this Request. The * first added Locale will be the first one returned by getLocales(). * * @param locale The new preferred Locale */ public void addLocale(Locale locale); /** * Add a parameter name and corresponding set of values to this Request. * (This is used when restoring the original request on a form based * login). * * @param name Name of this request parameter * @param values Corresponding values for this request parameter */ public void addParameter(String name, String values[]); /** * Clear the collection of Cookies associated with this Request. */ public void clearCookies(); /** * Clear the collection of Headers associated with this Request. */ public void clearHeaders(); /** * Clear the collection of Locales associated with this Request. */ public void clearLocales(); /** * Clear the collection of parameters associated with this Request. */ public void clearParameters(); /** * Set the authentication type used for this request, if any; otherwise * set the type to <code>null</code>. Typical values are "BASIC", * "DIGEST", or "SSL". * * @param type The authentication type used */ public void setAuthType(String type); /** * Set the context path for this Request. This will normally be called * when the associated Context is mapping the Request to a particular * Wrapper. * * @param path The context path */ public void setContextPath(String path); /** * Set the HTTP request method used for this Request. * * @param method The request method */ public void setMethod(String method); /** * Set the query string for this Request. This will normally be called * by the HTTP Connector, when it parses the request headers. * * @param query The query string */ public void setQueryString(String query); /** * Set the path information for this Request. This will normally be called * when the associated Context is mapping the Request to a particular * Wrapper. * * @param path The path information */ public void setPathInfo(String path); /** * Set a flag indicating whether or not the requested session ID for this * request came in through a cookie. This is normally called by the * HTTP Connector, when it parses the request headers. * * @param flag The new flag */ public void setRequestedSessionCookie(boolean flag); /** * Set the requested session ID for this request. This is normally called * by the HTTP Connector, when it parses the request headers. * * @param id The new session id */ public void setRequestedSessionId(String id); /** * Set a flag indicating whether or not the requested session ID for this * request came in through a URL. This is normally called by the * HTTP Connector, when it parses the request headers. * * @param flag The new flag */ public void setRequestedSessionURL(boolean flag); /** * Set the unparsed request URI for this Request. This will normally be * called by the HTTP Connector, when it parses the request headers. * * @param uri The request URI */ public void setRequestURI(String uri); /** * Set the decoded request URI. * * @param uri The decoded request URI */ public void setDecodedRequestURI(String uri); /** * Get the decoded request URI. * * @return the URL decoded request URI */ public String getDecodedRequestURI(); /** * Set the servlet path for this Request. This will normally be called * when the associated Context is mapping the Request to a particular * Wrapper. * * @param path The servlet path */ public void setServletPath(String path); /** * Set the Principal who has been authenticated for this Request. This * value is also used to calculate the value to be returned by the * <code>getRemoteUser()</code> method. * * @param principal The user Principal */ public void setUserPrincipal(Principal principal); }
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.catalina.connector; import java.security.Principal; import java.util.Locale; import javax.servlet.http.Cookie; import org.apache.catalina.HttpRequest; /** * Abstract convenience class that wraps a Catalina-internal <b>HttpRequest</b> * object. By default, all methods are delegated to the wrapped request, * but subclasses can override individual methods as required to provide the * functionality that they require. * * @author Craig R. McClanahan * @version $Revision: 466595 $ $Date: 2006-10-21 23:24:41 +0100 (Sat, 21 Oct 2006) $ * @deprecated */public abstract class HttpRequestWrapper extends RequestWrapper implements HttpRequest { // ----------------------------------------------------------- Constructors /** * Construct a wrapper for the specified request. * * @param request The request to be wrapped */ public HttpRequestWrapper(HttpRequest request) { super(request); } // --------------------------------------------------------- Public Methods /** * Add a Cookie to the set of Cookies associated with this Request. * * @param cookie The new cookie */ public void addCookie(Cookie cookie) { ((HttpRequest) request).addCookie(cookie); } /** * Add a Header to the set of Headers associated with this Request. * * @param name The new header name * @param value The new header value */ public void addHeader(String name, String value) { ((HttpRequest) request).addHeader(name, value); } /** * Add a Locale to the set of preferred Locales for this Request. The * first added Locale will be the first one returned by getLocales(). * * @param locale The new preferred Locale */ public void addLocale(Locale locale) { ((HttpRequest) request).addLocale(locale); } /** * Clear the collection of Cookies associated with this Request. */ public void clearCookies() { ((HttpRequest) request).clearCookies(); } /** * Clear the collection of Headers associated with this Request. */ public void clearHeaders() { ((HttpRequest) request).clearHeaders(); } /** * Clear the collection of Locales associated with this Request. */ public void clearLocales() { ((HttpRequest) request).clearLocales(); } /** * Set the authentication type used for this request, if any; otherwise * set the type to <code>null</code>. Typical values are "BASIC", * "DIGEST", or "SSL". * * @param type The authentication type used */ public void setAuthType(String type) { ((HttpRequest) request).setAuthType(type); } /** * Set the context path for this Request. This will normally be called * when the associated Context is mapping the Request to a particular * Wrapper. * * @param path The context path */ public void setContextPath(String path) { ((HttpRequest) request).setContextPath(path); } /** * Set the HTTP request method used for this Request. * * @param method The request method */ public void setMethod(String method) { ((HttpRequest) request).setMethod(method); } /** * Set the query string for this Request. This will normally be called * by the HTTP Connector, when it parses the request headers. * * @param query The query string */ public void setQueryString(String query) { ((HttpRequest) request).setQueryString(query); } /** * Set the path information for this Request. This will normally be called * when the associated Context is mapping the Request to a particular * Wrapper. * * @param path The path information */ public void setPathInfo(String path) { ((HttpRequest) request).setPathInfo(path); } /** * Set a flag indicating whether or not the requested session ID for this * request came in through a cookie. This is normally called by the * HTTP Connector, when it parses the request headers. * * @param flag The new flag */ public void setRequestedSessionCookie(boolean flag) { ((HttpRequest) request).setRequestedSessionCookie(flag); } /** * Set the requested session ID for this request. This is normally called * by the HTTP Connector, when it parses the request headers. * * @param id The new session id */ public void setRequestedSessionId(String id) { ((HttpRequest) request).setRequestedSessionId(id); } /** * Set a flag indicating whether or not the requested session ID for this * request came in through a URL. This is normally called by the * HTTP Connector, when it parses the request headers. * * @param flag The new flag */ public void setRequestedSessionURL(boolean flag) { ((HttpRequest) request).setRequestedSessionURL(flag); } /** * Set the unparsed request URI for this Request. This will normally be * called by the HTTP Connector, when it parses the request headers. * * @param uri The request URI */ public void setRequestURI(String uri) { ((HttpRequest) request).setRequestURI(uri); } /** * Set the servlet path for this Request. This will normally be called * when the associated Context is mapping the Request to a particular * Wrapper. * * @param path The servlet path */ public void setServletPath(String path) { ((HttpRequest) request).setServletPath(path); } /** * Set the Principal who has been authenticated for this Request. This * value is also used to calculate the value to be returned by the * <code>getRemoteUser()</code> method. * * @param principal The user Principal */ public void setUserPrincipal(Principal principal) { ((HttpRequest) request).setUserPrincipal(principal); } }HttpRequestWrapper类竟然可以不用去重写一下HttpRequest声明的方法,最算没有重写,也没有重新申明一下接口里面的方法,这是啥情况阿????
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.catalina;
import java.security.Principal;
import java.util.Locale;
import javax.servlet.http.Cookie;
/**
* An <b>HttpRequest</b> is the Catalina internal facade for an
* <code>HttpServletRequest</code> that is to be processed, in order to
* produce the corresponding <code>HttpResponse</code>.
*
* @author Craig R. McClanahan
* @version $Revision: 466595 $ $Date: 2006-10-21 23:24:41 +0100 (Sat, 21 Oct 2006) $
*/public interface HttpRequest extends Request {
// --------------------------------------------------------- Public Methods
/**
* Add a Cookie to the set of Cookies associated with this Request.
*
* @param cookie The new cookie
*/
public void addCookie(Cookie cookie);
/**
* Add a Header to the set of Headers associated with this Request.
*
* @param name The new header name
* @param value The new header value
*/
public void addHeader(String name, String value);
/**
* Add a Locale to the set of preferred Locales for this Request. The
* first added Locale will be the first one returned by getLocales().
*
* @param locale The new preferred Locale
*/
public void addLocale(Locale locale);
/**
* Add a parameter name and corresponding set of values to this Request.
* (This is used when restoring the original request on a form based
* login).
*
* @param name Name of this request parameter
* @param values Corresponding values for this request parameter
*/
public void addParameter(String name, String values[]);
/**
* Clear the collection of Cookies associated with this Request.
*/
public void clearCookies();
/**
* Clear the collection of Headers associated with this Request.
*/
public void clearHeaders();
/**
* Clear the collection of Locales associated with this Request.
*/
public void clearLocales();
/**
* Clear the collection of parameters associated with this Request.
*/
public void clearParameters();
/**
* Set the authentication type used for this request, if any; otherwise
* set the type to <code>null</code>. Typical values are "BASIC",
* "DIGEST", or "SSL".
*
* @param type The authentication type used
*/
public void setAuthType(String type); /**
* Set the context path for this Request. This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
*
* @param path The context path
*/
public void setContextPath(String path);
/**
* Set the HTTP request method used for this Request.
*
* @param method The request method
*/
public void setMethod(String method);
/**
* Set the query string for this Request. This will normally be called
* by the HTTP Connector, when it parses the request headers.
*
* @param query The query string
*/
public void setQueryString(String query);
/**
* Set the path information for this Request. This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
*
* @param path The path information
*/
public void setPathInfo(String path);
/**
* Set a flag indicating whether or not the requested session ID for this
* request came in through a cookie. This is normally called by the
* HTTP Connector, when it parses the request headers.
*
* @param flag The new flag
*/
public void setRequestedSessionCookie(boolean flag);
/**
* Set the requested session ID for this request. This is normally called
* by the HTTP Connector, when it parses the request headers.
*
* @param id The new session id
*/
public void setRequestedSessionId(String id);
/**
* Set a flag indicating whether or not the requested session ID for this
* request came in through a URL. This is normally called by the
* HTTP Connector, when it parses the request headers.
*
* @param flag The new flag
*/
public void setRequestedSessionURL(boolean flag);
/**
* Set the unparsed request URI for this Request. This will normally be
* called by the HTTP Connector, when it parses the request headers.
*
* @param uri The request URI
*/
public void setRequestURI(String uri);
/**
* Set the decoded request URI.
*
* @param uri The decoded request URI
*/
public void setDecodedRequestURI(String uri);
/**
* Get the decoded request URI.
*
* @return the URL decoded request URI
*/
public String getDecodedRequestURI();
/**
* Set the servlet path for this Request. This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
*
* @param path The servlet path
*/
public void setServletPath(String path);
/**
* Set the Principal who has been authenticated for this Request. This
* value is also used to calculate the value to be returned by the
* <code>getRemoteUser()</code> method.
*
* @param principal The user Principal
*/
public void setUserPrincipal(Principal principal);
}
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.catalina.connector;
import java.security.Principal;
import java.util.Locale;
import javax.servlet.http.Cookie;
import org.apache.catalina.HttpRequest;
/**
* Abstract convenience class that wraps a Catalina-internal <b>HttpRequest</b>
* object. By default, all methods are delegated to the wrapped request,
* but subclasses can override individual methods as required to provide the
* functionality that they require.
*
* @author Craig R. McClanahan
* @version $Revision: 466595 $ $Date: 2006-10-21 23:24:41 +0100 (Sat, 21 Oct 2006) $
* @deprecated
*/public abstract class HttpRequestWrapper
extends RequestWrapper
implements HttpRequest {
// ----------------------------------------------------------- Constructors
/**
* Construct a wrapper for the specified request.
*
* @param request The request to be wrapped
*/
public HttpRequestWrapper(HttpRequest request) { super(request); }
// --------------------------------------------------------- Public Methods
/**
* Add a Cookie to the set of Cookies associated with this Request.
*
* @param cookie The new cookie
*/
public void addCookie(Cookie cookie) { ((HttpRequest) request).addCookie(cookie); }
/**
* Add a Header to the set of Headers associated with this Request.
*
* @param name The new header name
* @param value The new header value
*/
public void addHeader(String name, String value) { ((HttpRequest) request).addHeader(name, value); }
/**
* Add a Locale to the set of preferred Locales for this Request. The
* first added Locale will be the first one returned by getLocales().
*
* @param locale The new preferred Locale
*/
public void addLocale(Locale locale) { ((HttpRequest) request).addLocale(locale); }
/**
* Clear the collection of Cookies associated with this Request.
*/
public void clearCookies() { ((HttpRequest) request).clearCookies(); }
/**
* Clear the collection of Headers associated with this Request.
*/
public void clearHeaders() { ((HttpRequest) request).clearHeaders(); }
/**
* Clear the collection of Locales associated with this Request.
*/
public void clearLocales() { ((HttpRequest) request).clearLocales(); }
/**
* Set the authentication type used for this request, if any; otherwise
* set the type to <code>null</code>. Typical values are "BASIC",
* "DIGEST", or "SSL".
*
* @param type The authentication type used
*/
public void setAuthType(String type) { ((HttpRequest) request).setAuthType(type); }
/**
* Set the context path for this Request. This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
*
* @param path The context path
*/
public void setContextPath(String path) { ((HttpRequest) request).setContextPath(path); }
/**
* Set the HTTP request method used for this Request.
*
* @param method The request method
*/
public void setMethod(String method) { ((HttpRequest) request).setMethod(method); }
/**
* Set the query string for this Request. This will normally be called
* by the HTTP Connector, when it parses the request headers.
*
* @param query The query string
*/
public void setQueryString(String query) { ((HttpRequest) request).setQueryString(query); }
/**
* Set the path information for this Request. This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
*
* @param path The path information
*/
public void setPathInfo(String path) { ((HttpRequest) request).setPathInfo(path); }
/**
* Set a flag indicating whether or not the requested session ID for this
* request came in through a cookie. This is normally called by the
* HTTP Connector, when it parses the request headers.
*
* @param flag The new flag
*/
public void setRequestedSessionCookie(boolean flag) { ((HttpRequest) request).setRequestedSessionCookie(flag); }
/**
* Set the requested session ID for this request. This is normally called
* by the HTTP Connector, when it parses the request headers.
*
* @param id The new session id
*/
public void setRequestedSessionId(String id) { ((HttpRequest) request).setRequestedSessionId(id); }
/**
* Set a flag indicating whether or not the requested session ID for this
* request came in through a URL. This is normally called by the
* HTTP Connector, when it parses the request headers.
*
* @param flag The new flag
*/
public void setRequestedSessionURL(boolean flag) { ((HttpRequest) request).setRequestedSessionURL(flag); }
/**
* Set the unparsed request URI for this Request. This will normally be
* called by the HTTP Connector, when it parses the request headers.
*
* @param uri The request URI
*/
public void setRequestURI(String uri) { ((HttpRequest) request).setRequestURI(uri); }
/**
* Set the servlet path for this Request. This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
*
* @param path The servlet path
*/
public void setServletPath(String path) { ((HttpRequest) request).setServletPath(path); }
/**
* Set the Principal who has been authenticated for this Request. This
* value is also used to calculate the value to be returned by the
* <code>getRemoteUser()</code> method.
*
* @param principal The user Principal
*/
public void setUserPrincipal(Principal principal) { ((HttpRequest) request).setUserPrincipal(principal); }
}HttpRequestWrapper类竟然可以不用去重写一下HttpRequest声明的方法,最算没有重写,也没有重新申明一下接口里面的方法,这是啥情况阿????