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>




