servletdirectoryframe.java

来自「很棒的web服务器源代码」· Java 代码 · 共 192 行

JAVA
192
字号
// ServletDirectoryFrame.java// $Id: ServletDirectoryFrame.java,v 1.23 2001/11/12 14:02:51 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.servlet;import java.io.File;import java.net.URLStreamHandlerFactory;import java.util.Enumeration;import java.util.Hashtable;import javax.servlet.Servlet;import javax.servlet.ServletContext;import org.w3c.jigsaw.http.httpd;import org.w3c.util.ObservableProperties;import org.w3c.tools.resources.FramedResource;import org.w3c.tools.resources.InvalidResourceException;import org.w3c.tools.resources.Resource;import org.w3c.tools.resources.ResourceReference;import org.w3c.jigsaw.frames.HTTPFrame;import javax.servlet.http.HttpSessionContext;/** *  @author Alexandre Rafalovitch <alex@access.com.au> *  @author Anselm Baird-Smith <abaird@w3.org> *  @author Benoit Mahe <bmahe@w3.org> */public class ServletDirectoryFrame extends HTTPFrame {    /**     * The servlet Context.     */    protected ServletContext servletContext = null;    /**     * The Session Context.     */    protected HttpSessionContext sessionContext = null;    /**     * Register the resource and add ServletProperties in httpd.     * @param resource The resource to register.     */    public void registerResource(FramedResource resource) {	super.registerResource(resource);	if (getServletProps() == null ) {	    synchronized (this.getClass()) {		httpd s = (httpd) getServer();		if ( s != null ) {		    // Register the property sheet if not done yet:		    ObservableProperties props = s.getProperties() ;		    s.registerPropertySet(new ServletProps(s));		}	    }	}    }    /**     * ServletContext implementation - Lookup a given servlet.     */    public Servlet getServlet(String name) {	if (dresource != null) {	    ResourceReference rr = dresource.lookup(name);	    if (rr != null) {		try {		    Resource resource = rr.lock();		    if (resource instanceof ServletWrapper)			return ((ServletWrapper) resource).getServlet();		} catch (InvalidResourceException ex) {		    return null;		} finally {		    rr.unlock();		}	    }	}	return null;    }    /**     * Lookup a given servlet without accessing it.     * @return true if and only if loading was successful     */    public boolean isServletLoaded(String name) {	if (dresource != null) {	    ResourceReference rr = dresource.lookup(name);	    if (rr != null) {		try {		    Resource resource = rr.lock();		    if (resource instanceof ServletWrapper)			return ((ServletWrapper) resource).isServletLoaded();		} catch (InvalidResourceException ex) {		    return false;		} finally {		    rr.unlock();		}	    }	}	return false;    }    /**     * ServletContext implementation - Enumerate all servlets within context.     */    public Enumeration getServlets() {	if (dresource != null)	    return new ServletEnumeration(this, 				  dresource.enumerateResourceIdentifiers());	else	    return new ServletEnumeration(this, null);    }    /**     * ServletContext implementation - Enumerate all servlets names     * within context.     */    public Enumeration getServletNames() {	if (dresource != null)	    return new ServletNamesEnumeration(this, 			       dresource.enumerateResourceIdentifiers());	else	    return new ServletNamesEnumeration(this, null);    }    /**     * ServletContext implementation - Get server informations.     */    public String getServerInfo() {	return getServer().getSoftware();    }    /**     * ServletContext implementation - Get an attribute value.     * We map this into the ServletWrapper attributes, without     * support for name clashes though.     * @param name The attribute name.     */    public Object getAttribute(String name) {	if ( definesAttribute(name) )	    return getValue(name, null);	else if (resource.definesAttribute(name))	    return resource.getValue(name, null);	return null;    }    protected HttpSessionContext getHttpSessionContext() {	if (sessionContext == null) {	    ServletProps sprops = getServletProps();	    if (sprops != null)		 sessionContext = sprops.getSessionContext();	}	return (HttpSessionContext)sessionContext;    }    protected ServletProps getServletProps() {	httpd server = (httpd) getServer();	return (ServletProps)	    server.getPropertySet(ServletProps.SERVLET_PROPS_NAME);    }    protected ServletContext getServletContext() {	if (servletContext == null) {	    servletContext = new JigsawServletContext(getFrameReference(),						 getServer().getProperties());	    File tmp = new File(getServer().getTempDirectory(), 		       String.valueOf(resource.getURLPath().hashCode()));	    tmp.mkdirs();	    servletContext.setAttribute(JigsawServletContext.TEMPDIR_P, tmp);	}	return (ServletContext) servletContext;    }    /**     * We add a <em>context</em> attribute to all our children.     * The <em>context</em> attribute is any object implementing the     * ServletContext interface.     */    protected void updateDefaultChildAttributes(Hashtable attrs) {	attrs.put("servlet-context", getServletContext());	attrs.put("session-context", getHttpSessionContext());    }}

⌨️ 快捷键说明

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