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>





