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

📄 downloadrequest.java

📁 一个小公司要求给写的很简单的任务管理系统。
💻 JAVA
字号:
/* * @(#)DownloadRequest.java	1.7 05/11/17 *  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * -Redistribution of source code must retain the above copyright notice, this *  list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduce the above copyright notice, *  this list of conditions and the following disclaimer in the documentation *  and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */package jnlp.sample.servlet;import java.io.File;import java.util.ArrayList;import javax.servlet.*;import javax.servlet.http.*;/**  * The DownloadRequest incapsulates all the data in a request * SQE: We need to address query string */public class DownloadRequest {    // Arguments    private static final String ARG_ARCH                = "arch";    private static final String ARG_OS                  = "os";    private static final String ARG_LOCALE              = "locale";    private static final String ARG_VERSION_ID          = "version-id";    private static final String ARG_CURRENT_VERSION_ID  = "current-version-id";    private static final String ARG_PLATFORM_VERSION_ID = "platform-version-id";    private static final String ARG_KNOWN_PLATFORMS     = "known-platforms";    private static final String TEST_JRE = "TestJRE";        private String _path = null;    private String _version = null;    private String _currentVersionId = null;    private String[] _os = null;    private String[] _arch = null;    private String[] _locale = null;    private String[] _knownPlatforms = null;    private String _query = null;    private String _testJRE = null;    private boolean _isPlatformRequest = false;    private ServletContext _context = null;    private String _encoding = null;        private HttpServletRequest _httpRequest = null;    // HTTP Compression RFC 2616 : Standard headers    public static final String ACCEPT_ENCODING          = "accept-encoding";        // Contruct Request object based on HTTP request    public DownloadRequest(HttpServletRequest request) {	this((ServletContext)null, request);    }    public DownloadRequest(ServletContext context, HttpServletRequest request) {	_context = context;		_httpRequest = request;	_path = request.getRequestURI();	_encoding = request.getHeader(ACCEPT_ENCODING);	String context_path = request.getContextPath();		if (context_path != null) _path = _path.substring(context_path.length());       	if (_path == null) _path = request.getServletPath(); // This works for *.<ext> invocations	if (_path == null) _path = "/"; // No path given	_path = _path.trim();	if (_context != null && !_path.endsWith("/")) {	    String realPath = _context.getRealPath(_path);	    // fix for 4474021 - getRealPath might returns NULL	    if (realPath != null) {		File f = new File(realPath);		if (f != null && f.exists() && f.isDirectory()) {		    _path += "/";		}	    }	}        // Append default file for a directory        if (_path.endsWith("/")) _path += "launch.jnlp";	_version = getParameter(request, ARG_VERSION_ID);	_currentVersionId = getParameter(request, ARG_CURRENT_VERSION_ID);	_os = getParameterList(request, ARG_OS);	_arch = getParameterList(request, ARG_ARCH);	_locale = getParameterList(request, ARG_LOCALE);	    	    	_knownPlatforms = getParameterList(request, ARG_KNOWN_PLATFORMS);	String platformVersion = getParameter(request, ARG_PLATFORM_VERSION_ID);	    	_isPlatformRequest =  (platformVersion != null);	if (_isPlatformRequest) _version = platformVersion;	_query = request.getQueryString();	_testJRE = getParameter(request, TEST_JRE);    }        /** Returns a DownloadRequest for the currentVersionId, that can be used     *  to lookup the existing cached version     */    private DownloadRequest(DownloadRequest dreq) {	_encoding = dreq._encoding;	_context = dreq._context;	_httpRequest = dreq._httpRequest;	_path = dreq._path;	        	_version = dreq._currentVersionId;	_currentVersionId = null;	_os = dreq._os;	_arch = dreq._arch;	_locale = dreq._locale;	_knownPlatforms = dreq._knownPlatforms;		_isPlatformRequest =  dreq._isPlatformRequest;		_query = dreq._query;	_testJRE = dreq._testJRE;    }            private String getParameter(HttpServletRequest req, String key) {	String res = req.getParameter(key);	return (res == null) ? null : res.trim();        }     /** Converts a space delimitered string to a list of strings */    static private String[] getStringList(String str) {        if (str == null) return null;        ArrayList list = new ArrayList();        int i = 0;        int length = str.length();        StringBuffer sb = null;        while(i < length) {            char ch = str.charAt(i);            if (ch == ' ') {                // A space was hit. Add string to list                if (sb != null) {                    list.add(sb.toString());                    sb = null;                }            } else if (ch == '\\') {                // It is a delimiter. Add next character                if (i + 1 < length) {                    ch = str.charAt(++i);                    if (sb == null) sb = new StringBuffer();                    sb.append(ch);                }            } else {                if (sb == null) sb = new StringBuffer();                sb.append(ch);            }            i++; // Next character        }        // Make sure to add the last part to the list too        if (sb != null) {            list.add(sb.toString());        }		if (list.size() == 0) return null;                String[] results = new String[list.size()];        return (String[])list.toArray(results);    }        /* Split parameter at spaces. Convert '\ ' insto a space */    private String[] getParameterList(HttpServletRequest req, String key) {	String res = req.getParameter(key);	return (res == null) ? null : getStringList(res.trim());    }        // Query    public String getPath() { return _path; }    public String getVersion() { return _version; }    public String getCurrentVersionId() { return _currentVersionId; }    public String getQuery() { return _query; }    public String getTestJRE() { return _testJRE; }    public String getEncoding() { return _encoding; }    public String[] getOS() { return _os; }    public String[] getArch() { return _arch; }    public String[] getLocale() { return _locale; }    public String[] getKnownPlatforms() { return _knownPlatforms; }    public boolean isPlatformRequest() { return _isPlatformRequest; }	    public HttpServletRequest getHttpRequest() { return _httpRequest; }        /** Returns a DownloadRequest for the currentVersionId, that can be used     *  to lookup the existing cached version     */    DownloadRequest getFromDownloadRequest() {	return new DownloadRequest(this);    }        // Debug    public String toString() { 	return "DownloadRequest[path=" + _path + 	    showEntry(" encoding=", _encoding) +	    showEntry(" query=", _query) + 	    showEntry(" TestJRE=", _testJRE) +	    showEntry(" version=", _version) +	    showEntry(" currentVersionId=", _currentVersionId) +	    showEntry(" os=", _os) + 	    showEntry(" arch=", _arch) + 	    showEntry(" locale=", _locale) +	    showEntry(" knownPlatforms=", _knownPlatforms)	    + " isPlatformRequest=" + _isPlatformRequest + "]";    }		        private String showEntry(String msg, String value) {	if (value == null) return "";	return msg + value;		    }        private String showEntry(String msg, String[] value) {	if (value == null) return "";	return msg + java.util.Arrays.asList(value).toString();	    }}

⌨️ 快捷键说明

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