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

📄 contextinfo.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// <copyright>//  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// </copyright>// **********************************************************************// $Source: /cvs/distapps/openmap/src/vpfservlet/WEB-INF/src/com/bbn/openmap/vpfservlet/ContextInfo.java,v $// $Revision: 1.6.2.2 $ $Date: 2005/08/11 21:03:08 $ $Author: dietrick $// **********************************************************************package com.bbn.openmap.vpfservlet;import java.io.File;import java.util.Collections;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.Set;import java.util.TreeSet;import javax.servlet.ServletContext;import com.bbn.openmap.layer.vpf.LibrarySelectionTable;/** * This class holds information retrieved from the ServletContext. */public class ContextInfo {    /**     * the name of the attribute where ContextInfo objects are in the     * ServletContext     */    public static final String CONTEXT_INFO = ContextInfo.class.getPackage()            .getName()            + ".contextInfo";    /** the prefix used to configure VPF libraries in web.xml */    public static final String LIBRARY_PREFIX = ContextInfo.class.getPackage()            .getName()            + ".vpf_library.";    /** a map from library name to (String) library path */    private Map lib_pathmap;    /** a map from library name to LibrarySelectionTable */    private Map lib_lstmap;    /**     * A constructor - use getContextInfo to get one.     *      * @param context the ServletContext to use to initialize     * @see #getContextInfo     */    private ContextInfo(ServletContext context) {        lib_pathmap = createLibrariesMap(context);        lib_lstmap = new HashMap();    }    /**     * Returns the ContextInfo object for the ServletContext.     *      * @param context the ServletContext to either get an existing     *        ContextInfo from, or the context to use to initialize a     *        new ContextInfo, if one doesn't already exist for the     *        context.     */    public static synchronized ContextInfo getContextInfo(ServletContext context) {        ContextInfo ci = (ContextInfo) context.getAttribute(CONTEXT_INFO);        if (ci == null) {            ci = new ContextInfo(context);            context.setAttribute(CONTEXT_INFO, ci);        }        return ci;    }    /**     * Grovels through the ServletContext initialization parameters     * and creates a map from library name to library path.     *      * @param context the context to grovel through     */    private Map createLibrariesMap(ServletContext context) {        HashMap library_map = new HashMap();        for (Enumeration en = context.getInitParameterNames(); en.hasMoreElements();) {            String s = (String) en.nextElement();            if (s.startsWith(LIBRARY_PREFIX)) {                String libname = s.substring(LIBRARY_PREFIX.length());                String path = getPath(context, context.getInitParameter(s));                if (path != null) {                    library_map.put(libname, path);                } else {                    context.log("Excluding " + libname                            + " from database list, can't resolve path");                }            }        }        return Collections.unmodifiableMap(library_map);    }    /**     * Try and find an absolute path from an init parameter     *      * @param context the context to use to resolve paths     * @param path the path to try and resolve     * @return an absolute path to a file (hopefully a directory) on     *         the system, or null indicating the resolve failed to     *         find anything useful.     */    private String getPath(ServletContext context, String path) {        // try to resolve as a relative path in the war file        try {            String p2 = context.getRealPath(path);            File f = new File(p2);            if (f.exists()) {                return p2;            }        } catch (java.security.AccessControlException jsace) {            // ignore, nothing to do but press on        }        // try to resolve as an absolute path on the system        try {            File f = new File(path);            if (f.exists()) {                return path;            }        } catch (java.security.AccessControlException jsace) {            // ignore, nothing to do        }        return null;    }    /**     * Return a file object that the path resolves to. Performs some     * minimal checks to try and prevent an attacker from feeding in     * urls that cause the servlets to climb out of their sandbox. A     * better option is to use a servlet container with the ability to     * restrict servlet file access. For example, Apache Software     * Foundation's Tomcat 5 Servlet/JSP Container running with the     * -security flag.     *      * @param pathInfo the path to resolve (expected to be of the form     *        "/library_name_in_web_xml/path/to/file")     * @return a File if it could be resolved, null otherwise     */    public String resolvePath(String pathInfo) {        if ((pathInfo == null) || (pathInfo.indexOf("..") != -1)) { // don't                                                                    // climb                                                                    // out                                                                    // of                                                                    // sandbox            return null;        }        int libStart = pathInfo.indexOf('/') + 1;        int libEnd = pathInfo.indexOf('/', libStart);        if (libEnd == -1) {            libEnd = pathInfo.length();        }        String libname = pathInfo.substring(libStart, libEnd);        String subpath = pathInfo.substring(libEnd);        String lib_home = getPath(libname);        if (lib_home == null) {            return null;        }        return lib_home + "/" + subpath;    }    /**     * Returns a Set whose values are the (String) names of the     * configured libraries.     *      * @return a set of library names     */    public Set keySet() {        return new TreeSet(lib_pathmap.keySet());    }    /**     * Returns the path (or null) for the library     *      * @param libname the library name     * @return the path or null     */    public String getPath(String libname) {        return (String) lib_pathmap.get(libname);    }    /**     * Returns the LibrarySelectionTable (or null) for the library     *      * @param libname the library name     * @return the LST or null     */    public LibrarySelectionTable getLST(String libname) {        return (LibrarySelectionTable) lib_lstmap.get(libname);    }    /**     * Adds an LST for a library     *      * @param libname the library name     * @param lst the LibrarySelectionTable for libname     */    public void putLST(String libname, LibrarySelectionTable lst) {        lib_lstmap.put(libname, lst);    }}

⌨️ 快捷键说明

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