Anda di halaman 1dari 6

Desenvolvimento de Aplicativos Web com Servlet e JSP Cdigos de status HTTP e Exceptions Introduo

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

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

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

Tratando excees Java


Sintaxe do elemento <error-page> para prover tratamento de exceo Java :
<error-page> <exception-type> Classe totalmente qualificada da exceo </exception-type> <location> Pgina (X)HTML ou JSP a ser invocada </location> </error-page>

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>

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

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.

Tratando erro HTTP


Sintaxe do elemento <error-page> para prover tratamento de cdigo de status HTTP :
<error-page> <error-code> Cdigo de status HTTP </error-code> <location> Pgina (X)HTML ou JSP a ser invocada </location> </error-page>

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.

Tratando excees em pginas JSP


Pode-se informar em uma pgina JSP que outra pgina JSP (ou pgina XHTML) lidar com os erros nela lanados. Para tanto, no topo da pgina JSP em que os erros podem ocorrer, devese configurar o atributo errorPage da diretiva page para apontar para a pgina JSP que capturar os erros. A pgina de exemplo abaixo ilustra o que foi exposto.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

3
<html> <head> <title>Insert title here</title> </head>

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

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.

Lanando erro de um Servlet


Pode-se lanar manualmente um cdigo de status HTTP a partir de um Servlet. Para tanto, usase o mtodo sendError() do objeto HttpServletResponse. O mtodo sendError() possui duas verses: sendError(int status) e sendError(int status, String msg)

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);

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

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

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

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.

2010 Antonio Passos | http://ead.antoniopassos.com.br | Todos os direitos reservados

Anda mungkin juga menyukai