Em varias postagens deste blog este arquivo foi mencionado, bem como algumas configuracoes, mas o que e este arquivo? Pra que serve?O arquivo web.xml esta presente praticamente em todas as aplicacoes web Java, nao importa se voce utiliza o framework A, B ou C, sempre tera um arquivo chamado web.xml dentro da pasta WEB-INF, isso por que este arquivo contem todas as informacoes do seu projeto. Este arquivo e lido diretamente pelo seu servidor, e e atraves dele que o servidor fica sabendo qual framework voce esta utilizando, quais os niveis de seguranca que ele deve utilizar, qual o tempo de vida de seus servlets, ate mesmo qual sera sua pagina inicial.Nota: O arquivo web.xml e case-sensitive, ou seja AAA e diferente de aaa, entao cuidado ao escrever. Por padrao, todas as tags sao escrita com letras minusculas, e hifens (-) sao utilizados para separar palavras (Exemplos: error-code,web-app, param-name, etc.)O arquivo web.xml precisa de uma inicializacao, um cabecalho padrao que define como o servidor fara a leitura do arquivo.<?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>Agora que o servidor sabe como interpretar este arquivo, ele precisa de um comeco e de um fim, todas as tags de configuracao do arquivo web.xml devem obrigatoriamente ser inseridas entre as tags <web-app> e </web-app>.Outra tag muito utilizada e a tag display-name, que define o titulo padrao do seu projeto, a mensagem informada dentro desta tag sera utilizada por todas as paginas da aplicacao.Exemplo: <display-name>Meu projeto!!!</display-name>E possivel tambem definir alguns parametros universais para seu projeto, por exemplo, queremos definir uma variavel global para armazenar o nome do site, e em qualquer pagina podemos capturar e exibir este valor. Para isso utilizamos a seguinte configuracao no web-xml:<context-param><param-name>nomeSite</param-name><param-value>Meu Projeto!</param-value></context-param>Onde param-name guarda o nome do parametro, e esta informacao que devemos solicitar em nossas paginas, eparam-value e o valor que esta variavel ira nos retornar sempre que a chamarmos.Para recuperar esta variavel em qualquer lugar da aplicacao, basta utilizar o seguinte comando (retorna String):getServletContext().getInitParameter(nomeSite);Uma coisa muito importante e a configuracao dos servlets no web.xml!Calma, nao e preciso configurar cada jsp, somente as classes que irao trabalhar de forma visual, diretamente na tela do usuario, jsps apesar de serem servlets nao precisam ser configurados.Para configurar um servlet temos as seguintes tags:<servlet><servlet-name>meuServlet</servlet-name><description></description><servlet-class>com.meu.pacote.ServletTal</servlet-class><load-on-startup>1</load-on-startup></servlet>Aqui funciona mais ou menos assim:As tags <servlet> e </servlet> indicam que entre elas esta a configuracao de um servlet.A tag servlet-name contem o apelido que iremos dar ao nosso servlet, e e este apelido que sera invocado pela aplicacao quando formos utilizar este servlet, e uma tag obrigatoria.A tag description e apelas ilustrativa, ela nao e funcional, serve para escrevermos uma breve descricao desta servlet, muito importante para futuras manutencoes, porem nao e obrigatoria, coloca quem quer.A tag servlet-class tambem e obrigatoria, ela indica onde esta a classe propriamente dita, aqui devemos informar o caminho completo do servlet, com pacote e tudo mais.A tag load-on-startup nao e obrigatoria, mas se voce coloca-la, estara informando ao servidor que este servlet deve ser carregado sempre que o projeto for iniciado, e o numero que informamos dentro desta