Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java')
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java
index d5fca99b09..7501d84def 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java
@@ -21,7 +21,14 @@ package org.eclipse.jetty.server.handler;
import java.io.IOException;
+import javax.servlet.DispatcherType;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.annotation.ManagedObject;
import org.eclipse.jetty.util.component.ContainerLifeCycle;
@@ -47,6 +54,31 @@ public abstract class AbstractHandler extends ContainerLifeCycle implements Hand
{
}
+ @Override
+ public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+ {
+ if (baseRequest.getDispatcherType()==DispatcherType.ERROR)
+ doError(target,baseRequest,request,response);
+ else
+ doHandle(target,baseRequest,request,response);
+ }
+
+ /* ------------------------------------------------------------ */
+ protected void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+ {
+ }
+
+ /* ------------------------------------------------------------ */
+ protected void doError(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+ {
+ Object o = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
+ int code = (o instanceof Integer)?((Integer)o).intValue():(o!=null?Integer.valueOf(o.toString()):500);
+ o = request.getAttribute(RequestDispatcher.ERROR_MESSAGE);
+ String reason = o!=null?o.toString():null;
+
+ response.sendError(code,reason);
+ }
+
/* ------------------------------------------------------------ */
/*
* @see org.eclipse.thread.LifeCycle#start()

Back to the top