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

📄 errorhandler.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
// ========================================================================// Copyright 1999-2005 Mort Bay Consulting Pty. Ltd.// ------------------------------------------------------------------------// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.// ========================================================================package org.mortbay.jetty.handler;import java.io.IOException;import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.mortbay.jetty.HttpConnection;import org.mortbay.jetty.HttpGenerator;import org.mortbay.jetty.HttpHeaders;import org.mortbay.jetty.HttpMethods;import org.mortbay.jetty.MimeTypes;import org.mortbay.util.ByteArrayISO8859Writer;import org.mortbay.util.StringUtil;/* ------------------------------------------------------------ *//** Handler for Error pages * A handler that is registered at the org.mortbay.http.ErrorHandler * context attributed and called by the HttpResponse.sendError method to write a * error page. *  * @author Greg Wilkins (gregw) */public class ErrorHandler extends AbstractHandler{    boolean _showStacks=true;        /* ------------------------------------------------------------ */    /*      * @see org.mortbay.jetty.Handler#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, int)     */    public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException    {        HttpConnection connection = HttpConnection.getCurrentConnection();        connection.getRequest().setHandled(true);        String method = request.getMethod();        if(!method.equals(HttpMethods.GET) && !method.equals(HttpMethods.POST))            return;        response.setContentType(MimeTypes.TEXT_HTML_8859_1);                response.setHeader(HttpHeaders.CACHE_CONTROL, "must-revalidate,no-cache,no-store");        ByteArrayISO8859Writer writer= new ByteArrayISO8859Writer(4096);        handleErrorPage(request, writer, connection.getResponse().getStatus(), connection.getResponse().getReason());        writer.flush();        response.setContentLength(writer.size());        writer.writeTo(response.getOutputStream());        writer.destroy();    }    /* ------------------------------------------------------------ */    protected void handleErrorPage(HttpServletRequest request, Writer writer, int code, String message)        throws IOException    {        writeErrorPage(request, writer, code, message, _showStacks);    }        /* ------------------------------------------------------------ */    protected void writeErrorPage(HttpServletRequest request, Writer writer, int code, String message, boolean showStacks)        throws IOException    {        if (message == null)            message=HttpGenerator.getReason(code);        else        {            message= StringUtil.replace(message, "&", "&amp;");            message= StringUtil.replace(message, "<", "&lt;");            message= StringUtil.replace(message, ">", "&gt;");        }        writer.write("<html>\n<head>\n");        writeErrorPageHead(request,writer,code,message);        writer.write("</head>\n<body>");        writeErrorPageBody(request,writer,code,message,showStacks);        writer.write("\n</body>\n</html>\n");    }    /* ------------------------------------------------------------ */    protected void writeErrorPageHead(HttpServletRequest request, Writer writer, int code, String message)        throws IOException    {        writer.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\"/>\n");        writer.write("<title>Error ");        writer.write(Integer.toString(code));        writer.write(' ');        if (message!=null)            writer.write(message);        writer.write("</title>\n");        }    /* ------------------------------------------------------------ */    protected void writeErrorPageBody(HttpServletRequest request, Writer writer, int code, String message, boolean showStacks)        throws IOException    {        String uri= request.getRequestURI();        if (uri!=null)        {            uri= StringUtil.replace(uri, "&", "&amp;");            uri= StringUtil.replace(uri, "<", "&lt;");            uri= StringUtil.replace(uri, ">", "&gt;");        }                writeErrorPageMessage(request,writer,code,message,uri);        if (showStacks)            writeErrorPageStacks(request,writer);        writer.write("<hr /><i><small>Powered by Jetty://</small></i>");        for (int i= 0; i < 20; i++)            writer.write("<br/>                                                \n");    }    /* ------------------------------------------------------------ */    protected void writeErrorPageMessage(HttpServletRequest request, Writer writer, int code, String message,String uri)    throws IOException    {        writer.write("<h2>HTTP ERROR ");        writer.write(Integer.toString(code));        writer.write("</h2>\n<p>Problem accessing ");        writer.write(uri);        writer.write(". Reason:\n<pre>    ");        writer.write(message);        writer.write("</pre></p>");    }    /* ------------------------------------------------------------ */    protected void writeErrorPageStacks(HttpServletRequest request, Writer writer)        throws IOException    {        Throwable th = (Throwable)request.getAttribute("javax.servlet.error.exception");        while(th!=null)        {            writer.write("<h3>Caused by:</h3><pre>");            StringWriter sw = new StringWriter();            PrintWriter pw = new PrintWriter(sw);            th.printStackTrace(pw);            pw.flush();            writer.write(sw.getBuffer().toString());            writer.write("</pre>\n");            th =th.getCause();        }    }            /* ------------------------------------------------------------ */    /**     * @return True if stack traces are shown in the error pages     */    public boolean isShowStacks()    {        return _showStacks;    }    /* ------------------------------------------------------------ */    /**     * @param showStacks True if stack traces are shown in the error pages     */    public void setShowStacks(boolean showStacks)    {        _showStacks = showStacks;    }}

⌨️ 快捷键说明

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