Using a JSP Error Page for All Runtime Errors
Even if an
application is developed with different
types of components, it should deal with runtime errors in a
consistent way. Recall from Chapter 7, how the
page
directive can specify a JSP page to be used
when code in the JSP page
throws an exception. The error page gets
access to the exception through an implicit variable named
exception
, and can display a user-friendly message
as well as log details about the problem. The way the error page is
invoked and how the implicit variable gets its value can easily be
mimicked by a
servlet. Example 14.4 shows how to do this in the controller servlet
used in previous examples in this chapter.
Example 14-4. Invoking a JSP Error Page from a Servlet
public void doPost(HttpServletRequest request, HttpServletResponse response) { ... try { action.perform(this, request, response); } catch (Throwable t) { request.setAttribute("javax.servlet.jsp.jspException", t); RequestDispatcher rd = getServletContext( ).getRequestDispatcher("/error.jsp"); rd.forward(request, response); } }
The servlet calls the action’s perform( )
method within a try
block. If any type of
exception occurs while executing an action, the servlet catches it,
sets the javax.servlet.jsp.jspException
request
attribute to the exception object, and forwards the request to the
error JSP page. The javax.servlet.jsp.jspException
attribute name is reserved for the exception object in the JSP specification, so the JSP container picks up the ...
Get Java Server Pages now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.