Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
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.
package aula02;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ServletDataHora")
public class ServletDataHora extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private SimpleDateFormat format =
new SimpleDateFormat("dd/MM/yyyy - hh:mm:ss");
@Override
public void init() throws ServletException {
super.init();
log("ServletDataHora iniciado às "
+ format.format(new Date()));
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter saida = response.getWriter();
saida.write("<HTML><BODY>Olá! A data/hora atual é: ");
saida.write(format.format(new Date()));
saida.write("</BODY></HTML>");
saida.close();
}
@Override
public void destroy() {
log("ServletDataHora finalizado às "
+ format.format(new Date()));
super.destroy();
}
}
Para 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