|
Maybe Upload 1-1-0 by Weft | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Object
|
+--java.util.Dictionary
|
+--java.util.Hashtable
|
+--uk.co.weft.maybeupload.MaybeUploadRequestWrapper
A wrapper around a ServletRequest, which knows how to handle multipart/form-data requests gracefully. Implemented as a wrapper not as a specialisation since ServletRequest is an interface. Kludgy. This is where multiple inheritance would be a win.
Note that while this class is written to the Servlet 2.2 spec, it should be extremely easy to convert it to earlier versions of the Servlet API because it's mostly just a wrapper; the only methods that actually do anything are at the top and don't depend on any Servlet 2.2 features.
extends Hashtable so as to make it implements the
Map interface. In my opinion, there should be a common API to all
the things in Servlets which are essentially namespaces, and the
Map interface is the obvious one.
This class was written having studied the example code in Jason Hunter's book, Java Servlet Programming (which we recommend). It does not, however, use any material from versions of Jason Hunter's code released since the book was published, as these are released under a very peculiar licence which is not compatible with the BSD licence we use.
$Log: MaybeUploadRequestWrapper.java,v $
Revision 1.11 2002/10/08 09:22:48 simon
A number of minor enhancements and some bug fixes proposed by Shawn Grunberger
Revision 1.10 2001/07/17 13:01:25 simon
Added no-args constructor, to ease subclassing.
Revision 1.9 2001/04/24 15:55:57 simon
Patch release incorporating Aaron Dunlop's ByteArrayInputStream stuff.
Revision 1.8 2001/04/09 11:24:24 simon
Made maxUpload a configurable parameter ('max_upload')
Revision 1.7 2001/03/02 23:25:02 simon
getParameter() and getParameterValues() undeprecated, as Berin
Loritsch pointed out they're part of the
Servlet 2.2 spec and as such ought not to be.
Revision 1.6 2001/01/23 19:12:17 simon
A number of bugfixes, plus an important new feature: you can decide
whether to allow name collisions in the upload directory to result
in overwriting, renaming of the new file, or an exception.
Revision 1.5 2001/01/22 15:11:00 simon
changed constructor argument for workdir from file name to file
object.
Revision 1.4 2001/01/20 14:50:02 simon
fixed but: if not multipart and no values for a given name that was
asked for, threw a NullPointerException. Fixed.
Revision 1.3 2001/01/09 12:14:12 simon
Now tested with:
Netscape Communicator 4.76/Linux 2.2
Konqueror 1.9.8/Linux 2.2
Microsoft Internet Explorer 5.00.2014.0216IC
File upload (including binary file upload) works. Remaining known bug:
all fields must have data...
Revision 1.2 2001/01/08 12:39:43 simon
Now working; still tidying up.
Revision 1.1.1.1 2001/01/05 14:58:09 simon
First cut - not yet tested
| Field Summary | |
int |
maxUpload
the maximum upload size. |
java.lang.String |
MFDHEADER
the standard identifying header of a multipart request |
| Constructor Summary | |
MaybeUploadRequestWrapper()
we advise you do not use this! 'empty' constructor to make it easier to sub-class. |
|
MaybeUploadRequestWrapper(HttpServletRequest req)
Deprecated. do not use. Not supported. Will be withdrawn soon. If you have any code which uses this class directly, please keep it up to date with maybeupload package. |
|
MaybeUploadRequestWrapper(HttpServletRequest req,
boolean saveUploadedFilesToDisk,
java.io.File workDir,
boolean allowOverwrite,
boolean silentlyRename,
int max)
|
|
MaybeUploadRequestWrapper(HttpServletRequest req,
java.io.File workDir,
boolean allowOverwrite,
boolean silentlyRename)
Deprecated. do not use. Not supported. Will be withdrawn soon. If you have any code which uses this class directly, please keep it up to date with maybeupload package. |
|
| Method Summary | |
java.lang.Object |
get(java.lang.String name)
The preferred method of accessing parameter values; use this in preference to either (@link getParameter) or (@link getParameterValues). |
java.lang.Object |
getAttribute(java.lang.String name)
Returns the value of the named attribute as an Object,
or null if no attribute of the given name exists. |
java.util.Enumeration |
getAttributeNames()
Returns an Enumeration containing the
names of the attributes available to this request. |
java.lang.String |
getAuthType()
Returns the name of the authentication scheme used to protect the servlet, for example, "BASIC" or "SSL," or null
if the servlet was not protected. |
java.lang.String |
getCharacterEncoding()
Returns the name of the character encoding used in the body of this request. |
int |
getContentLength()
Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not known. |
java.lang.String |
getContentType()
Returns the MIME type of the body of the request, or null if the type is not known. |
java.lang.String |
getContextPath()
Returns the portion of the request URI that indicates the context of the request. |
Cookie[] |
getCookies()
Returns an array containing all of the Cookie
objects the client sent with this request. |
long |
getDateHeader(java.lang.String name)
Returns the value of the specified request header as a long value that represents a
Date object. |
java.lang.String |
getHeader(java.lang.String name)
Returns the value of the specified request header as a String. |
java.util.Enumeration |
getHeaderNames()
Returns an enumeration of all the header names this request contains. |
java.util.Enumeration |
getHeaders(java.lang.String name)
Returns all the values of the specified request header as an Enumeration of String objects. |
ServletInputStream |
getInputStream()
Retrieves the body of the request as binary data using a ServletInputStream. |
int |
getIntHeader(java.lang.String name)
Returns the value of the specified request header as an int. |
java.util.Locale |
getLocale()
Returns the preferred Locale that the client will
accept content in, based on the Accept-Language header. |
java.util.Enumeration |
getLocales()
Returns an Enumeration of Locale objects
indicating, in decreasing order starting with the preferred locale, the
locales that are acceptable to the client based on the Accept-Language
header. |
java.lang.String |
getMethod()
Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT. |
java.lang.String |
getParameter(java.lang.String name)
Return a String representation of the value of the named parameter if any, else null. |
java.util.Enumeration |
getParameterNames()
Returns an Enumeration of String
objects containing the names of the parameters contained
in this request. |
java.lang.String[] |
getParameterValues(java.lang.String name)
Return a representation of the values of the named parameter if any, as an array of Strings; else null. |
java.lang.String |
getPathInfo()
Returns any extra path information associated with the URL the client sent when it made this request. |
java.lang.String |
getPathTranslated()
Returns any extra path information after the servlet name but before the query string, and translates it to a real path. |
java.lang.String |
getProtocol()
Returns the name and version of the protocol the request uses in the form protocol/majorVersion.minorVersion, for example, HTTP/1.1. |
java.lang.String |
getQueryString()
Returns the query string that is contained in the request URL after the path. |
java.io.BufferedReader |
getReader()
Retrieves the body of the request as character data using a BufferedReader. |
java.lang.String |
getRealPath(java.lang.String path)
Deprecated. As of Version 2.1 of the Java Servlet API, use ServletContext.getRealPath(java.lang.String) instead. |
java.lang.String |
getRemoteAddr()
Returns the Internet Protocol (IP) address of the client that sent the request. |
java.lang.String |
getRemoteHost()
Returns the fully qualified name of the client that sent the request, or the IP address of the client if the name cannot be determined. |
java.lang.String |
getRemoteUser()
Returns the login of the user making this request, if the user has been authenticated, or null if the user
has not been authenticated. |
HttpServletRequest |
getRequest()
Occasionally a servlet will need access to the request wrapped within a MaybeUploadRequestWrapper. |
RequestDispatcher |
getRequestDispatcher(java.lang.String path)
Returns a RequestDispatcher object that acts as a wrapper for
the resource located at the given path. |
java.lang.String |
getRequestedSessionId()
Returns the session ID specified by the client. |
java.lang.String |
getRequestURI()
Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. |
java.lang.String |
getScheme()
Returns the name of the scheme used to make this request, for example, http, https, or ftp. |
java.lang.String |
getServerName()
Returns the host name of the server that received the request. |
int |
getServerPort()
Returns the port number on which this request was received. |
java.lang.String |
getServletPath()
Returns the part of this request's URL that calls the servlet. |
HttpSession |
getSession()
Returns the current session associated with this request, or if the request does not have a session, creates one. |
HttpSession |
getSession(boolean create)
Returns the current HttpSession
associated with this request or, if if there is no
current session and create is true, returns
a new session. |
java.security.Principal |
getUserPrincipal()
Returns a java.security.Principal object containing
the name of the current authenticated user. |
boolean |
isRequestedSessionIdFromCookie()
Checks whether the requested session ID came in as a cookie. |
boolean |
isRequestedSessionIdFromUrl()
Deprecated. As of Version 2.1 of the Java Servlet API, use isRequestedSessionIdFromURL()
instead. |
boolean |
isRequestedSessionIdFromURL()
Checks whether the requested session ID came in as part of the request URL. |
boolean |
isRequestedSessionIdValid()
Checks whether the requested session ID is still valid. |
boolean |
isSecure()
Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS. |
boolean |
isUserInRole(java.lang.String role)
Returns a boolean indicating whether the authenticated user is included in the specified logical "role". |
void |
removeAttribute(java.lang.String name)
Removes an attribute from this request. |
void |
setAttribute(java.lang.String name,
java.lang.Object o)
Stores an attribute in this request. |
| Methods inherited from class java.util.Hashtable |
clear,
clone,
contains,
containsKey,
containsValue,
elements,
entrySet,
equals,
get,
hashCode,
isEmpty,
keys,
keySet,
put,
putAll,
rehash,
remove,
size,
toString,
values |
| Methods inherited from class java.lang.Object |
finalize,
getClass,
notify,
notifyAll,
wait,
wait,
wait |
| Field Detail |
public final java.lang.String MFDHEADER
public int maxUpload
| Constructor Detail |
public MaybeUploadRequestWrapper()
throws java.lang.IllegalArgumentException,
java.io.IOException,
UploadException
public MaybeUploadRequestWrapper(HttpServletRequest req,
boolean saveUploadedFilesToDisk,
java.io.File workDir,
boolean allowOverwrite,
boolean silentlyRename,
int max)
throws java.lang.IllegalArgumentException,
java.io.IOException,
UploadException
public MaybeUploadRequestWrapper(HttpServletRequest req,
java.io.File workDir,
boolean allowOverwrite,
boolean silentlyRename)
throws java.lang.IllegalArgumentException,
java.io.IOException,
UploadException
req - the HttpServletRequest to wrap aroundworkDir - the directory to store uploaded files toworkDir - a directory in which to save uploaded filesallowOverwrite - Overwrite existing filessilentlyRename - Create unique filenames to prevent overwriting
public MaybeUploadRequestWrapper(HttpServletRequest req)
throws java.lang.IllegalArgumentException,
java.io.IOException,
UploadException
req - the HttpServletRequest to wrap aroundworkDir - the directory to store uploaded files toworkDir - a directory in which to save uploaded filesallowOverwrite - Overwrite existing filessilentlyRename - Create unique filenames to prevent overwriting| Method Detail |
public java.lang.Object get(java.lang.String name)
name in the request parameters.
The object returned will be an instance of
java.lang.String, orjava.io.File, orjava.lang.Vector containing only Strings
and Files, orjava.io.ByteArrayInputStream containing the
file submitted as a binary input stream, if
saveUploadedFilesToDisk is false.
If the parameter has a single value, the array has a length of 1.
name - a String containing the name of
the parameter whose value is requestedString or
File objects
containing the parameter's valuesgetParameter(java.lang.String)public java.util.Enumeration getParameterNames()
Enumeration of String
objects containing the names of the parameters contained
in this request. If the request has
no parameters, the method returns an
empty Enumeration.Enumeration of String
objects, each String containing
the name of a request parameter; or an
empty Enumeration if the
request has no parameterspublic java.lang.String getParameter(java.lang.String name)
name - the name of the parameter to fetchpublic java.lang.String[] getParameterValues(java.lang.String name)
name - the name of the parameter to fetchpublic HttpServletRequest getRequest()
public java.lang.Object getAttribute(java.lang.String name)
Object,
or null if no attribute of the given name exists.
Attributes can be set two ways. The servlet container may set
attributes to make available custom information about a request.
For example, for requests made using HTTPS, the attribute
javax.servlet.request.X509Certificate can be used to
retrieve information on the certificate of the client. Attributes
can also be set programatically using
ServletRequest.setAttribute(java.lang.String, java.lang.Object). This allows information to be
embedded into a request before a RequestDispatcher call.
Attribute names should follow the same conventions as package
names. This specification reserves names matching java.*,
javax.*, and sun.*.
name - a String specifying the name of
the attributeObject containing the value
of the attribute, or null if
the attribute does not existpublic java.util.Enumeration getAttributeNames()
Enumeration containing the
names of the attributes available to this request.
This method returns an empty Enumeration
if the request has no attributes available to it.Enumeration of strings
containing the names
of the request's attributespublic java.lang.String getCharacterEncoding()
null if the request
does not specify a character encodingString containing the name of
the chararacter encoding, or null
if the request does not specify a character encodingpublic int getContentLength()
public java.lang.String getContentType()
null if the type is not known. For HTTP servlets,
same as the value of the CGI variable CONTENT_TYPE.String containing the name
of the MIME type of
the request, or -1 if the type is not known
public ServletInputStream getInputStream()
throws java.io.IOException
ServletInputStream. Either this method or
getReader() may be called to read the body, not both.ServletInputStream object containing
the body of the requestgetReader() method
has already been called for this requestpublic java.lang.String getProtocol()
SERVER_PROTOCOL.String containing the protocol
name and version numberpublic java.lang.String getScheme()
http, https, or ftp.
Different schemes have different rules for constructing URLs,
as noted in RFC 1738.String containing the name
of the scheme used to make this requestpublic java.lang.String getServerName()
SERVER_NAME.String containing the name
of the server to which the request was sentpublic int getServerPort()
SERVER_PORT.
public java.io.BufferedReader getReader()
throws java.io.IOException
BufferedReader. The reader translates the character
data according to the character encoding used on the body.
Either this method or getReader() may be called to read the
body, not both.BufferedReader
containing the body of the requestgetInputStream() method
has been called on this requestgetInputStream()public java.lang.String getRemoteAddr()
REMOTE_ADDR.String containing the
IP address of the client that sent the requestpublic java.lang.String getRemoteHost()
REMOTE_HOST.String containing the fully qualified name
of the client
public void setAttribute(java.lang.String name,
java.lang.Object o)
RequestDispatcher.
Attribute names should follow the same conventions as
package names. Names beginning with java.*,
javax.*, and com.sun.*, are
reserved for use by Sun Microsystems.
name - a String specifying
the name of the attributeo - the Object to be storedpublic void removeAttribute(java.lang.String name)
Attribute names should follow the same conventions as
package names. Names beginning with java.*,
javax.*, and com.sun.*, are
reserved for use by Sun Microsystems.
name - a String specifying
the name of the attribute to removepublic java.util.Locale getLocale()
Locale that the client will
accept content in, based on the Accept-Language header.
If the client request doesn't provide an Accept-Language header,
this method returns the default locale for the server.Locale for the clientpublic java.util.Enumeration getLocales()
Enumeration of Locale objects
indicating, in decreasing order starting with the preferred locale, the
locales that are acceptable to the client based on the Accept-Language
header.
If the client request doesn't provide an Accept-Language header,
this method returns an Enumeration containing one
Locale, the default locale for the server.Enumeration of preferred
Locale objects for the clientpublic boolean isSecure()
public RequestDispatcher getRequestDispatcher(java.lang.String path)
RequestDispatcher object that acts as a wrapper for
the resource located at the given path.
A RequestDispatcher object can be used to forward
a request to the resource or to include the resource in a response.
The resource can be dynamic or static.
The pathname specified may be relative, although it cannot extend
outside the current servlet context. If the path begins with
a "/" it is interpreted as relative to the current context root.
This method returns null if the servlet container
cannot return a RequestDispatcher.
The difference between this method and ServletContext.getRequestDispatcher(java.lang.String) is that this method can take a
relative path.
path - a String specifying the pathname
to the resourceRequestDispatcher object
that acts as a wrapper for the resource
at the specified pathRequestDispatcher,
ServletContext.getRequestDispatcher(java.lang.String)public java.lang.String getRealPath(java.lang.String path)
ServletContext.getRealPath(java.lang.String) instead.
public java.lang.String getAuthType()
null
if the servlet was not protected.
Same as the value of the CGI variable AUTH_TYPE.
String specifying the name of
the authentication scheme, or
null if the request was not
authenticatedpublic Cookie[] getCookies()
Cookie
objects the client sent with this request.
This method returns null if no cookies were sent.Cookies
included with this request, or null
if the request has no cookiespublic long getDateHeader(java.lang.String name)
long value that represents a
Date object. Use this method with
headers that contain dates, such as
If-Modified-Since.
The date is returned as the number of milliseconds since January 1, 1970 GMT. The header name is case insensitive.
If the request did not have a header of the
specified name, this method returns -1. If the header
can't be converted to a date, the method throws
an IllegalArgumentException.
name - a String specifying the
name of the headerlong value
representing the date specified
in the header expressed as
the number of milliseconds
since January 1, 1970 GMT,
or -1 if the named header
was not included with the
reqestpublic java.lang.String getHeader(java.lang.String name)
String. If the request did not include a header
of the specified name, this method returns null.
The header name is case insensitive. You can use
this method with any request header.name - a String specifying the
header nameString containing the
value of the requested
header, or null
if the request does not
have a header of that namepublic java.util.Enumeration getHeaders(java.lang.String name)
Enumeration of String objects.
Some headers, such as Accept-Language can be sent
by clients as several headers each with a different value rather than
sending the header as a comma separated list.
If the request did not include any headers
of the specified name, this method returns an empty
Enumeration.
The header name is case insensitive. You can use
this method with any request header.
name - a String specifying the
header nameEnumeration containing the
values of the requested
header, or null
if the request does not
have any headers of that namepublic java.util.Enumeration getHeaderNames()
Some servlet containers do not allow do not allow
servlets to access headers using this method, in
which case this method returns null
nullpublic int getIntHeader(java.lang.String name)
int. If the request does not have a header
of the specified name, this method returns -1. If the
header cannot be converted to an integer, this method
throws a NumberFormatException.
The header name is case insensitive.
name - a String specifying the name
of a request headerintpublic java.lang.String getMethod()
String
specifying the name
of the method with which
this request was madepublic java.lang.String getPathInfo()
null if there
was no extra path information.
Same as the value of the CGI variable PATH_INFO.
String specifying
extra path information that comes
after the servlet path but before
the query string in the request URL;
or null if the URL does not have
any extra path informationpublic java.lang.String getPathTranslated()
If the URL does not have any extra path information,
this method returns null.
String specifying the
real path, or null if
the URL does not have any extra path
informationpublic java.lang.String getContextPath()
String specifying the
portion of the request URI that indicates the context
of the requestpublic java.lang.String getQueryString()
null
if the URL does not have a query string. Same as the value
of the CGI variable QUERY_STRING.String containing the query
string or null if the URL
contains no query stringpublic java.lang.String getRemoteUser()
null if the user
has not been authenticated.
Whether the user name is sent with each subsequent request
depends on the browser and type of authentication. Same as the
value of the CGI variable REMOTE_USER.String specifying the login
of the user making this request, or null
public boolean isUserInRole(java.lang.String role)
false.role - a String specifying the name
of the roleboolean indicating whether
the user making this request belongs to a given role;
false if the user has not been
authenticatedpublic java.security.Principal getUserPrincipal()
java.security.Principal object containing
the name of the current authenticated user. If the user has not been
authenticated, the method returns null.java.security.Principal containing
the name of the user making this request;
null if the user has not been
authenticatedpublic java.lang.String getRequestedSessionId()
null.String specifying the session
ID, or null if the request did
not specify a session IDisRequestedSessionIdValid()public java.lang.String getRequestURI()
First line of HTTP request Returned Value POST /some/path.html HTTP/1.1 /some/path.html GET http://foo.bar/a.html HTTP/1.0 http://foo.bar/a.html HEAD /xyz?a=b HTTP/1.1 /xyz
To reconstruct an URL with a scheme and host, use
HttpUtils#getRequestURL.
String containing
the part of the URL from the
protocol name up to the query stringHttpUtils#getRequestURLpublic java.lang.String getServletPath()
String containing
the name or path of the servlet being
called, as specified in the request URLpublic HttpSession getSession(boolean create)
HttpSession
associated with this request or, if if there is no
current session and create is true, returns
a new session.
If create is false
and the request has no valid HttpSession,
this method returns null.
To make sure the session is properly maintained, you must call this method before the response is committed.
true - to create
a new session for this request if necessary;
false to return null
if there's no current sessionHttpSession associated
with this request or null if
create is false
and the request has no valid sessiongetSession()public HttpSession getSession()
HttpSession associated
with this requestgetSession(boolean)public boolean isRequestedSessionIdValid()
true if this
request has an id for a valid session
in the current session context;
false otherwisegetRequestedSessionId(),
getSession(boolean),
HttpSessionContextpublic boolean isRequestedSessionIdFromCookie()
true if the session ID
came in as a
cookie; otherwise, falsegetSession(boolean)public boolean isRequestedSessionIdFromURL()
true if the session ID
came in as part of a URL; otherwise,
falsegetSession(boolean)public boolean isRequestedSessionIdFromUrl()
isRequestedSessionIdFromURL()
instead.
|
Maybe Upload 1-1-0 by Weft | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||