Servlet error handler package com.ack.web.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Map the location of the servlet to handle at error * with the supplied status code * ... 404 /servlet/com.ack.web.servlet.ServletErrorHandler */ public class ServletErrorHandler extends HttpServlet { public void doGet( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res.setContentType( "text/html" ); PrintWriter pw = res.getWriter(); String statusCode = getRequestAttribute( req, "javax.servlet.error.status_code", "status code not supplied" ); String errorMsg = getRequestAttribute( req, "javax.servlet.error.message", "error msg not supplied" ); pw.println( "

Error Code: " + statusCode + "

" ); pw.println( "

Error Message: " + errorMsg + "

" ); pw.println( "

Problem accessing: " + req.getRequestURI() + "

" ); pw.println( "


" ); pw.println( new java.util.Date( System.currentTimeMillis() ) ); } private String getRequestAttribute( HttpServletRequest req, String name, String defaultValue ) { Object value = req.getAttribute( name ); return ( value != null ) ? value.toString() : defaultValue; } }