init
This commit is contained in:
453
java/javax/servlet/http/Cookie.java
Normal file
453
java/javax/servlet/http/Cookie.java
Normal file
@@ -0,0 +1,453 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.BitSet;
|
||||
import java.util.Locale;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
/**
|
||||
* Creates a cookie, a small amount of information sent by a servlet to a Web
|
||||
* browser, saved by the browser, and later sent back to the server. A cookie's
|
||||
* value can uniquely identify a client, so cookies are commonly used for
|
||||
* session management.
|
||||
* <p>
|
||||
* A cookie has a name, a single value, and optional attributes such as a
|
||||
* comment, path and domain qualifiers, a maximum age, and a version number.
|
||||
* Some Web browsers have bugs in how they handle the optional attributes, so
|
||||
* use them sparingly to improve the interoperability of your servlets.
|
||||
* <p>
|
||||
* The servlet sends cookies to the browser by using the
|
||||
* {@link HttpServletResponse#addCookie} method, which adds fields to HTTP
|
||||
* response headers to send cookies to the browser, one at a time. The browser
|
||||
* is expected to support 20 cookies for each Web server, 300 cookies total, and
|
||||
* may limit cookie size to 4 KB each.
|
||||
* <p>
|
||||
* The browser returns cookies to the servlet by adding fields to HTTP request
|
||||
* headers. Cookies can be retrieved from a request by using the
|
||||
* {@link HttpServletRequest#getCookies} method. Several cookies might have the
|
||||
* same name but different path attributes.
|
||||
* <p>
|
||||
* Cookies affect the caching of the Web pages that use them. HTTP 1.0 does not
|
||||
* cache pages that use cookies created with this class. This class does not
|
||||
* support the cache control defined with HTTP 1.1.
|
||||
* <p>
|
||||
* This class supports both the RFC 2109 and the RFC 6265 specifications.
|
||||
* By default, cookies are created using RFC 6265.
|
||||
*/
|
||||
public class Cookie implements Cloneable, Serializable {
|
||||
|
||||
private static final CookieNameValidator validation;
|
||||
static {
|
||||
boolean strictNaming;
|
||||
String prop = System.getProperty("org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING");
|
||||
if (prop != null) {
|
||||
strictNaming = Boolean.parseBoolean(prop);
|
||||
} else {
|
||||
strictNaming = Boolean.getBoolean("org.apache.catalina.STRICT_SERVLET_COMPLIANCE");
|
||||
}
|
||||
|
||||
if (strictNaming) {
|
||||
validation = new RFC2109Validator();
|
||||
}
|
||||
else {
|
||||
validation = new RFC6265Validator();
|
||||
}
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String name;
|
||||
private String value;
|
||||
|
||||
private int version = 0; // ;Version=1 ... means RFC 2109 style
|
||||
|
||||
//
|
||||
// Attributes encoded in the header's cookie fields.
|
||||
//
|
||||
private String comment; // ;Comment=VALUE ... describes cookie's use
|
||||
private String domain; // ;Domain=VALUE ... domain that sees cookie
|
||||
private int maxAge = -1; // ;Max-Age=VALUE ... cookies auto-expire
|
||||
private String path; // ;Path=VALUE ... URLs that see the cookie
|
||||
private boolean secure; // ;Secure ... e.g. use SSL
|
||||
private boolean httpOnly; // Not in cookie specs, but supported by browsers
|
||||
|
||||
/**
|
||||
* Constructs a cookie with a specified name and value.
|
||||
* <p>
|
||||
* The name must conform to RFC 2109. That means it can contain only ASCII
|
||||
* alphanumeric characters and cannot contain commas, semicolons, or white
|
||||
* space or begin with a $ character. The cookie's name cannot be changed
|
||||
* after creation.
|
||||
* <p>
|
||||
* The value can be anything the server chooses to send. Its value is
|
||||
* probably of interest only to the server. The cookie's value can be
|
||||
* changed after creation with the <code>setValue</code> method.
|
||||
* <p>
|
||||
* By default, cookies are created according to the Netscape cookie
|
||||
* specification. The version can be changed with the
|
||||
* <code>setVersion</code> method.
|
||||
*
|
||||
* @param name
|
||||
* a <code>String</code> specifying the name of the cookie
|
||||
* @param value
|
||||
* a <code>String</code> specifying the value of the cookie
|
||||
* @throws IllegalArgumentException
|
||||
* if the cookie name contains illegal characters (for example,
|
||||
* a comma, space, or semicolon) or it is one of the tokens
|
||||
* reserved for use by the cookie protocol
|
||||
* @see #setValue
|
||||
* @see #setVersion
|
||||
*/
|
||||
public Cookie(String name, String value) {
|
||||
validation.validate(name);
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies a comment that describes a cookie's purpose. The comment is
|
||||
* useful if the browser presents the cookie to the user. Comments are not
|
||||
* supported by Netscape Version 0 cookies.
|
||||
*
|
||||
* @param purpose
|
||||
* a <code>String</code> specifying the comment to display to the
|
||||
* user
|
||||
* @see #getComment
|
||||
*/
|
||||
public void setComment(String purpose) {
|
||||
comment = purpose;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the comment describing the purpose of this cookie, or
|
||||
* <code>null</code> if the cookie has no comment.
|
||||
*
|
||||
* @return a <code>String</code> containing the comment, or
|
||||
* <code>null</code> if none
|
||||
* @see #setComment
|
||||
*/
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies the domain within which this cookie should be presented.
|
||||
* <p>
|
||||
* The form of the domain name is specified by RFC 2109. A domain name
|
||||
* begins with a dot (<code>.foo.com</code>) and means that the cookie is
|
||||
* visible to servers in a specified Domain Name System (DNS) zone (for
|
||||
* example, <code>www.foo.com</code>, but not <code>a.b.foo.com</code>). By
|
||||
* default, cookies are only returned to the server that sent them.
|
||||
*
|
||||
* @param pattern
|
||||
* a <code>String</code> containing the domain name within which
|
||||
* this cookie is visible; form is according to RFC 2109
|
||||
* @see #getDomain
|
||||
*/
|
||||
public void setDomain(String pattern) {
|
||||
domain = pattern.toLowerCase(Locale.ENGLISH); // IE allegedly needs this
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the domain name set for this cookie. The form of the domain name
|
||||
* is set by RFC 2109.
|
||||
*
|
||||
* @return a <code>String</code> containing the domain name
|
||||
* @see #setDomain
|
||||
*/
|
||||
public String getDomain() {
|
||||
return domain;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum age of the cookie in seconds.
|
||||
* <p>
|
||||
* A positive value indicates that the cookie will expire after that many
|
||||
* seconds have passed. Note that the value is the <i>maximum</i> age when
|
||||
* the cookie will expire, not the cookie's current age.
|
||||
* <p>
|
||||
* A negative value means that the cookie is not stored persistently and
|
||||
* will be deleted when the Web browser exits. A zero value causes the
|
||||
* cookie to be deleted.
|
||||
*
|
||||
* @param expiry
|
||||
* an integer specifying the maximum age of the cookie in
|
||||
* seconds; if negative, means the cookie is not stored; if zero,
|
||||
* deletes the cookie
|
||||
* @see #getMaxAge
|
||||
*/
|
||||
public void setMaxAge(int expiry) {
|
||||
maxAge = expiry;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum age of the cookie, specified in seconds, By default,
|
||||
* <code>-1</code> indicating the cookie will persist until browser
|
||||
* shutdown.
|
||||
*
|
||||
* @return an integer specifying the maximum age of the cookie in seconds; if
|
||||
* negative, means the cookie persists until browser shutdown
|
||||
* @see #setMaxAge
|
||||
*/
|
||||
public int getMaxAge() {
|
||||
return maxAge;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies a path for the cookie to which the client should return the
|
||||
* cookie.
|
||||
* <p>
|
||||
* The cookie is visible to all the pages in the directory you specify, and
|
||||
* all the pages in that directory's subdirectories. A cookie's path must
|
||||
* include the servlet that set the cookie, for example, <i>/catalog</i>,
|
||||
* which makes the cookie visible to all directories on the server under
|
||||
* <i>/catalog</i>.
|
||||
* <p>
|
||||
* Consult RFC 2109 (available on the Internet) for more information on
|
||||
* setting path names for cookies.
|
||||
*
|
||||
* @param uri
|
||||
* a <code>String</code> specifying a path
|
||||
* @see #getPath
|
||||
*/
|
||||
public void setPath(String uri) {
|
||||
path = uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the path on the server to which the browser returns this cookie.
|
||||
* The cookie is visible to all subpaths on the server.
|
||||
*
|
||||
* @return a <code>String</code> specifying a path that contains a servlet
|
||||
* name, for example, <i>/catalog</i>
|
||||
* @see #setPath
|
||||
*/
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates to the browser whether the cookie should only be sent using a
|
||||
* secure protocol, such as HTTPS or SSL.
|
||||
* <p>
|
||||
* The default value is <code>false</code>.
|
||||
*
|
||||
* @param flag
|
||||
* if <code>true</code>, sends the cookie from the browser to the
|
||||
* server only when using a secure protocol; if
|
||||
* <code>false</code>, sent on any protocol
|
||||
* @see #getSecure
|
||||
*/
|
||||
public void setSecure(boolean flag) {
|
||||
secure = flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if the browser is sending cookies only over a
|
||||
* secure protocol, or <code>false</code> if the browser can send cookies
|
||||
* using any protocol.
|
||||
*
|
||||
* @return <code>true</code> if the browser uses a secure protocol;
|
||||
* otherwise, <code>true</code>
|
||||
* @see #setSecure
|
||||
*/
|
||||
public boolean getSecure() {
|
||||
return secure;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the cookie. The name cannot be changed after
|
||||
* creation.
|
||||
*
|
||||
* @return a <code>String</code> specifying the cookie's name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigns a new value to a cookie after the cookie is created. If you use a
|
||||
* binary value, you may want to use BASE64 encoding.
|
||||
* <p>
|
||||
* With Version 0 cookies, values should not contain white space, brackets,
|
||||
* parentheses, equals signs, commas, double quotes, slashes, question
|
||||
* marks, at signs, colons, and semicolons. Empty values may not behave the
|
||||
* same way on all browsers.
|
||||
*
|
||||
* @param newValue
|
||||
* a <code>String</code> specifying the new value
|
||||
* @see #getValue
|
||||
* @see Cookie
|
||||
*/
|
||||
public void setValue(String newValue) {
|
||||
value = newValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the cookie.
|
||||
*
|
||||
* @return a <code>String</code> containing the cookie's present value
|
||||
* @see #setValue
|
||||
* @see Cookie
|
||||
*/
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the version of the protocol this cookie complies with. Version 1
|
||||
* complies with RFC 2109, and version 0 complies with the original cookie
|
||||
* specification drafted by Netscape. Cookies provided by a browser use and
|
||||
* identify the browser's cookie version.
|
||||
*
|
||||
* @return 0 if the cookie complies with the original Netscape specification;
|
||||
* 1 if the cookie complies with RFC 2109
|
||||
* @see #setVersion
|
||||
*/
|
||||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the version of the cookie protocol this cookie complies with.
|
||||
* Version 0 complies with the original Netscape cookie specification.
|
||||
* Version 1 complies with RFC 2109.
|
||||
* <p>
|
||||
* Since RFC 2109 is still somewhat new, consider version 1 as experimental;
|
||||
* do not use it yet on production sites.
|
||||
*
|
||||
* @param v
|
||||
* 0 if the cookie should comply with the original Netscape
|
||||
* specification; 1 if the cookie should comply with RFC 2109
|
||||
* @see #getVersion
|
||||
*/
|
||||
public void setVersion(int v) {
|
||||
version = v;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides the standard <code>java.lang.Object.clone</code> method to
|
||||
* return a copy of this cookie.
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
try {
|
||||
return super.clone();
|
||||
} catch (CloneNotSupportedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the flag that controls if this cookie will be hidden from scripts on
|
||||
* the client side.
|
||||
*
|
||||
* @param httpOnly The new value of the flag
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
public void setHttpOnly(boolean httpOnly) {
|
||||
this.httpOnly = httpOnly;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the flag that controls if this cookie will be hidden from scripts on
|
||||
* the client side.
|
||||
*
|
||||
* @return <code>true</code> if the cookie is hidden from scripts, else
|
||||
* <code>false</code>
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
public boolean isHttpOnly() {
|
||||
return httpOnly;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class CookieNameValidator {
|
||||
private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
|
||||
protected static final ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
|
||||
|
||||
protected final BitSet allowed;
|
||||
|
||||
protected CookieNameValidator(String separators) {
|
||||
allowed = new BitSet(128);
|
||||
allowed.set(0x20, 0x7f); // any CHAR except CTLs or separators
|
||||
for (int i = 0; i < separators.length(); i++) {
|
||||
char ch = separators.charAt(i);
|
||||
allowed.clear(ch);
|
||||
}
|
||||
}
|
||||
|
||||
void validate(String name) {
|
||||
if (name == null || name.length() == 0) {
|
||||
throw new IllegalArgumentException(lStrings.getString("err.cookie_name_blank"));
|
||||
}
|
||||
if (!isToken(name)) {
|
||||
String errMsg = lStrings.getString("err.cookie_name_is_token");
|
||||
throw new IllegalArgumentException(MessageFormat.format(errMsg, name));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isToken(String possibleToken) {
|
||||
int len = possibleToken.length();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
char c = possibleToken.charAt(i);
|
||||
if (!allowed.get(c)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class RFC6265Validator extends CookieNameValidator {
|
||||
private static final String RFC2616_SEPARATORS = "()<>@,;:\\\"/[]?={} \t";
|
||||
|
||||
RFC6265Validator() {
|
||||
super(RFC2616_SEPARATORS);
|
||||
}
|
||||
}
|
||||
|
||||
class RFC2109Validator extends RFC6265Validator {
|
||||
RFC2109Validator() {
|
||||
// special treatment to allow for FWD_SLASH_IS_SEPARATOR property
|
||||
boolean allowSlash;
|
||||
String prop = System.getProperty("org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR");
|
||||
if (prop != null) {
|
||||
allowSlash = !Boolean.parseBoolean(prop);
|
||||
} else {
|
||||
allowSlash = !Boolean.getBoolean("org.apache.catalina.STRICT_SERVLET_COMPLIANCE");
|
||||
}
|
||||
if (allowSlash) {
|
||||
allowed.set('/');
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void validate(String name) {
|
||||
super.validate(name);
|
||||
if (name.charAt(0) == '$') {
|
||||
String errMsg = lStrings.getString("err.cookie_name_is_token");
|
||||
throw new IllegalArgumentException(MessageFormat.format(errMsg, name));
|
||||
}
|
||||
}
|
||||
}
|
||||
908
java/javax/servlet/http/HttpServlet.java
Normal file
908
java/javax/servlet/http/HttpServlet.java
Normal file
File diff suppressed because it is too large
Load Diff
537
java/javax/servlet/http/HttpServletRequest.java
Normal file
537
java/javax/servlet/http/HttpServletRequest.java
Normal file
File diff suppressed because it is too large
Load Diff
378
java/javax/servlet/http/HttpServletRequestWrapper.java
Normal file
378
java/javax/servlet/http/HttpServletRequestWrapper.java
Normal file
@@ -0,0 +1,378 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Enumeration;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequestWrapper;
|
||||
|
||||
/**
|
||||
* Provides a convenient implementation of the HttpServletRequest interface that
|
||||
* can be subclassed by developers wishing to adapt the request to a Servlet.
|
||||
* This class implements the Wrapper or Decorator pattern. Methods default to
|
||||
* calling through to the wrapped request object.
|
||||
*
|
||||
* @see javax.servlet.http.HttpServletRequest
|
||||
* @since v 2.3
|
||||
*/
|
||||
public class HttpServletRequestWrapper extends ServletRequestWrapper implements
|
||||
HttpServletRequest {
|
||||
|
||||
/**
|
||||
* Constructs a request object wrapping the given request.
|
||||
*
|
||||
* @param request The request to wrap
|
||||
*
|
||||
* @throws java.lang.IllegalArgumentException
|
||||
* if the request is null
|
||||
*/
|
||||
public HttpServletRequestWrapper(HttpServletRequest request) {
|
||||
super(request);
|
||||
}
|
||||
|
||||
private HttpServletRequest _getHttpServletRequest() {
|
||||
return (HttpServletRequest) super.getRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getAuthType() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getAuthType() {
|
||||
return this._getHttpServletRequest().getAuthType();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getCookies() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public Cookie[] getCookies() {
|
||||
return this._getHttpServletRequest().getCookies();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getDateHeader(String
|
||||
* name) on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public long getDateHeader(String name) {
|
||||
return this._getHttpServletRequest().getDateHeader(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getHeader(String name)
|
||||
* on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getHeader(String name) {
|
||||
return this._getHttpServletRequest().getHeader(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getHeaders(String name)
|
||||
* on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public Enumeration<String> getHeaders(String name) {
|
||||
return this._getHttpServletRequest().getHeaders(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getHeaderNames() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public Enumeration<String> getHeaderNames() {
|
||||
return this._getHttpServletRequest().getHeaderNames();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getIntHeader(String
|
||||
* name) on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public int getIntHeader(String name) {
|
||||
return this._getHttpServletRequest().getIntHeader(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getMethod() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getMethod() {
|
||||
return this._getHttpServletRequest().getMethod();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getPathInfo() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getPathInfo() {
|
||||
return this._getHttpServletRequest().getPathInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getPathTranslated() on
|
||||
* the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getPathTranslated() {
|
||||
return this._getHttpServletRequest().getPathTranslated();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getContextPath() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getContextPath() {
|
||||
return this._getHttpServletRequest().getContextPath();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getQueryString() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getQueryString() {
|
||||
return this._getHttpServletRequest().getQueryString();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getRemoteUser() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getRemoteUser() {
|
||||
return this._getHttpServletRequest().getRemoteUser();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return isUserInRole(String
|
||||
* role) on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public boolean isUserInRole(String role) {
|
||||
return this._getHttpServletRequest().isUserInRole(role);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getUserPrincipal() on
|
||||
* the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public java.security.Principal getUserPrincipal() {
|
||||
return this._getHttpServletRequest().getUserPrincipal();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getRequestedSessionId()
|
||||
* on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getRequestedSessionId() {
|
||||
return this._getHttpServletRequest().getRequestedSessionId();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getRequestURI() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getRequestURI() {
|
||||
return this._getHttpServletRequest().getRequestURI();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getRequestURL() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public StringBuffer getRequestURL() {
|
||||
return this._getHttpServletRequest().getRequestURL();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getServletPath() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String getServletPath() {
|
||||
return this._getHttpServletRequest().getServletPath();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getSession(boolean
|
||||
* create) on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public HttpSession getSession(boolean create) {
|
||||
return this._getHttpServletRequest().getSession(create);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return getSession() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public HttpSession getSession() {
|
||||
return this._getHttpServletRequest().getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call changeSessionId() on the
|
||||
* wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public String changeSessionId() {
|
||||
return this._getHttpServletRequest().changeSessionId();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return
|
||||
* isRequestedSessionIdValid() on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public boolean isRequestedSessionIdValid() {
|
||||
return this._getHttpServletRequest().isRequestedSessionIdValid();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return
|
||||
* isRequestedSessionIdFromCookie() on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public boolean isRequestedSessionIdFromCookie() {
|
||||
return this._getHttpServletRequest().isRequestedSessionIdFromCookie();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return
|
||||
* isRequestedSessionIdFromURL() on the wrapped request object.
|
||||
*/
|
||||
@Override
|
||||
public boolean isRequestedSessionIdFromURL() {
|
||||
return this._getHttpServletRequest().isRequestedSessionIdFromURL();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return
|
||||
* isRequestedSessionIdFromUrl() on the wrapped request object.
|
||||
*
|
||||
* @deprecated As of Version 3.0 of the Java Servlet API
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public boolean isRequestedSessionIdFromUrl() {
|
||||
return this._getHttpServletRequest().isRequestedSessionIdFromUrl();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default behavior of this method is to return
|
||||
* {@link HttpServletRequest#authenticate(HttpServletResponse)}
|
||||
* on the wrapped request object.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public boolean authenticate(HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
return this._getHttpServletRequest().authenticate(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default behavior of this method is to return
|
||||
* {@link HttpServletRequest#login(String, String)}
|
||||
* on the wrapped request object.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public void login(String username, String password) throws ServletException {
|
||||
this._getHttpServletRequest().login(username, password);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default behavior of this method is to return
|
||||
* {@link HttpServletRequest#logout()}
|
||||
* on the wrapped request object.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public void logout() throws ServletException {
|
||||
this._getHttpServletRequest().logout();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default behavior of this method is to return
|
||||
* {@link HttpServletRequest#getParts()}
|
||||
* on the wrapped request object.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public Collection<Part> getParts() throws IOException,
|
||||
ServletException {
|
||||
return this._getHttpServletRequest().getParts();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default behavior of this method is to return
|
||||
* {@link HttpServletRequest#getPart(String)}
|
||||
* on the wrapped request object.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public Part getPart(String name) throws IOException,
|
||||
ServletException {
|
||||
return this._getHttpServletRequest().getPart(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default behavior of this method is to return
|
||||
* {@link HttpServletRequest#upgrade(Class)} on the wrapped request object.
|
||||
*
|
||||
* @since Servlet 3.1
|
||||
*/
|
||||
@Override
|
||||
public <T extends HttpUpgradeHandler> T upgrade(
|
||||
Class<T> httpUpgradeHandlerClass) throws IOException, ServletException {
|
||||
return this._getHttpServletRequest().upgrade(httpUpgradeHandlerClass);
|
||||
}
|
||||
}
|
||||
609
java/javax/servlet/http/HttpServletResponse.java
Normal file
609
java/javax/servlet/http/HttpServletResponse.java
Normal file
File diff suppressed because it is too large
Load Diff
272
java/javax/servlet/http/HttpServletResponseWrapper.java
Normal file
272
java/javax/servlet/http/HttpServletResponseWrapper.java
Normal file
@@ -0,0 +1,272 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
|
||||
import javax.servlet.ServletResponseWrapper;
|
||||
|
||||
/**
|
||||
* Provides a convenient implementation of the HttpServletResponse interface
|
||||
* that can be subclassed by developers wishing to adapt the response from a
|
||||
* Servlet. This class implements the Wrapper or Decorator pattern. Methods
|
||||
* default to calling through to the wrapped response object.
|
||||
*
|
||||
* @since v 2.3
|
||||
* @see javax.servlet.http.HttpServletResponse
|
||||
*/
|
||||
public class HttpServletResponseWrapper extends ServletResponseWrapper
|
||||
implements HttpServletResponse {
|
||||
|
||||
/**
|
||||
* Constructs a response adaptor wrapping the given response.
|
||||
*
|
||||
* @param response The response to be wrapped
|
||||
*
|
||||
* @throws java.lang.IllegalArgumentException
|
||||
* if the response is null
|
||||
*/
|
||||
public HttpServletResponseWrapper(HttpServletResponse response) {
|
||||
super(response);
|
||||
}
|
||||
|
||||
private HttpServletResponse _getHttpServletResponse() {
|
||||
return (HttpServletResponse) super.getResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call addCookie(Cookie cookie)
|
||||
* on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void addCookie(Cookie cookie) {
|
||||
this._getHttpServletResponse().addCookie(cookie);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call containsHeader(String
|
||||
* name) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public boolean containsHeader(String name) {
|
||||
return this._getHttpServletResponse().containsHeader(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call encodeURL(String url) on
|
||||
* the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public String encodeURL(String url) {
|
||||
return this._getHttpServletResponse().encodeURL(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return encodeRedirectURL(String
|
||||
* url) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public String encodeRedirectURL(String url) {
|
||||
return this._getHttpServletResponse().encodeRedirectURL(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call encodeUrl(String url) on
|
||||
* the wrapped response object.
|
||||
*
|
||||
* @deprecated As of Version 3.0 of the Java Servlet API
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public String encodeUrl(String url) {
|
||||
return this._getHttpServletResponse().encodeUrl(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return encodeRedirectUrl(String
|
||||
* url) on the wrapped response object.
|
||||
*
|
||||
* @deprecated As of Version 3.0 of the Java Servlet API
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public String encodeRedirectUrl(String url) {
|
||||
return this._getHttpServletResponse().encodeRedirectUrl(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call sendError(int sc, String
|
||||
* msg) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void sendError(int sc, String msg) throws IOException {
|
||||
this._getHttpServletResponse().sendError(sc, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call sendError(int sc) on the
|
||||
* wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void sendError(int sc) throws IOException {
|
||||
this._getHttpServletResponse().sendError(sc);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return sendRedirect(String
|
||||
* location) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void sendRedirect(String location) throws IOException {
|
||||
this._getHttpServletResponse().sendRedirect(location);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call setDateHeader(String name,
|
||||
* long date) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void setDateHeader(String name, long date) {
|
||||
this._getHttpServletResponse().setDateHeader(name, date);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call addDateHeader(String name,
|
||||
* long date) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void addDateHeader(String name, long date) {
|
||||
this._getHttpServletResponse().addDateHeader(name, date);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return setHeader(String name,
|
||||
* String value) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void setHeader(String name, String value) {
|
||||
this._getHttpServletResponse().setHeader(name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to return addHeader(String name,
|
||||
* String value) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void addHeader(String name, String value) {
|
||||
this._getHttpServletResponse().addHeader(name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call setIntHeader(String name,
|
||||
* int value) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void setIntHeader(String name, int value) {
|
||||
this._getHttpServletResponse().setIntHeader(name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call addIntHeader(String name,
|
||||
* int value) on the wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void addIntHeader(String name, int value) {
|
||||
this._getHttpServletResponse().addIntHeader(name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call setStatus(int sc) on the
|
||||
* wrapped response object.
|
||||
*/
|
||||
@Override
|
||||
public void setStatus(int sc) {
|
||||
this._getHttpServletResponse().setStatus(sc);
|
||||
}
|
||||
|
||||
/**
|
||||
* The default behavior of this method is to call setStatus(int sc, String
|
||||
* sm) on the wrapped response object.
|
||||
*
|
||||
* @deprecated As of Version 3.0 of the Java Servlet API
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public void setStatus(int sc, String sm) {
|
||||
this._getHttpServletResponse().setStatus(sc, sm);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default implementation is to call
|
||||
* {@link HttpServletResponse#getStatus()}
|
||||
* on the wrapped {@link HttpServletResponse}.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public int getStatus() {
|
||||
return this._getHttpServletResponse().getStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default implementation is to call
|
||||
* {@link HttpServletResponse#getHeader(String)}
|
||||
* on the wrapped {@link HttpServletResponse}.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public String getHeader(String name) {
|
||||
return this._getHttpServletResponse().getHeader(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default implementation is to call
|
||||
* {@link HttpServletResponse#getHeaders(String)}
|
||||
* on the wrapped {@link HttpServletResponse}.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public Collection<String> getHeaders(String name) {
|
||||
return this._getHttpServletResponse().getHeaders(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* <p>
|
||||
* The default implementation is to call
|
||||
* {@link HttpServletResponse#getHeaderNames()}
|
||||
* on the wrapped {@link HttpServletResponse}.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
@Override
|
||||
public Collection<String> getHeaderNames() {
|
||||
return this._getHttpServletResponse().getHeaderNames();
|
||||
}
|
||||
}
|
||||
286
java/javax/servlet/http/HttpSession.java
Normal file
286
java/javax/servlet/http/HttpSession.java
Normal file
@@ -0,0 +1,286 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.Enumeration;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
||||
/**
|
||||
* Provides a way to identify a user across more than one page request or visit
|
||||
* to a Web site and to store information about that user.
|
||||
* <p>
|
||||
* The servlet container uses this interface to create a session between an HTTP
|
||||
* client and an HTTP server. The session persists for a specified time period,
|
||||
* across more than one connection or page request from the user. A session
|
||||
* usually corresponds to one user, who may visit a site many times. The server
|
||||
* can maintain a session in many ways such as using cookies or rewriting URLs.
|
||||
* <p>
|
||||
* This interface allows servlets to
|
||||
* <ul>
|
||||
* <li>View and manipulate information about a session, such as the session
|
||||
* identifier, creation time, and last accessed time
|
||||
* <li>Bind objects to sessions, allowing user information to persist across
|
||||
* multiple user connections
|
||||
* </ul>
|
||||
* <p>
|
||||
* When an application stores an object in or removes an object from a session,
|
||||
* the session checks whether the object implements
|
||||
* {@link HttpSessionBindingListener}. If it does, the servlet notifies the
|
||||
* object that it has been bound to or unbound from the session. Notifications
|
||||
* are sent after the binding methods complete. For session that are invalidated
|
||||
* or expire, notifications are sent after the session has been invalidated or
|
||||
* expired.
|
||||
* <p>
|
||||
* When container migrates a session between VMs in a distributed container
|
||||
* setting, all session attributes implementing the
|
||||
* {@link HttpSessionActivationListener} interface are notified.
|
||||
* <p>
|
||||
* A servlet should be able to handle cases in which the client does not choose
|
||||
* to join a session, such as when cookies are intentionally turned off. Until
|
||||
* the client joins the session, <code>isNew</code> returns <code>true</code>.
|
||||
* If the client chooses not to join the session, <code>getSession</code> will
|
||||
* return a different session on each request, and <code>isNew</code> will
|
||||
* always return <code>true</code>.
|
||||
* <p>
|
||||
* Session information is scoped only to the current web application (
|
||||
* <code>ServletContext</code>), so information stored in one context will not
|
||||
* be directly visible in another.
|
||||
*
|
||||
* @see HttpSessionBindingListener
|
||||
*/
|
||||
public interface HttpSession {
|
||||
|
||||
/**
|
||||
* Returns the time when this session was created, measured in milliseconds
|
||||
* since midnight January 1, 1970 GMT.
|
||||
*
|
||||
* @return a <code>long</code> specifying when this session was created,
|
||||
* expressed in milliseconds since 1/1/1970 GMT
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public long getCreationTime();
|
||||
|
||||
/**
|
||||
* Returns a string containing the unique identifier assigned to this
|
||||
* session. The identifier is assigned by the servlet container and is
|
||||
* implementation dependent.
|
||||
*
|
||||
* @return a string specifying the identifier assigned to this session
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public String getId();
|
||||
|
||||
/**
|
||||
* Returns the last time the client sent a request associated with this
|
||||
* session, as the number of milliseconds since midnight January 1, 1970
|
||||
* GMT, and marked by the time the container received the request.
|
||||
* <p>
|
||||
* Actions that your application takes, such as getting or setting a value
|
||||
* associated with the session, do not affect the access time.
|
||||
*
|
||||
* @return a <code>long</code> representing the last time the client sent a
|
||||
* request associated with this session, expressed in milliseconds
|
||||
* since 1/1/1970 GMT
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public long getLastAccessedTime();
|
||||
|
||||
/**
|
||||
* Returns the ServletContext to which this session belongs.
|
||||
*
|
||||
* @return The ServletContext object for the web application
|
||||
* @since 2.3
|
||||
*/
|
||||
public ServletContext getServletContext();
|
||||
|
||||
/**
|
||||
* Specifies the time, in seconds, between client requests before the
|
||||
* servlet container will invalidate this session. A zero or negative time
|
||||
* indicates that the session should never timeout.
|
||||
*
|
||||
* @param interval
|
||||
* An integer specifying the number of seconds
|
||||
*/
|
||||
public void setMaxInactiveInterval(int interval);
|
||||
|
||||
/**
|
||||
* Returns the maximum time interval, in seconds, that the servlet container
|
||||
* will keep this session open between client accesses. After this interval,
|
||||
* the servlet container will invalidate the session. The maximum time
|
||||
* interval can be set with the <code>setMaxInactiveInterval</code> method.
|
||||
* A zero or negative time indicates that the session should never timeout.
|
||||
*
|
||||
* @return an integer specifying the number of seconds this session remains
|
||||
* open between client requests
|
||||
* @see #setMaxInactiveInterval
|
||||
*/
|
||||
public int getMaxInactiveInterval();
|
||||
|
||||
/**
|
||||
* Do not use.
|
||||
* @return A dummy implementation of HttpSessionContext
|
||||
* @deprecated As of Version 2.1, this method is deprecated and has no
|
||||
* replacement. It will be removed in a future version of the
|
||||
* Java Servlet API.
|
||||
*/
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public HttpSessionContext getSessionContext();
|
||||
|
||||
/**
|
||||
* Returns the object bound with the specified name in this session, or
|
||||
* <code>null</code> if no object is bound under the name.
|
||||
*
|
||||
* @param name
|
||||
* a string specifying the name of the object
|
||||
* @return the object with the specified name
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public Object getAttribute(String name);
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* a string specifying the name of the object
|
||||
* @return the object with the specified name
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
* @deprecated As of Version 2.2, this method is replaced by
|
||||
* {@link #getAttribute}.
|
||||
*/
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public Object getValue(String name);
|
||||
|
||||
/**
|
||||
* Returns an <code>Enumeration</code> of <code>String</code> objects
|
||||
* containing the names of all the objects bound to this session.
|
||||
*
|
||||
* @return an <code>Enumeration</code> of <code>String</code> objects
|
||||
* specifying the names of all the objects bound to this session
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public Enumeration<String> getAttributeNames();
|
||||
|
||||
/**
|
||||
* @return an array of <code>String</code> objects specifying the names of
|
||||
* all the objects bound to this session
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
* @deprecated As of Version 2.2, this method is replaced by
|
||||
* {@link #getAttributeNames}
|
||||
*/
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public String[] getValueNames();
|
||||
|
||||
/**
|
||||
* Binds an object to this session, using the name specified. If an object
|
||||
* of the same name is already bound to the session, the object is replaced.
|
||||
* <p>
|
||||
* After this method executes, and if the new object implements
|
||||
* <code>HttpSessionBindingListener</code>, the container calls
|
||||
* <code>HttpSessionBindingListener.valueBound</code>. The container then
|
||||
* notifies any <code>HttpSessionAttributeListener</code>s in the web
|
||||
* application.
|
||||
* <p>
|
||||
* If an object was already bound to this session of this name that
|
||||
* implements <code>HttpSessionBindingListener</code>, its
|
||||
* <code>HttpSessionBindingListener.valueUnbound</code> method is called.
|
||||
* <p>
|
||||
* If the value passed in is null, this has the same effect as calling
|
||||
* <code>removeAttribute()</code>.
|
||||
*
|
||||
* @param name
|
||||
* the name to which the object is bound; cannot be null
|
||||
* @param value
|
||||
* the object to be bound
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public void setAttribute(String name, Object value);
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* the name to which the object is bound; cannot be null
|
||||
* @param value
|
||||
* the object to be bound; cannot be null
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
* @deprecated As of Version 2.2, this method is replaced by
|
||||
* {@link #setAttribute}
|
||||
*/
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public void putValue(String name, Object value);
|
||||
|
||||
/**
|
||||
* Removes the object bound with the specified name from this session. If
|
||||
* the session does not have an object bound with the specified name, this
|
||||
* method does nothing.
|
||||
* <p>
|
||||
* After this method executes, and if the object implements
|
||||
* <code>HttpSessionBindingListener</code>, the container calls
|
||||
* <code>HttpSessionBindingListener.valueUnbound</code>. The container then
|
||||
* notifies any <code>HttpSessionAttributeListener</code>s in the web
|
||||
* application.
|
||||
*
|
||||
* @param name
|
||||
* the name of the object to remove from this session
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
*/
|
||||
public void removeAttribute(String name);
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* the name of the object to remove from this session
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an invalidated session
|
||||
* @deprecated As of Version 2.2, this method is replaced by
|
||||
* {@link #removeAttribute}
|
||||
*/
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public void removeValue(String name);
|
||||
|
||||
/**
|
||||
* Invalidates this session then unbinds any objects bound to it.
|
||||
*
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an already invalidated session
|
||||
*/
|
||||
public void invalidate();
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if the client does not yet know about the
|
||||
* session or if the client chooses not to join the session. For example, if
|
||||
* the server used only cookie-based sessions, and the client had disabled
|
||||
* the use of cookies, then a session would be new on each request.
|
||||
*
|
||||
* @return <code>true</code> if the server has created a session, but the
|
||||
* client has not yet joined
|
||||
* @exception IllegalStateException
|
||||
* if this method is called on an already invalidated session
|
||||
*/
|
||||
public boolean isNew();
|
||||
}
|
||||
46
java/javax/servlet/http/HttpSessionActivationListener.java
Normal file
46
java/javax/servlet/http/HttpSessionActivationListener.java
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* Objects that are bound to a session may listen to container events notifying
|
||||
* them that sessions will be passivated and that session will be activated. A
|
||||
* container that migrates session between VMs or persists sessions is required
|
||||
* to notify all attributes bound to sessions implementing
|
||||
* HttpSessionActivationListener.
|
||||
*
|
||||
* @since 2.3
|
||||
*/
|
||||
public interface HttpSessionActivationListener extends EventListener {
|
||||
|
||||
/**
|
||||
* Notification that the session is about to be passivated.
|
||||
*
|
||||
* @param se Information about the session this is about to be passivated
|
||||
*/
|
||||
public void sessionWillPassivate(HttpSessionEvent se);
|
||||
|
||||
/**
|
||||
* Notification that the session has just been activated.
|
||||
*
|
||||
* @param se Information about the session this has just been activated
|
||||
*/
|
||||
public void sessionDidActivate(HttpSessionEvent se);
|
||||
}
|
||||
|
||||
52
java/javax/servlet/http/HttpSessionAttributeListener.java
Normal file
52
java/javax/servlet/http/HttpSessionAttributeListener.java
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* This listener interface can be implemented in order to get notifications of
|
||||
* changes to the attribute lists of sessions within this web application.
|
||||
*
|
||||
* @since v 2.3
|
||||
*/
|
||||
public interface HttpSessionAttributeListener extends EventListener {
|
||||
|
||||
/**
|
||||
* Notification that an attribute has been added to a session. Called after
|
||||
* the attribute is added.
|
||||
*
|
||||
* @param se Information about the added attribute
|
||||
*/
|
||||
public void attributeAdded(HttpSessionBindingEvent se);
|
||||
|
||||
/**
|
||||
* Notification that an attribute has been removed from a session. Called
|
||||
* after the attribute is removed.
|
||||
*
|
||||
* @param se Information about the removed attribute
|
||||
*/
|
||||
public void attributeRemoved(HttpSessionBindingEvent se);
|
||||
|
||||
/**
|
||||
* Notification that an attribute has been replaced in a session. Called
|
||||
* after the attribute is replaced.
|
||||
*
|
||||
* @param se Information about the replaced attribute
|
||||
*/
|
||||
public void attributeReplaced(HttpSessionBindingEvent se);
|
||||
}
|
||||
119
java/javax/servlet/http/HttpSessionBindingEvent.java
Normal file
119
java/javax/servlet/http/HttpSessionBindingEvent.java
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
/**
|
||||
* Events of this type are either sent to an object that implements
|
||||
* {@link HttpSessionBindingListener} when it is bound or unbound from a
|
||||
* session, or to a {@link HttpSessionAttributeListener} that has been
|
||||
* configured in the deployment descriptor when any attribute is bound, unbound
|
||||
* or replaced in a session.
|
||||
* <p>
|
||||
* The session binds the object by a call to
|
||||
* <code>HttpSession.setAttribute</code> and unbinds the object by a call to
|
||||
* <code>HttpSession.removeAttribute</code>.
|
||||
*
|
||||
* @see HttpSession
|
||||
* @see HttpSessionBindingListener
|
||||
* @see HttpSessionAttributeListener
|
||||
*/
|
||||
public class HttpSessionBindingEvent extends HttpSessionEvent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/* The name to which the object is being bound or unbound */
|
||||
private final String name;
|
||||
|
||||
/* The object is being bound or unbound */
|
||||
private final Object value;
|
||||
|
||||
/**
|
||||
* Constructs an event that notifies an object that it has been bound to or
|
||||
* unbound from a session. To receive the event, the object must implement
|
||||
* {@link HttpSessionBindingListener}.
|
||||
*
|
||||
* @param session
|
||||
* the session to which the object is bound or unbound
|
||||
* @param name
|
||||
* the name with which the object is bound or unbound
|
||||
* @see #getName()
|
||||
* @see #getSession()
|
||||
*/
|
||||
public HttpSessionBindingEvent(HttpSession session, String name) {
|
||||
super(session);
|
||||
this.name = name;
|
||||
this.value = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs an event that notifies an object that it has been bound to or
|
||||
* unbound from a session. To receive the event, the object must implement
|
||||
* {@link HttpSessionBindingListener}.
|
||||
*
|
||||
* @param session
|
||||
* the session to which the object is bound or unbound
|
||||
* @param name
|
||||
* the name with which the object is bound or unbound
|
||||
* @param value
|
||||
* the object that is bound or unbound
|
||||
* @see #getName()
|
||||
* @see #getSession()
|
||||
* @see #getValue()
|
||||
*/
|
||||
public HttpSessionBindingEvent(HttpSession session, String name,
|
||||
Object value) {
|
||||
super(session);
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the session that changed.
|
||||
* @return The session that changed
|
||||
*/
|
||||
@Override
|
||||
public HttpSession getSession() {
|
||||
return super.getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name with which the attribute is bound to or unbound from the
|
||||
* session.
|
||||
*
|
||||
* @return a string specifying the name with which the object is bound to or
|
||||
* unbound from the session
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the attribute that has been added, removed or
|
||||
* replaced.
|
||||
*
|
||||
* @return If the attribute was added (or bound), this is the value of the
|
||||
* attribute. If the attribute was removed (or unbound), this is the
|
||||
* value of the removed attribute. If the attribute was replaced,
|
||||
* this is the old value of the attribute.
|
||||
*
|
||||
* @since 2.3
|
||||
*/
|
||||
public Object getValue() {
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
53
java/javax/servlet/http/HttpSessionBindingListener.java
Normal file
53
java/javax/servlet/http/HttpSessionBindingListener.java
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* Causes an object to be notified when it is bound to or unbound from a
|
||||
* session. The object is notified by an {@link HttpSessionBindingEvent} object.
|
||||
* This may be as a result of a servlet programmer explicitly unbinding an
|
||||
* attribute from a session, due to a session being invalidated, or due to a
|
||||
* session timing out.
|
||||
*
|
||||
* @see HttpSession
|
||||
* @see HttpSessionBindingEvent
|
||||
*/
|
||||
public interface HttpSessionBindingListener extends EventListener {
|
||||
|
||||
/**
|
||||
* Notifies the object that it is being bound to a session and identifies
|
||||
* the session.
|
||||
*
|
||||
* @param event
|
||||
* the event that identifies the session
|
||||
* @see #valueUnbound
|
||||
*/
|
||||
public void valueBound(HttpSessionBindingEvent event);
|
||||
|
||||
/**
|
||||
* Notifies the object that it is being unbound from a session and
|
||||
* identifies the session.
|
||||
*
|
||||
* @param event
|
||||
* the event that identifies the session
|
||||
* @see #valueBound
|
||||
*/
|
||||
public void valueUnbound(HttpSessionBindingEvent event);
|
||||
}
|
||||
55
java/javax/servlet/http/HttpSessionContext.java
Normal file
55
java/javax/servlet/http/HttpSessionContext.java
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.Enumeration;
|
||||
|
||||
/**
|
||||
* Do not use.
|
||||
* @deprecated As of Java(tm) Servlet API 2.1 for security reasons, with no
|
||||
* replacement. This interface will be removed in a future version
|
||||
* of this API.
|
||||
* @see HttpSession
|
||||
* @see HttpSessionBindingEvent
|
||||
* @see HttpSessionBindingListener
|
||||
*/
|
||||
@SuppressWarnings("dep-ann")
|
||||
// Spec API does not use @Deprecated
|
||||
public interface HttpSessionContext {
|
||||
|
||||
/**
|
||||
* Do not use.
|
||||
* @param sessionId Ignored
|
||||
* @return Always <code>null</code>
|
||||
* @deprecated As of Java Servlet API 2.1 with no replacement. This method
|
||||
* must return null and will be removed in a future version of
|
||||
* this API.
|
||||
*/
|
||||
// Spec API does not use @Deprecated
|
||||
public HttpSession getSession(String sessionId);
|
||||
|
||||
/**
|
||||
* Do not use.
|
||||
* @return Always an empty Enumeration
|
||||
* @deprecated As of Java Servlet API 2.1 with no replacement. This method
|
||||
* must return an empty <code>Enumeration</code> and will be
|
||||
* removed in a future version of this API.
|
||||
*/
|
||||
// Spec API does not use @Deprecated
|
||||
public Enumeration<String> getIds();
|
||||
}
|
||||
45
java/javax/servlet/http/HttpSessionEvent.java
Normal file
45
java/javax/servlet/http/HttpSessionEvent.java
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
/**
|
||||
* This is the class representing event notifications for changes to sessions
|
||||
* within a web application.
|
||||
*
|
||||
* @since v 2.3
|
||||
*/
|
||||
public class HttpSessionEvent extends java.util.EventObject {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Construct a session event from the given source.
|
||||
*
|
||||
* @param source The HTTP session where the change took place
|
||||
*/
|
||||
public HttpSessionEvent(HttpSession source) {
|
||||
super(source);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the session that changed.
|
||||
*
|
||||
* @return The session that changed
|
||||
*/
|
||||
public HttpSession getSession() {
|
||||
return (HttpSession) super.getSource();
|
||||
}
|
||||
}
|
||||
41
java/javax/servlet/http/HttpSessionIdListener.java
Normal file
41
java/javax/servlet/http/HttpSessionIdListener.java
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* Implementations of this interface are notified when an {@link HttpSession}'s
|
||||
* ID changes. To receive notification events, the implementation class must be
|
||||
* configured in the deployment descriptor for the web application, annotated
|
||||
* with {@link javax.servlet.annotation.WebListener} or registered by calling an
|
||||
* addListener method on the {@link javax.servlet.ServletContext}.
|
||||
*
|
||||
* @see HttpSessionEvent
|
||||
* @see HttpServletRequest#changeSessionId()
|
||||
* @since Servlet 3.1
|
||||
*/
|
||||
public interface HttpSessionIdListener extends EventListener {
|
||||
|
||||
/**
|
||||
* Notification that a session ID has been changed.
|
||||
*
|
||||
* @param se the notification event
|
||||
* @param oldSessionId the old session ID
|
||||
*/
|
||||
public void sessionIdChanged(HttpSessionEvent se, String oldSessionId);
|
||||
}
|
||||
47
java/javax/servlet/http/HttpSessionListener.java
Normal file
47
java/javax/servlet/http/HttpSessionListener.java
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.util.EventListener;
|
||||
|
||||
/**
|
||||
* Implementations of this interface are notified of changes to the list of
|
||||
* active sessions in a web application. To receive notification events, the
|
||||
* implementation class must be configured in the deployment descriptor for the
|
||||
* web application.
|
||||
*
|
||||
* @see HttpSessionEvent
|
||||
* @since v 2.3
|
||||
*/
|
||||
public interface HttpSessionListener extends EventListener {
|
||||
|
||||
/**
|
||||
* Notification that a session was created.
|
||||
*
|
||||
* @param se
|
||||
* the notification event
|
||||
*/
|
||||
public void sessionCreated(HttpSessionEvent se);
|
||||
|
||||
/**
|
||||
* Notification that a session is about to be invalidated.
|
||||
*
|
||||
* @param se
|
||||
* the notification event
|
||||
*/
|
||||
public void sessionDestroyed(HttpSessionEvent se);
|
||||
}
|
||||
42
java/javax/servlet/http/HttpUpgradeHandler.java
Normal file
42
java/javax/servlet/http/HttpUpgradeHandler.java
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
/**
|
||||
* Interface between the HTTP upgrade process and the new protocol.
|
||||
*
|
||||
* @since Servlet 3.1
|
||||
*/
|
||||
public interface HttpUpgradeHandler {
|
||||
|
||||
/**
|
||||
* This method is called once the request/response pair where
|
||||
* {@link HttpServletRequest#upgrade(Class)} is called has completed
|
||||
* processing and is the point where control of the connection passes from
|
||||
* the container to the {@link HttpUpgradeHandler}.
|
||||
*
|
||||
* @param connection The connection that has been upgraded
|
||||
*
|
||||
* @since Servlet 3.1
|
||||
*/
|
||||
void init(WebConnection connection);
|
||||
|
||||
/**
|
||||
* This method is called after the upgraded connection has been closed.
|
||||
*/
|
||||
void destroy();
|
||||
}
|
||||
281
java/javax/servlet/http/HttpUtils.java
Normal file
281
java/javax/servlet/http/HttpUtils.java
Normal file
@@ -0,0 +1,281 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Hashtable;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import javax.servlet.ServletInputStream;
|
||||
|
||||
/**
|
||||
* @deprecated As of Java(tm) Servlet API 2.3.
|
||||
* These methods were only useful
|
||||
* with the default encoding and have been moved
|
||||
* to the request interfaces.
|
||||
*/
|
||||
@SuppressWarnings("dep-ann") // Spec API does not use @Deprecated
|
||||
public class HttpUtils {
|
||||
|
||||
private static final String LSTRING_FILE =
|
||||
"javax.servlet.http.LocalStrings";
|
||||
private static final ResourceBundle lStrings =
|
||||
ResourceBundle.getBundle(LSTRING_FILE);
|
||||
|
||||
|
||||
/**
|
||||
* Constructs an empty <code>HttpUtils</code> object.
|
||||
*
|
||||
*/
|
||||
public HttpUtils() {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses a query string passed from the client to the
|
||||
* server and builds a <code>HashTable</code> object
|
||||
* with key-value pairs.
|
||||
* The query string should be in the form of a string
|
||||
* packaged by the GET or POST method, that is, it
|
||||
* should have key-value pairs in the form <i>key=value</i>,
|
||||
* with each pair separated from the next by a & character.
|
||||
*
|
||||
* <p>A key can appear more than once in the query string
|
||||
* with different values. However, the key appears only once in
|
||||
* the hashtable, with its value being
|
||||
* an array of strings containing the multiple values sent
|
||||
* by the query string.
|
||||
*
|
||||
* <p>The keys and values in the hashtable are stored in their
|
||||
* decoded form, so
|
||||
* any + characters are converted to spaces, and characters
|
||||
* sent in hexadecimal notation (like <i>%xx</i>) are
|
||||
* converted to ASCII characters.
|
||||
*
|
||||
* @param s a string containing the query to be parsed
|
||||
*
|
||||
* @return a <code>HashTable</code> object built
|
||||
* from the parsed key-value pairs
|
||||
*
|
||||
* @exception IllegalArgumentException if the query string
|
||||
* is invalid
|
||||
*
|
||||
*/
|
||||
public static Hashtable<String,String[]> parseQueryString(String s) {
|
||||
|
||||
String valArray[] = null;
|
||||
|
||||
if (s == null) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
Hashtable<String,String[]> ht = new Hashtable<>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringTokenizer st = new StringTokenizer(s, "&");
|
||||
while (st.hasMoreTokens()) {
|
||||
String pair = st.nextToken();
|
||||
int pos = pair.indexOf('=');
|
||||
if (pos == -1) {
|
||||
// XXX
|
||||
// should give more detail about the illegal argument
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
String key = parseName(pair.substring(0, pos), sb);
|
||||
String val = parseName(pair.substring(pos+1, pair.length()), sb);
|
||||
if (ht.containsKey(key)) {
|
||||
String oldVals[] = ht.get(key);
|
||||
valArray = new String[oldVals.length + 1];
|
||||
for (int i = 0; i < oldVals.length; i++)
|
||||
valArray[i] = oldVals[i];
|
||||
valArray[oldVals.length] = val;
|
||||
} else {
|
||||
valArray = new String[1];
|
||||
valArray[0] = val;
|
||||
}
|
||||
ht.put(key, valArray);
|
||||
}
|
||||
return ht;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses data from an HTML form that the client sends to
|
||||
* the server using the HTTP POST method and the
|
||||
* <i>application/x-www-form-urlencoded</i> MIME type.
|
||||
*
|
||||
* <p>The data sent by the POST method contains key-value
|
||||
* pairs. A key can appear more than once in the POST data
|
||||
* with different values. However, the key appears only once in
|
||||
* the hashtable, with its value being
|
||||
* an array of strings containing the multiple values sent
|
||||
* by the POST method.
|
||||
*
|
||||
* <p>The keys and values in the hashtable are stored in their
|
||||
* decoded form, so
|
||||
* any + characters are converted to spaces, and characters
|
||||
* sent in hexadecimal notation (like <i>%xx</i>) are
|
||||
* converted to ASCII characters.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param len an integer specifying the length,
|
||||
* in characters, of the
|
||||
* <code>ServletInputStream</code>
|
||||
* object that is also passed to this
|
||||
* method
|
||||
*
|
||||
* @param in the <code>ServletInputStream</code>
|
||||
* object that contains the data sent
|
||||
* from the client
|
||||
*
|
||||
* @return a <code>HashTable</code> object built
|
||||
* from the parsed key-value pairs
|
||||
*
|
||||
*
|
||||
* @exception IllegalArgumentException if the data
|
||||
* sent by the POST method is invalid
|
||||
*
|
||||
*/
|
||||
public static Hashtable<String,String[]> parsePostData(int len,
|
||||
ServletInputStream in) {
|
||||
// XXX
|
||||
// should a length of 0 be an IllegalArgumentException
|
||||
|
||||
// cheap hack to return an empty hash
|
||||
if (len <=0)
|
||||
return new Hashtable<>();
|
||||
|
||||
if (in == null) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
// Make sure we read the entire POSTed body.
|
||||
byte[] postedBytes = new byte [len];
|
||||
try {
|
||||
int offset = 0;
|
||||
|
||||
do {
|
||||
int inputLen = in.read (postedBytes, offset, len - offset);
|
||||
if (inputLen <= 0) {
|
||||
String msg = lStrings.getString("err.io.short_read");
|
||||
throw new IllegalArgumentException (msg);
|
||||
}
|
||||
offset += inputLen;
|
||||
} while ((len - offset) > 0);
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException(e.getMessage(), e);
|
||||
}
|
||||
|
||||
// XXX we shouldn't assume that the only kind of POST body
|
||||
// is FORM data encoded using ASCII or ISO Latin/1 ... or
|
||||
// that the body should always be treated as FORM data.
|
||||
try {
|
||||
String postedBody = new String(postedBytes, 0, len, "8859_1");
|
||||
return parseQueryString(postedBody);
|
||||
} catch (java.io.UnsupportedEncodingException e) {
|
||||
// XXX function should accept an encoding parameter & throw this
|
||||
// exception. Otherwise throw something expected.
|
||||
throw new IllegalArgumentException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Parse a name in the query string.
|
||||
*/
|
||||
private static String parseName(String s, StringBuilder sb) {
|
||||
sb.setLength(0);
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
switch (c) {
|
||||
case '+':
|
||||
sb.append(' ');
|
||||
break;
|
||||
case '%':
|
||||
try {
|
||||
sb.append((char) Integer.parseInt(s.substring(i+1, i+3),
|
||||
16));
|
||||
i += 2;
|
||||
} catch (NumberFormatException e) {
|
||||
// XXX
|
||||
// need to be more specific about illegal arg
|
||||
throw new IllegalArgumentException();
|
||||
} catch (StringIndexOutOfBoundsException e) {
|
||||
String rest = s.substring(i);
|
||||
sb.append(rest);
|
||||
if (rest.length()==2)
|
||||
i++;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
sb.append(c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Reconstructs the URL the client used to make the request,
|
||||
* using information in the <code>HttpServletRequest</code> object.
|
||||
* The returned URL contains a protocol, server name, port
|
||||
* number, and server path, but it does not include query
|
||||
* string parameters.
|
||||
*
|
||||
* <p>Because this method returns a <code>StringBuffer</code>,
|
||||
* not a string, you can modify the URL easily, for example,
|
||||
* to append query parameters.
|
||||
*
|
||||
* <p>This method is useful for creating redirect messages
|
||||
* and for reporting errors.
|
||||
*
|
||||
* @param req a <code>HttpServletRequest</code> object
|
||||
* containing the client's request
|
||||
*
|
||||
* @return a <code>StringBuffer</code> object containing
|
||||
* the reconstructed URL
|
||||
*
|
||||
*/
|
||||
public static StringBuffer getRequestURL (HttpServletRequest req) {
|
||||
StringBuffer url = new StringBuffer ();
|
||||
String scheme = req.getScheme ();
|
||||
int port = req.getServerPort ();
|
||||
String urlPath = req.getRequestURI();
|
||||
|
||||
url.append (scheme); // http, https
|
||||
url.append ("://");
|
||||
url.append (req.getServerName ());
|
||||
if ((scheme.equals ("http") && port != 80) || (scheme.equals ("https") && port != 443)) {
|
||||
url.append (':');
|
||||
url.append (req.getServerPort ());
|
||||
}
|
||||
|
||||
url.append(urlPath);
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
27
java/javax/servlet/http/LocalStrings.properties
Normal file
27
java/javax/servlet/http/LocalStrings.properties
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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.
|
||||
|
||||
err.cookie_name_blank=Cookie name may not be null or zero length
|
||||
err.cookie_name_is_token=Cookie name [{0}] is a reserved token
|
||||
err.io.indexOutOfBounds=Invalid offset [{0}] and / or length [{1}] specified for array of size [{2}]
|
||||
err.io.nullArray=Null passed for byte array in write method
|
||||
err.io.short_read=Short Read
|
||||
|
||||
http.method_delete_not_supported=HTTP method DELETE is not supported by this URL
|
||||
http.method_get_not_supported=HTTP method GET is not supported by this URL
|
||||
http.method_not_implemented=Method [{0}] is not implemented by this Servlet for this URI
|
||||
http.method_post_not_supported=HTTP method POST is not supported by this URL
|
||||
http.method_put_not_supported=HTTP method PUT is not supported by this URL
|
||||
http.non_http=Non HTTP request or response
|
||||
16
java/javax/servlet/http/LocalStrings_de.properties
Normal file
16
java/javax/servlet/http/LocalStrings_de.properties
Normal file
@@ -0,0 +1,16 @@
|
||||
# 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.
|
||||
|
||||
http.method_not_implemented=Methode [{0}] ist von diesem Servlet für diese URI nicht implementiert
|
||||
25
java/javax/servlet/http/LocalStrings_es.properties
Normal file
25
java/javax/servlet/http/LocalStrings_es.properties
Normal file
@@ -0,0 +1,25 @@
|
||||
# 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.
|
||||
|
||||
err.cookie_name_blank=El nombre del Cookie no puede ser nulo o de longitud cero
|
||||
err.cookie_name_is_token=El nombre de Cookie [{0}] es una palabra reservada
|
||||
err.io.nullArray=Se pasó un valor Null para el arreglo byte en el método de escritura
|
||||
err.io.short_read=Lectura Corta
|
||||
|
||||
http.method_delete_not_supported=El Metodo HTTP DELETE no es soportado por esta URL
|
||||
http.method_get_not_supported=El Metodo HTTP GET no está soportado por esta URL
|
||||
http.method_not_implemented=El Metodo [{0}] no esta implementado por este servlet para esta URI
|
||||
http.method_post_not_supported=El Metodo HTTP POST no está soportado por esta URL
|
||||
http.method_put_not_supported=El Metodo HTTP PUT no está soportado por esta URL
|
||||
27
java/javax/servlet/http/LocalStrings_fr.properties
Normal file
27
java/javax/servlet/http/LocalStrings_fr.properties
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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.
|
||||
|
||||
err.cookie_name_blank=Le nom de cookie ne doit pas être null ou vide
|
||||
err.cookie_name_is_token=Le nom de cookie [{0}] est un "token" réservé
|
||||
err.io.indexOutOfBounds=L''offset [{0}] et/ou la longueur [{1}] spécifiés pour la taille du tableau [{2}] sont invalides
|
||||
err.io.nullArray=Null a été passée comme tableau d'octets à la méthode d'écriture
|
||||
err.io.short_read=Lecture partielle
|
||||
|
||||
http.method_delete_not_supported=La méthode HTTP DELETE n'est pas supportée par cette URL
|
||||
http.method_get_not_supported=La méthode HTTP GET n'est pas supportée par cette URL
|
||||
http.method_not_implemented=Le méthode [{0}] n''est pas implémentée par ce Servlet pour cette URI
|
||||
http.method_post_not_supported=La méthode HTTP POST n'est pas supportée par cette URL
|
||||
http.method_put_not_supported=La méthode HTTP PUT n'est pas supportée par cette URL
|
||||
http.non_http=Requête ou réponse non HTTP
|
||||
27
java/javax/servlet/http/LocalStrings_ja.properties
Normal file
27
java/javax/servlet/http/LocalStrings_ja.properties
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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.
|
||||
|
||||
err.cookie_name_blank=Cookie名はnullまたは長さゼロであってはなりません.\n
|
||||
err.cookie_name_is_token=クッキー名 [{0}] は予約済のトークンです。
|
||||
err.io.indexOutOfBounds=サイズ[{2}]の配列に指定されたオフセット[{0}]または長さ[{1}]が無効です。
|
||||
err.io.nullArray=write メソッドに渡されたバイト配列は null です。
|
||||
err.io.short_read=読み込みがすぐに終わりました。
|
||||
|
||||
http.method_delete_not_supported=HTTPのDELETEメソッドは、このURLではサポートされていません。
|
||||
http.method_get_not_supported=HTTPのGETメソッドは、このURLではサポートされていません。
|
||||
http.method_not_implemented=メソッド [{0}] はRFC 2068には定義されておらず、サーブレットAPIではサポートされません。
|
||||
http.method_post_not_supported=HTTPのPOSTメソッドは、このURLではサポートされていません。
|
||||
http.method_put_not_supported=HTTPのPUTメソッドは、このURLではサポートされていません。
|
||||
http.non_http=リクエストが HTTP リクエストではない、あるいはレスポンスが HTTP レスポンスではありません。
|
||||
27
java/javax/servlet/http/LocalStrings_ko.properties
Normal file
27
java/javax/servlet/http/LocalStrings_ko.properties
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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.
|
||||
|
||||
err.cookie_name_blank=쿠키 이름이 널이거나 길이가 0인 문자열이어서는 안됩니다.
|
||||
err.cookie_name_is_token=쿠키 이름 [{0}]은(는) 예약된 토큰입니다.
|
||||
err.io.indexOutOfBounds=크기 [{2}]인 배열에 대하여, 유효하지 않은 offset [{0}] 그리고/또는 길이 [{1}].
|
||||
err.io.nullArray=write 메소드에 널인 바이트 배열이 전달되었습니다.
|
||||
err.io.short_read=Short Read
|
||||
|
||||
http.method_delete_not_supported=HTTP 메소드 DELETE는 이 URL에 의해 지원되지 않습니다.
|
||||
http.method_get_not_supported=HTTP 메소드 GET은 이 URL에 의해 지원되지 않습니다.
|
||||
http.method_not_implemented=이 URI를 위한 서블릿은 메소드 [{0}]을(를) 구현하지 않았습니다.
|
||||
http.method_post_not_supported=HTTP 메소드인 POST는 이 URL에 의해 지원되지 않습니다.
|
||||
http.method_put_not_supported=HTTP 메소드 PUT은 이 URL에 의해 지원되지 않습니다.
|
||||
http.non_http=HTTP 요청이 아니거나, HTTP 응답이 아닙니다.
|
||||
25
java/javax/servlet/http/LocalStrings_zh_CN.properties
Normal file
25
java/javax/servlet/http/LocalStrings_zh_CN.properties
Normal file
@@ -0,0 +1,25 @@
|
||||
# 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.
|
||||
|
||||
err.cookie_name_blank=Cookie名称不能为null或零长度
|
||||
err.io.nullArray=Null在write方法中传递给字节数组
|
||||
err.io.short_read=短.读
|
||||
|
||||
http.method_delete_not_supported=当前URL不支持HTTP的DELETE方法
|
||||
http.method_get_not_supported=此URL不支持Http方法GET
|
||||
http.method_not_implemented=这个servlet没有为这个URI实现方法[{0}]
|
||||
http.method_post_not_supported=此URL不支持Http方法POST
|
||||
http.method_put_not_supported=此URL不支持HTTP方法PUT
|
||||
http.non_http=没有HTTP请求或响应
|
||||
137
java/javax/servlet/http/Part.java
Normal file
137
java/javax/servlet/http/Part.java
Normal file
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* This class represents a part as uploaded to the server as part of a
|
||||
* <code>multipart/form-data</code> request body. The part may represent either
|
||||
* an uploaded file or form data.
|
||||
*
|
||||
* @since Servlet 3.0
|
||||
*/
|
||||
public interface Part {
|
||||
|
||||
/**
|
||||
* Obtain an <code>InputStream</code> that can be used to retrieve the
|
||||
* contents of the file.
|
||||
*
|
||||
* @return An InputStream for the contents of the file
|
||||
*
|
||||
* @throws IOException if an I/O occurs while obtaining the stream
|
||||
*/
|
||||
public InputStream getInputStream() throws IOException;
|
||||
|
||||
/**
|
||||
* Obtain the content type passed by the browser.
|
||||
*
|
||||
* @return The content type passed by the browser or <code>null</code> if
|
||||
* not defined.
|
||||
*/
|
||||
public String getContentType();
|
||||
|
||||
/**
|
||||
* Obtain the name of the field in the multipart form corresponding to this
|
||||
* part.
|
||||
*
|
||||
* @return The name of the field in the multipart form corresponding to this
|
||||
* part.
|
||||
*/
|
||||
public String getName();
|
||||
|
||||
/**
|
||||
* If this part represents an uploaded file, gets the file name submitted
|
||||
* in the upload. Returns {@code null} if no file name is available or if
|
||||
* this part is not a file upload.
|
||||
*
|
||||
* @return the submitted file name or {@code null}.
|
||||
*
|
||||
* @since Servlet 3.1
|
||||
*/
|
||||
public String getSubmittedFileName();
|
||||
|
||||
/**
|
||||
* Obtain the size of this part.
|
||||
*
|
||||
* @return The size of the part if bytes
|
||||
*/
|
||||
public long getSize();
|
||||
|
||||
/**
|
||||
* A convenience method to write an uploaded part to disk. The client code
|
||||
* is not concerned with whether or not the part is stored in memory, or on
|
||||
* disk in a temporary location. They just want to write the uploaded part
|
||||
* to a file.
|
||||
*
|
||||
* This method is not guaranteed to succeed if called more than once for
|
||||
* the same part. This allows a particular implementation to use, for
|
||||
* example, file renaming, where possible, rather than copying all of the
|
||||
* underlying data, thus gaining a significant performance benefit.
|
||||
*
|
||||
* @param fileName The location into which the uploaded part should be
|
||||
* stored. Relative locations are relative to {@link
|
||||
* javax.servlet.MultipartConfigElement#getLocation()}
|
||||
*
|
||||
* @throws IOException if an I/O occurs while attempting to write the part
|
||||
*/
|
||||
public void write(String fileName) throws IOException;
|
||||
|
||||
/**
|
||||
* Deletes the underlying storage for a part, including deleting any
|
||||
* associated temporary disk file. Although the container will delete this
|
||||
* storage automatically this method can be used to ensure that this is done
|
||||
* at an earlier time, thus preserving system resources.
|
||||
* <p>
|
||||
* Containers are only required to delete the associated storage when the
|
||||
* Part instance is garbage collected. Apache Tomcat will delete the
|
||||
* associated storage when the associated request has finished processing.
|
||||
* Behaviour of other containers may be different.
|
||||
*
|
||||
* @throws IOException if an I/O occurs while attempting to delete the part
|
||||
*/
|
||||
public void delete() throws IOException;
|
||||
|
||||
/**
|
||||
* Obtains the value of the specified part header as a String. If there are
|
||||
* multiple headers with the same name, this method returns the first header
|
||||
* in the part. The header name is case insensitive.
|
||||
*
|
||||
* @param name Header name
|
||||
* @return The header value or <code>null</code> if the header is not
|
||||
* present
|
||||
*/
|
||||
public String getHeader(String name);
|
||||
|
||||
/**
|
||||
* Obtain all the values of the specified part header.
|
||||
* @param name The name of the header of interest. The header name is case
|
||||
* insensitive.
|
||||
* @return All the values of the specified part header. If the part did not
|
||||
* include any headers of the specified name, this method returns an
|
||||
* empty Collection.
|
||||
*/
|
||||
public Collection<String> getHeaders(String name);
|
||||
|
||||
/**
|
||||
* Get the header names provided for this part.
|
||||
* @return a Collection of all the header names provided for this part.
|
||||
*/
|
||||
public Collection<String> getHeaderNames();
|
||||
}
|
||||
51
java/javax/servlet/http/WebConnection.java
Normal file
51
java/javax/servlet/http/WebConnection.java
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* 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 javax.servlet.http;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
|
||||
/**
|
||||
* The interface used by a {@link HttpUpgradeHandler} to interact with an upgraded
|
||||
* HTTP connection.
|
||||
*
|
||||
* @since Servlet 3.1
|
||||
*/
|
||||
public interface WebConnection extends AutoCloseable {
|
||||
|
||||
/**
|
||||
* Provides access to the {@link ServletInputStream} for reading data from
|
||||
* the client.
|
||||
*
|
||||
* @return the input stream
|
||||
*
|
||||
* @throws IOException If an I/O occurs while obtaining the stream
|
||||
*/
|
||||
ServletInputStream getInputStream() throws IOException;
|
||||
|
||||
/**
|
||||
* Provides access to the {@link ServletOutputStream} for writing data to
|
||||
* the client.
|
||||
*
|
||||
* @return the output stream
|
||||
*
|
||||
* @throws IOException If an I/O occurs while obtaining the stream
|
||||
*/
|
||||
ServletOutputStream getOutputStream() throws IOException;
|
||||
}
|
||||
30
java/javax/servlet/http/package.html
Normal file
30
java/javax/servlet/http/package.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="white">
|
||||
|
||||
The javax.servlet.http package contains a number of classes and interfaces
|
||||
that describe and define the contracts between a servlet class
|
||||
running under the HTTP protocol and the runtime environment provided
|
||||
for an instance of such a class by a conforming servlet container.
|
||||
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
Reference in New Issue
Block a user