Saturday 14 March 2015

jsp Specifying Error page


Whenever an error occurred in JSP page processing, run time throws exception stack trace to the browser. But it is undesirable for clients. Instead of sending exception stack trace to the browser, we can send customized message using isErrorPage, errorPage.

Method Description
errorPage You can specify particular error page to display, when error occurs in this page.
isErrorPage
Indicates if the current JSP page is intended to be the URL
target of another JSP page’s errorPage. An error page has access to the exception through the exception implicit variable

message.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page isErrorPage="true" %>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Error Message</title>
    </head>
    <body>
        <h1>Error occured</h1>
        <%
          System.out.println(exception);  
        %>
    </body>
</html>


hello.jsp
<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@page errorPage="message.jsp" %>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello World</title>
    </head>
    <body>
        <h1>
            <%
                int a = 10/0;
            %>
        </h1>
        
    </body>
</html>
  
Output

 
You can observe the 'ArthmeticException' like below in server console file.

Info:   java.lang.ArithmeticException: / by zero
 at org.apache.jsp.hello_jsp._jspService(hello_jsp.java:63)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
 at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
 at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
 at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
 at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
 at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
 at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
 at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
 at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
 at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
 at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
 at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
 at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
 at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
 at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
 at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
 at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
 at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
 at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
 at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
 at java.lang.Thread.run(Thread.java:745)



Prevoius                                                 Next                                                 Home

No comments:

Post a Comment