Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 13 - Desenvolvendo uma livraria virtual – Parte 2

Contexto dos Servlets

Na aula anterior, você estudou a modelagem de diversas classes, como a classe Livraria, responsável por implementar as funcionalidades da livraria: manutenção do estoque e venda dos livros. Para que essa classe e suas operações fiquem disponíveis para a camada de apresentação Web (Servlets e arquivos JSP), é necessário disponibilizar o sistema de alguma forma. Como já vimos antes, vamos disponibilizar o sistema por meio do contexto dos Servlets. Isso é feito pela classe LivrariaContextListener, mostrada na Listagem 1. Um ContextListener pode ser adicionado através do menu New... -> Listener ou diretamente através do menu New... -> Class adicionando a referência à interface ServletContextListener após a criação da classe.

x
1
package livraria.servlet;
2
3
import javax.servlet.ServletContext;
4
import javax.servlet.ServletContextEvent;
5
import javax.servlet.ServletContextListener;
6
import javax.servlet.annotation.WebListener;
7
8
import livraria.negocio.Livraria;
9
10
@WebListener
11
public final class LivrariaContextListener implements ServletContextListener {
12
13
    public static final String SISTEMA_LIVRARIA = "sistemaLivraria";
14
15
    public void contextInitialized(ServletContextEvent event) {
16
        ServletContext context = event.getServletContext();
17
18
        try {
19
            Livraria livraria = new Livraria();
20
            context.setAttribute(SISTEMA_LIVRARIA, livraria);
21
        } catch (Exception ex) {
22
            System.out.println(
23
            "O sistema de livraria não pode ser publicado no contexto: "
24
            + ex.getMessage());
25
        }
26
    }
27
28
    public void contextDestroyed(ServletContextEvent event) {
29
        ServletContext context = event.getServletContext();
30
31
        Livraria livraria = (Livraria) context.getAttribute(SISTEMA_LIVRARIA);
32
33
        if (livraria != null) {
34
            livraria.fechar();
35
        }
36
37
        context.removeAttribute(SISTEMA_LIVRARIA);
38
     }
39
}
Listagem 1 - Classe que publica o sistema da livraria online através do contexto dos Servlets

Como você pode notar, temos o método contextInitialized() (linha 13), que será executado no evento de inicialização do contexto dos Servlets. Esse método é executado apenas uma vez no servidor e ele instancia a classe Livraria, criando, por meio da linha 17, o núcleo da nossa Livraria virtual, o qual é publicado através de um atributo de contexto de nome “sistemaLivraria”, conforme instruções mostradas pelas linhas 11 e 18. O uso da constante SISTEMA_LIVRARIA evita que o texto “sistemaLivraria” seja escrito em vários lugares (sujeito a erros).

Dica

Utilize a opção New / Listener do Eclipse ao invés de New / Class para criar novos Listeners. Assim, a configuração deles no arquivo web.xml (ou, se for o caso, a anotação de @WebListener na classe criada) será feita automaticamente.

Observação: na versão 3.0 do Servlet, é adicionada a anotação @WebListener que remove a necessidade de criação do mapeamento do listener no web.xml. A anotação já define o weblistener e o mapeamento de acordo com o nome do arquivo java criado.

Versão 5.3 - Todos os Direitos reservados