Cursos / Informática para Internet / Desenvolvimento Web I / Aula
Muito bem, agora que você já sabe criar um Servlet e executá-lo, vamos avançar nos conceitos e recursos dessa tecnologia, que é a base da programação web em Java. Em primeiro lugar, é importante saber que os Servlets seguem um ciclo de vida. Quando uma requisição web realizada por um cliente é mapeada para um Servlet, ou seja, requer a execução de um Servlet, o contêiner web realiza os passos a seguir.
Por fim, quando os Servlets não são mais necessários (ex.: quando o servidor web está sendo desligado ou reiniciado), o contêiner web executa o método destroy() de cada Servlet que foi instanciado.
Vejamos através da Listagem 3 o código de um Servlet utilizado para imprimir a data e a hora na qual ele foi carregado, executado e finalizado.
Listagem 3 - Servlet que demonstra seu ciclo de vidaPara funcionar, o ServletDataHora possui um atributo do tipo SimpleDateFormat, utilizado para formatar datas e horas em um String de acordo com o padrão definido pelo programador, ou seja, segundo o formato "dd/MM/yyyy - hh:mm:ss". Esse objeto é primeiramente utilizado na implementação do método init(), o qual faz uso do método log (herdado de HttpServlet) para imprimir na saída padrão a data e hora na qual o Servlet foi inicializado, como pode ser visto na aba Console do Eclipse após iniciarmos o servidor web e acessarmos o Servlet (veja a Figura 7).
O código similar é visto no método destroy(). Observe que esses dois métodos devem executar os métodos sobrescritos super.init() e super.destroy(), visando garantir uma correta inicialização e liberação de recursos definidos no código herdado da superclasse.
Observe também o uso do @override, anotação no código Java que indica ao compilador que os métodos anotados estão sobrescrevendo métodos das superclasses. É uma boa prática usar esse tipo de anotação, pois dessa forma o compilador garante que o nome e tipos dos parâmetros dos métodos definidos estão de acordo com os da superclasse.
Você pode estar pensando agora: “Por que redefinimos o método doGet() e não o método service()?” A resposta para essa pergunta será dada mais adiante, ainda nesta aula.
Versão 5.3 - Todos os Direitos reservados