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

arrow_back Aula 05 - Introdução e Recursos JavaServer Pages

Declaração de variáveis

Nas páginas anteriores, você viu a implementação de uma página JSP (acessos.jsp) para contagem da quantidade de acessos realizados. Para implementar essa página, foi utilizada a classe Contador, bem como seus métodos estáticos novoAcesso() e getQuantidadeAcessos(). Vamos tentar agora implementar essa mesma funcionalidade, sem fazer uso da classe auxiliar Contador.

Você já aprendeu que os marcadores <% e %> são utilizados para delimitar scriptlets, ou seja, código Java embutido nos arquivos JSP. Sendo assim, será que podemos utilizar scriptlets para declarar uma variável no próprio arquivo JSP e utilizá-la como contador (antigo código da classe Contador)? Veja o código JSP a seguir.

Listagem 6 - Código JSP declarando e usando variáveis

No código mostrado na Listagem 6, temos a declaração de uma variável de nome cont e sua inicialização com o valor 1. Seu valor é impresso indicando a quantidade de acessos já realizada (inicialmente igual a 1) e depois o seu valor é incrementado em uma unidade, indicando que o próximo valor a ser impresso deve ser 2 (segundo acesso). Ao rodar esse código, a tela da Figura 1 é apresentada, indicando que o código está correto. Entretanto, os acessos posteriores também apresentarão o número 1, como se fosse o primeiro acesso. Você consegue perceber qual o problema do código mostrado?

Página JSP mostrando primeiro acesso.

Vamos observar um possível código de Servlet gerado para esse JSP:

Listagem 7 - Código (simplificado) do Servlet correspondente ao JSP da Listagem 1.

Quando o arquivo JSP foi traduzido para um Servlet, a variável cont virou uma variável local ao método _jspService(). Sendo uma variável local, seu valor final é perdido no final da execução do método.

Então, o que nós precisamos para resolver nosso problema é fazer com que essa variável cont seja uma variável de instância (atributo do Servlet) e não simplesmente uma variável local. Isso pode ser feito através de um elemento JSP chamado de declaração. Uma declaração é delimitada pelos marcadores <%! e %> e contém a declaração de uma variável. Na tradução do JSP para o Servlet, essa variável será traduzida para um atributo da classe gerada. Vejamos agora como deve ficar a declaração da variável cont:

E vejamos também como fica o Servlet gerado para o JSP com a nova forma de declaração de variável:

Listagem 8 - Código (simplificado) do Servlet correspondente ao JSP usando <%! %>

Versão 5.3 - Todos os Direitos reservados