A cada solicitação do protocolo HTTP o servidor indica uma resposta provisória, consistindo somente da linha de status e cabeçalhos opcionais, encerrado por uma linha vazia. As respostas podem conter por exemplo erros de HTTP que são enviados para o navegador da Web pelo servidor se um problema for encontrado durante a tentativa de exibir uma página da Web. Se a página da Web não for exibida, o servidor exibirá a página de erro real enviada pelo site ou uma mensagem de erro amigável.
As vezes é útil criar uma pagina customizada para as paginas geradas automaticamente pelo servidor pois o mesmo pode mostrar nestas paginas informações que não queremos que o usuário remoto tenha conhecimento, além das boas praticas e uma mensagem esteticamente amigável, ainda temos entre os motivos, a segurança.
Para uma lista completa de todos os códigos de resposta enviados pelo servidor utilize o link abaixo:
Response Status Code: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Customizando uma Página de Erro
1 – Crie um projeto Java Web dinâmico, crie uma nova pagina chamada de index.jsp, utilize o código abaixo para o XHTML da pagina e rode a aplicação:
2 – Clique no link “Java” para que você obtenha a pagina de erro com a resposta gerada pelo servidor:
3 – Para substituir a pagina automática por uma pagina mais amigável precisamos capturar a resposta do servidor e exibir uma pagina com informações customizadas, entretanto não queremos que o usuário tenha acesso a esta pagina via o navegador, então precisamos criar uma pagina chamada de 404.jsp na pasta chamada WEB-INF e alterar o web.xml localizado na mesma pasta, redirecionando a resposta 404 para a pagina 404.jsp. Crie a pagina 404.jsp e altere o arquivo web.xml utilizando os respectivos códigos abaixo, em seguida rode a aplicação e com ela rodando copie a URL e cole no seu navegador:
4 – Clique novamente na opção “Java” e sua pagina customizada será exibida sem que nenhuma informação do servidor e de sua aplicação seja apresentada para o usuário remoto:
Exemplo:
Neste exemplo utilizamos a resposta do servidor para substituir a mensagem de erro 404 por uma mensagem exibida em uma pagina customizada.
Java
index.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Desenvolvimento Aberto - HTTP Respostas</title> <style> #header { background-color: Black; color: white; text-align: center; padding: 5px; } #nav { line-height: 30px; background-color: #eeeeee; height: 400px; width: 100px; float: left; padding: 5px; } #section { width: 450px; float: left; padding: 10px; } #footer { background-color: Black; color: white; clear: both; text-align: center; padding: 5px; } </style> </head> <body> <div id="header"> <h1>Desenvolvimento Aberto</h1> </div> <div id="nav"> <!-- HTTP Response: Este link referencia uma página que não existe, deste modo o servidor nos enviará um erro 404 --> <p> <a href='nao-existe.jsp'>Java</a> </p> <p>JSP</p> <p>JavaBeans</p> <p>Servlet</p> </div> <div id="section"> <h2>Desenvolvimento Aberto</h2> <p>Desenvolvimento Aberto é uma organização voltada para o aprendizado e discussão de técnicas de desenvolvimento focado em algumas linguagens de programação sendo parcialmente/totalmente abertas ou com licenças gratuitas para desenvolvedores de cada uma de suas respectivas marcas registradas.</p> <p>Desenvolvimento Aberto foi escrito e desenvolve utilizando ferramentas gratuitas disponibilizadas pelas melhores empresas de software da atualidade, incluindo a própria hospedagem e design deste site, sendo assim, também proporciona conteúdo gratuito, isso quer dizer que você não paga nada para aprender e utilizar as tecnologias de ponta que podem ser manuseadas através das linguagens de programação mais requisitadas pelas empresas no mercado atual.</p> </div> <div id="footer">Desenvolvimento Aberto © desevolvimento.aberto@live.com</div> </body> </html>
404.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Desenvolvimento Aberto - 404</title> </head> <body> <h1>Desenvolvimento Aberto:</h1> <h3>Desculpe! Não encontramos a página solicitada no servidor.</h3> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>DaRespostas</display-name> <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> <error-code>404</error-code> <location>/WEB-INF/404.jsp</location> </error-page> </web-app>