world tutorial run hello example ejemplo con jsp nullpointerexception tomcat7 web.xml

jsp - run - spring boot tutorial



ConfiguraciĆ³n de la pĆ”gina de error 404 para JSP (1)

Estoy intentando establecer una página de error personalizada en JSP. Me aparece un error y no puedo entender por qué. He investigado muchas publicaciones y parece que no puedo encontrar una respuesta. Cuando visito una página que debería arrojarme un 404, me envía a la página de error nativo de Tomcat y no a la mía y arroja este error.

Apr 30, 2015 11:33:35 AM org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at org.apache.jsp.PageNotFound_jsp._jspService(PageNotFound_jsp.java:104) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:467) at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:338) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:203) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Apr 30, 2015 11:33:35 AM org.apache.catalina.core.StandardHostValve custom SEVERE: Exception Processing ErrorPage[errorCode=404, location=/PageNotFound.jsp] org.apache.jasper.JasperException: An exception occurred processing JSP page /PageNotFound.jsp at line 38 35: </div> 36: 37: Message: 38: <div><%=exception.getMessage() %></div> 39: StackTrace: 40: <div><% 41: StringWriter stringWriter = new StringWriter(); Stacktrace: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:467) at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:338) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:203) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at org.apache.jsp.PageNotFound_jsp._jspService(PageNotFound_jsp.java:104) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) ... 22 more

Aquí está el web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>MyProject</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>500</error-code> <location>/PageNotFound.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/PageNotFound.jsp</location> </error-page> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/PageNotFound.jsp</location> </error-page> </web-app>

Y mi PageNotFound.jsp

<%@ page isErrorPage="true" import="java.io.*" language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link rel="icon" href="img/favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon" /> <title>Sample Page</title> </head> <body> <!--content--> <div class="container"> <div class="row"> <article class="span6 error"> <img src="img/error.png" alt=""> </article> <article class="span6"> <div class="row"> <div class="span6"> <h5>Sorry!</h5> <h6>page not found</h6> <div class="row"> <article class="span4"> <p class="margBot1">The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.</p> <p class="margBot1">Please try using our search box below to look for information on the website</p> </article> </div> </div> </div> </article> </div> Message: <div><%=exception.getMessage() %></div> StackTrace: <div><% StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); exception.printStackTrace(printWriter); out.println(stringWriter); printWriter.close(); stringWriter.close(); %></div> </div> </body> </html>


Se está intentando procesar su PageNotFound.jsp. Ver la última stacktrace.

Sin embargo, hay una excepción al intentar renderizar esa página. La variable "excepción" en esta línea es nula:

<div><%=exception.getMessage() %></div>

Creo que siempre que exista una excepción en la capa java, esta variable no será nula. Entonces tiene sentido tener esto en una página de error.

Sin embargo, en el caso de la condición 404, no hay excepciones en la capa de Java, por lo que será nula. Por lo tanto, no creo que este código y el bloque de código debajo de él, pertenezcan a la página que se usa para las condiciones 404.