Can I invoke a JSP error page from a servlet?
Created May 4, 2012
Govind Seshadri Yes, you can invoke the JSP error page and
pass the exception object to it from within
a servlet. The trick is to create a request
dispatcher for the JSP error page, and pass
the exception object as a
javax.servlet.jsp.jspException request
attribute. However, note that you can do this from
only within controller servlets. If
your servlet opens an OutputStream or PrintWriter, the JSP engine will throw the following
translation error:
java.lang.IllegalStateException: Cannot forward as OutputStream or Writer has already been obtained
The following code snippet demonstrates the invocation of a JSP error page from within a controller servlet:
protected void sendErrorRedirect(HttpServletRequest request, HttpServletResponse response, String errorPageURL, Throwable e) throws ServletException, IOException { request.setAttribute ("javax.servlet.jsp.jspException", e); getServletConfig().getServletContext(). getRequestDispatcher(errorPageURL).forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) { try { // do something } catch (Exception ex) { try { sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex); } catch (Exception e) { e.printStackTrace(); } } }