Mercurial Hosting > luan
view src/org/eclipse/jetty/server/handler/DefaultHandler.java @ 1059:013939bfc9e8
remove JBuffer.poke()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 08 Nov 2016 05:39:33 -0700 |
parents | 3718afd99988 |
children |
line wrap: on
line source
// // ======================================================================== // Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. // // The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php // // You may elect to redistribute this code under either of these licenses. // ======================================================================== // package org.eclipse.jetty.server.handler; import java.io.IOException; import java.io.OutputStream; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.http.HttpMethods; import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.ByteArrayISO8859Writer; import org.eclipse.jetty.util.IO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.eclipse.jetty.util.resource.Resource; /* ------------------------------------------------------------ */ /** Default Handler. * * This handle will deal with unhandled requests in the server. * For requests for favicon.ico, the Jetty icon is served. * For reqests to '/' a 404 with a list of known contexts is served. * For all other requests a normal 404 is served. * TODO Implement OPTIONS and TRACE methods for the server. * * * @org.apache.xbean.XBean */ public class DefaultHandler extends AbstractHandler { private static final Logger LOG = LoggerFactory.getLogger(DefaultHandler.class); boolean _showContexts=true; @Override public void handle(String target, Request request, HttpServletResponse response) throws IOException, ServletException { if (response.isCommitted() || request.isHandled()) return; request.setHandled(true); String method=request.getMethod(); if (!method.equals(HttpMethods.GET) || !request.getRequestURI().equals("/")) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } response.setStatus(HttpServletResponse.SC_NOT_FOUND); response.setContentType(MimeTypes.TEXT_HTML); ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(1500); writer.write("<HTML>\n<HEAD>\n<TITLE>Error 404 - Not Found"); writer.write("</TITLE>\n<BODY>\n<H2>Error 404 - Not Found.</H2>\n"); writer.write("No context on this server matched or handled this request.<BR>"); if (_showContexts) { writer.write("Contexts known to this server are: <ul>"); Server server = getServer(); Handler[] handlers = server==null?null:server.getChildHandlersByClass(ContextHandler.class); for (int i=0;handlers!=null && i<handlers.length;i++) { ContextHandler context = (ContextHandler)handlers[i]; if (context.isRunning()) { writer.write("<li><a href=\""); writer.write(context.getContextPath()); if (context.getContextPath().length()>1 && context.getContextPath().endsWith("/")) writer.write("/"); writer.write("\">"); writer.write(context.getContextPath()); writer.write(" ---> "); writer.write(context.toString()); writer.write("</a></li>\n"); } else { writer.write("<li>"); writer.write(context.getContextPath()); writer.write(" ---> "); writer.write(context.toString()); if (context.isFailed()) writer.write(" [failed]"); if (context.isStopped()) writer.write(" [stopped]"); writer.write("</li>\n"); } } } for (int i=0;i<10;i++) writer.write("\n<!-- Padding for IE -->"); writer.write("\n</BODY>\n</HTML>\n"); writer.flush(); response.setContentLength(writer.size()); OutputStream out=response.getOutputStream(); writer.writeTo(out); out.close(); } public boolean getShowContexts() { return _showContexts; } public void setShowContexts(boolean show) { _showContexts = show; } }