O escopo de um objeto descreve a disponibilidade de sua abrangência e quem tem acesso a ele. Por exemplo, se um objeto é definido para ter alcance a uma pagina página, então ele está disponível apenas durante a duração da solicitação atual nessa página antes de ser destruído pelo contêiner. Neste caso, somente a página atual tem acesso a esses dados, e ninguém mais pode lê-lo. No outro extremo da escala, se um objeto tem espaço de aplicação, em seguida, qualquer página pode utilizar os dados porque ele estará disponível durante toda a aplicação, o que significa até que o contêiner seja destruído.
Escopos de um JavaBean
- Page: Os objetos com escopo de página são acessíveis apenas dentro da página em que são criados.
- Request: Os objetos com escopo de solicitação são acessíveis a partir de páginas que processão o o mesmo pedido em que eles foram criados.
- Session: Os objetos com escopo de sessão são acessíveis a partir de páginas processadas que estão na mesma sessão em que eles foram criadas.
- Application: Os objetos com escopo de aplicação são acessíveis a partir de páginas JSP que residem na mesma aplicação. Isso cria um objeto global que está disponível para todas as páginas.
Criando uma aplicação com o escopo de Sessão
Caso você não defina um escopo quando você declara o uso de um Bean em uma pagina JSP, o escopo padrão estabelecido será por pagina, ou seja apenas a pagina no qual o Bean pertence poderá acessar os valores das propriedades nelas modificadas.
Quando utilizamos o escopo por sessão os Beans funcionam de certo modo como objetos estáticos ou seja toda a sessão poderá acessar os mesmos valores de suas propriedades não importa a quantidade de paginas existentes na aplicação que utilizam o mesmo Bean. Se aberto uma nova sessão o Bean então será inicializado de acordo com seus valores no construtor do objeto.
1 – Crie uma aplicação Web com duas paginas JSP chamadas de index.jsp e index2.jsp. Crie um classe chamada de MeuBean.java e utilize os códigos abaixo em cada respectivo arquivo. Note que estamos utilizando o método que altera a propriedade Setter do Bean com parâmetros. Assim que você compilar sua aplicação o construtor do Bean inicializará o valor da propriedade cor do texto do Box como vermelho (Red), utilize manualmente o parâmetro para mudar a cor do texto para azul (Blue) dentro do navegador do Eclipse cujo nos propicia uma sessão única:
?cor=blue
2 – Apague o parâmetro e mude manualmente a URL do navegador do Eclipse para a index2.jsp, você notará que o Bean manteve a cor da propriedade que definimos na pagina anterior, isto é devido estarmos na mesma sessão, deste modo o construtor da classe não reinicializou o valor da propriedade cor:
3 – Para abrir outra sessão você precisa somente copiar a URL da pagina 2 do navegador do Eclipse e colar no seu Browser, você verá que quando outra sessão da aplicação web é inicializada o Bean é inicializado novamente. Você pode agora brincar com a aplicação no navegador do Eclipse e no navegador externo, para entender melhor como funciona os JavaBeans por sessão:
Exemplo:
Neste exemplo criamos duas paginas JSP e um JavaBean que interage entre as paginas pela sessão do navegador, você poderá brincar com as propriedades de cores no texto da pagina para entender como é utilizado o recurso de sessão de um objeto Bean utilizando o navegador do Eclipse e um navegador externo ao mesmo tempo.
Java
package org.desenvolvimento.aberto; public class MeuBean { // Declara atributo private String cor; // Construtor da classe public MeuBean() { cor = "Red"; } // Método Getter public String getCor() { return cor; } // Método Setter public void setCor(String cor) { this.cor = cor; } }
JSP – index.jsp
<html> <head> <title>Desenvolvimento Aberto</title> <!-- Inicializa o JavaBean --> <jsp:useBean id="meubean" class="org.desenvolvimento.aberto.MeuBean" scope="session" /> <style type="text/css"> div { background-color: lightgrey; width: 300px; padding: 25px; border: 25px solid black; margin: 25px; } </style> </head> <body> <h1>JavaBeans e Páginas JSP</h1> <h2>Escopo: Session - Pagina 1 </h2> <h4>Este é o valor da cor:</h4> <jsp:setProperty name="meubean" property="cor" param="cor" /> <div style="color: <jsp:getProperty name="meubean" property="cor" />"> Desenvolvimento Aberto <br> Página 1</div> <p> <jsp:getProperty name="meubean" property="cor" /> </p> </body> </html>
JSP – index2.jsp
<html> <head> <title>Desenvolvimento Aberto</title> <!-- Inicializa o JavaBean --> <jsp:useBean id="meubean" class="org.desenvolvimento.aberto.MeuBean" scope="session"/> <style type="text/css"> div { background-color: lightgrey; width: 300px; padding: 25px; border: 25px solid black; margin: 25px; } </style> </head> <body> <h1>JavaBeans e Páginas JSP</h1> <h2>Escopo: Session - Pagina 2 </h2> <h4>Este é o valor da cor:</h4> <jsp:setProperty name="meubean" property="cor" param="cor" /> <div style="color: <jsp:getProperty name="meubean" property="cor" />"> Desenvolvimento Aberto <br> Página 2</div> <p> <jsp:getProperty name="meubean" property="cor" /> </p> </body> </html>