Introdução

Quando instanciamos um bean dentro de um JSP, podemos definir um escopo para a variável.

Fazemos isso usando o atributo scope da tag <jsp:useBean>.

<jsp:useBean id="pessoa" class="meupacote.Pessoa" scope="request"/>

No exemplo acima, instanciamos um JavaBeans em uma variável pessoa alocada no escopo request.

Isto quer dizer que a variável estará disponível até o final da requisição atual. Na próxima requisição, uma nova variável será criada.

Escopos

O atributo scope aceita um dos quatro valores a seguir:

Inicialização do bean

Quando utilizamos a tag <jsp:useBean>, primeiro é feito uma busca se já existe um bean com o id especificado naquele escopo, para depois iniciar uma nova instância.

Assim, se tivermos duas páginas JSP usando beans no escopo da aplicação, conforme exemplos a seguir, então o atributo frodo será iniciado apenas na primeira vez que uma das páginas ser acessada pelo usuário.

<jsp:useBean id="frodo" class="meupacote.Pessoa" scope="application"/>
<jsp:useBean id="frodo" class="meupacote.Pessoa" scope="application"/>

Quando escopo não é definido

Usando a tag <jsp:useBean> sem definir um escopo, então o scope=page será usado.

Algoritmo de busca

Quando tentamos utilizar um bean através da Expression Language (EL), também chamado de variável de template, há um tipo de busca especial por todos os escopos na sequência

page → request → session → application

Se a variável não existir em nenhum dos escopos, então teremos o valor null.

Isto é, na utilização da variável de template

O valor entregue é: ${frodo}

ocorre o algoritmo ilustrado no fluxograma abaixo.

Leitura Recomendada

Capítulo 13