Boa noite pessoal. Eu estou com um erro na minha pagina de erro e andei procurando e notei varios posts aqui no GUJ a respeito e nenhum supriu o meu erro. Sempre que vou tentar utilizar esse recurso de pagina de erro nao funciona. O que pode ser? Tentei utilizar um exemplo bem basico e nada.
Arquivo web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>
javax.servlet.jsp.jstl.fmt.localizationContext
</param-name>
<param-value>message_en</param-value>
</context-param>
<servlet>
<servlet-name>Hora</servlet-name>
<servlet-class>br.com.teste.Hora</servlet-class>
</servlet>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>br.com.servlet.MyServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>VendaServlet</servlet-name>
<servlet-class>br.com.servlet.VendaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hora</servlet-name>
<url-pattern>/Pessoa.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>VendaServlet</servlet-name>
<url-pattern>/Venda.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/erro.jsp</location>
</error-page>
</web-app>
Meu servlet vai gerar uma exception
public class VendaServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException, NullPointerException {
resp.setContentType("text/html");
Produto p1 = null;
p1.setDescricao("teste");
req.getSession().setAttribute("produto", p1);
RequestDispatcher view = req.getRequestDispatcher("jsp/pagina1.jsp");
view.forward(req, resp);
}
}
Pagina de erro:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isErrorPage="true" %>
<html>
<head>
<title>Pagina de erro</title>
</head>
<body>
<p>Houve um erro interno</p>
<%= exception.getMessage() %>
</body>
</html>
OBS: Ja tentei ao inves de configurar no arquivo web.xml a Exception Trowable e mesmo assim nao funcionou…
Ele nao mostra a mensagem de erro e sim o erro interno de servidor:
HTTP 500 - Erro Interno do Servidor.
No console do tomcat aparece o stackTrace.
Alguem ja viu isso?
Essa página soh vai ser carregada se tiver um erro específico de nullpointer. Faça um teste, declare no seu web.xml pra ele mostrar a página de erro se tentar acessar um conteúdo inexistente.
no seu Web xml coloque o seguinte
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
rode a sua aplicação e tente acessar uma pagina inexistente no seu contexto… Só para ver se esta funcionando a diretiva que trata de erros…
Caro Guitar_Men .
Ja tentei fazer isso tambem e nao deu certo. A respeito da exception de NullPointeException o meu servlet esta fazendo referencia de uma variavel nula pra lancar esse erro mesmo. A minha pagina de erro nao executa e sempre aparece a pagina de erro interno do Servidor e o stackTrace aparece no console.
SEVERE: Servlet.service() for servlet VendaServlet threw exception
java.lang.NullPointerException
at br.com.servlet.VendaServlet.doPost(VendaServlet.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Eu quero capturar esse erro na minha pagina de erro. Veja o Servlet.
public class VendaServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException, NullPointerException {
resp.setContentType("text/html");
Produto p1 = null;
p1.setDescricao("teste");
req.getSession().setAttribute("produto", p1);
RequestDispatcher view = req.getRequestDispatcher("jsp/pagina1.jsp");
view.forward(req, resp);
}
}
A pagina de erro:
[code]
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1” isErrorPage=“true” isELIgnored=“false”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
Pagina de erro
Houve um erro interno
[/code]
Ja tentei usar a EL sozinha sem o auxilio de tag como ${pageContext.exception} e mesmo assim nao deu certo… Alguem pode ver o meu erro?
Obrigado a todos
Bom dia galera. Gostaria de saber de voces porque que quando eu executo este exemplo que mostrei para voces pelo navegador implicito do eclipse ele nao funciona e quando eu executo esse exemplo por outro navegador qualquer ele funciona.
Obrigado…