Na data em que esta nota de aula foi elaborada, se tentssemos acessar a URL http://www.google.com.br/pagina.jsp , obteramos como resposta uma pgina com o seguinte contedo.
Nela, ramos informados da ocorrncia de um errro (Thats an error), erro esse detalhado mais adiante: O URL solicitado /pagina.jsp no foi encontrado no servidor (The requested URL /pagina.jsp was not found on this server). Diz-se ento que o Google lidou corretamente com um inesperado cdigo de status HTTP: o cdigo 404 (Not found). Nesta nota de aula, voc saber como tratar adequadamente cdigos de status HTTP e Exception Java.
Contedo
Elementos XML para lidar com erros Tratando excees Java Tratando erro HTTP Tratando excees em pginas JSP Lanando erro de um Servlet Cdigos de status HTTP Bibliografia
Desenvolvimento de Aplicativos Web com Servlet e JSP Cdigos de status HTTP e Exceptions Elementos XML para lidar com erros
Configura-se o tratamento da exceo ou cdigo de status HTTP no descritor de implantao(Deployment Descriptor), ou seja, no arquivo web.xml do aplicativo. Nesse arquivo, deve-se codificar diferentes elementos <error-page> para cada tipo de exceo ou cdigo de status HTTP a que se queira associar um recurso, sendo que dentro do elemento <error-page> adicionam-se dois sub-elementos: 1. <error-code> ou <exception-type> 2. <location> A tabela seguinte descreve esses elementos. Elemento <error-page> <error-code> <exception-type> <location> Descrio Mapeia cdigo de status HTTP ou exceo para um dado recurso, como uma pgina (X)HTML ou JSP, a ser exibido Especifica o nmero do cdigo de status HTTP Especifica a classe totalmente qualificada da exceo Java Especifica a localizao do recurso a ser exibido
Quando o aplicativo lana uma exceo, o continer Web busca no arquivo web.xml pelo elemento <error-page> cujo sub-elemento <exception-type> corresponde ao tipo da exceo lanada, direcionando ento o usurio para a pgina (X)HTML ou JSP a ela associada. Se a busca no lograr xito, o continer Web procura pelo tratamento da exceo mais prxima lanada na hierarquia de classes. O exemplo abaixo ilustra as tags XML para tratamento da exceo IOException.
<error-page> <exception-type> java.io.IOException </exception-type> <location> /errorIOE.jsp </location> </error-page>
Desenvolvimento de Aplicativos Web com Servlet e JSP Cdigos de status HTTP e Exceptions
Nesse exemplo, se o aplicativo lanar a exceo IOException, o continer Web invocar a pgina errorIOE.jsp.
Quando ocorre um erro HTTP, o continer Web busca no arquivo web.xml pelo elemento <error-page> cujo sub-elemento <error-code> corresponde ao cdigo de status HTTP, direcionando ento o usurio para a pgina (X)HTML ou JSP a ele associado. O exemplo abaixo ilustra as tags XML para tratamento do erro HTTP 404 (Not found) .
<error-page> <error-code> 404 </error-code> <location> /error404.jsp </location> </error-page>
Nesse exemplo, se ocorrer o erro HTTP 404, o continer Web invocar a pgina error404.jsp.
3
<html> <head> <title>Insert title here</title> </head>
Desenvolvimento de Aplicativos Web com Servlet e JSP Cdigos de status HTTP e Exceptions
<body> </body> </html>
Destaque para a declarao que atribui a pgina errorHandler.jsp a responsabilidade por tratar os erros porventura nela lanados. Na pgina JSP que lidar com os erros, deve-se configurar o atributo isErrorPage da diretiva page para true. Na pgina de exemplo abaixo, destaca-se esse atributo.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isErrorPage="true"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Insert title here</title> </head> <body> </body> </html>
Essa pgina tem acesso ao objeto implcito exception o qual representa o objeto java.lang.Throwable associado ao erro lanado.
onde status representa o cdigo de status HTTP (por exemplo, 500) e msg, uma mensagem de erro. Recomenda-se usar as constantes em vez dos cdigos de status. Por exemplo, deve-se preferir SC_FORBIDDEN ao cdigo 403. A instruo abaixo lana o cdigo de status HTTP 403. Caso tenha sido configurada uma pgina no arquivo web.xml para esse cdigo, ela ser invocada pelo continer Web. Caso no exista, ser exibida uma pgina HTML padro contendo a mensagem passada para o mtodo sendError(). 4
response.sendError(response.SC_FORBIDDEN, Aplicativo em construo);
Desenvolvimento de Aplicativos Web com Servlet e JSP Cdigos de status HTTP e Exceptions Cdigos de status HTTP
100 (Continue) Constante SC_CONTINUE 200 (OK) Constante SC_OK 202 (Accepted) Constante SC_ACCEPTED 204 (No Content) Constante SC_NO_CONTENT 205 (Reset Content) Constante SC_RESET_CONTENT 301 (Moved Permanently) Constante SC_MOVED_PERMANENTLY 302 (Found) Constante SC_MOVED_TEMPORARILY 303 (See Other) Constante SC_SEE_OTHER 304 (Not Modified) Constante SC_NOT_MODIFIED 307 (Temporary Redirect) 400 (Bad Request) Constante SC_BAD_REQUEST 401 (Unauthorized) Constante SC_UNAUTHORIZED 403 (Forbidden) Constante SC_FORBIDDEN 404 (Not Found) Constante SC_NOT_FOUND 405 (Method Not Allowed) Constante SC_METHOD_NOT_ALLOWED 415 (Unsupported Media Type) Constante SC_UNSUPPORTED_MEDIA_TYPE 417 (Expectation Failed) 500 (Internal Server Error) Constante SC_INTERNAL_SERVER_ERROR 501 (Not Implemented) Constante SC_NOT_IMPLEMENTED 503 (Service Unavailable) Constante SC_SERVICE_UNAVAILABLE 505 (HTTP Version Not Supported) Constante SC_HTTP_VERSION_NOT_SUPPORTED
Desenvolvimento de Aplicativos Web com Servlet e JSP Cdigos de status HTTP e Exceptions Bibliografia
MURACH, Joel; STEELMAN, Andrea. Murachs Java Servlets and JSP. Mike Murach & Associates, Inc, 2008. GONALVES, Edson. Desenvolvendo aplicaes Web com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persistence e Ajax. Rio de Janeiro: Editora Cincia Moderna Ltda, 2007. HALL, Marty; BROWN, Larry. Core Servlets e JavaServer Pages: tecnologias core. Rio de Janeiro: Editora Cincia Moderna Ltda., 2005. PERRY, Bruce W. Java Servlet & JSP Cookbook. OReilly Media, Inc., 2004. SANTOS, Rui Rossi dos. Java na Web: programando sites dinmicos. Rio de Janeiro: Axcel Books do Brasil Editora Ltda., 2007.