Informações

Tipo: Tutorial
Data de Publicação: 01/01/2004
Revisado em: 01/01/2004

Vote!

  • Currently 5,0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags Relacionadas

jsp taglibrary

Comentários ( 3 )

Imprimir

Criando Javabeans com Tag Library

por:

Gleydson Lima (gleydson@jeebrasil.com.br)

Ações possibilitam a realização de tarefas complexas como instanciação de objetos, comunicação com recursos do lado do servidor como páginas JSP e servlets sem a necessidade de código Java. Embora o mesmo possa ser feito com o uso de código Java dentro de scriptlets, o uso das tags de ações promovem reusabilidade de seus componentes e aumenta a capacidade de manutenção da página.

Usando componentes JavaBeans

A tecnologia de componentes para JSP é baseada em componentes JavaBeans (ver tutorial de JavaBeans). Antes de acessar um bean dentro de uma página JSP, é necessário identificar o bean e obter uma referência dele. A tag jsp:useBean tenta obter uma referência de um bean que já esteja criado, dependendo do escopo em que ele foi definido. Caso não haja o componente definido haverá a criação de um novo objeto.

Por exemplo a tag:

<jsp:useBean  id="contador" class="jspbrasil.Contador" scope="session"/>

Neste exemplo, a tag useBean instanciará um objeto que será identificado por contador, a partir da classe jspbrasil.Contador. A definição do escopo depende muito do projeto em questão. No exemplo acima, este objeto criado será compartilhado por toda sessão que será mantida com o usuário. Caso encontre-se uma nova tag de criação de um objeto da classe jspbrasil.Contador, o objeto já instanciado será usado não havendo a necessidade de criação de outro.

Passos para criação do objeto:

  1. Tentativa de localizar o objeto baseado nas informações (id, scope). Este inspesão é feita sincronizada apropriadamente por escopo para evitar comportamentos não-determinísticos.
  2. Definir a variável de script identificado por id.
  3. Se o objeto for encontrado, a variável é inicializada com a referência localizada e então é realizado um casting para o tipo específico. Se o cast falhar então uma exceção do tipo java.lang.ClassCastException irá ocorrer e o processamento da tag acaba.
  4. Se o objeto não for encontrado no escopo e a classe não poder ser localizada então uma exceção do tipo java.lang.InstantiationException ocorrerá e o processamento da tag acabará.
  5. Se o objeto não foi encontrado no escopo dado e a classe for encontrada com um construtor padrão (sem argumentos) o objeto é instanciado e relacionado com a variável de scriplet identificada por id.

    Se um contrutor sem argumentos não for encontrado então uma exceção do tipo java.lang.InstantiationException ocorrerá e o processamento da tag acabará.

  6. O processamento do corpo da tag é então executado. Um corpo de uma tag <jsp:useBean>é executado para realizar algumas inicializações desejadas, como no exemplo abaixo:
<jsp:useBean id="clientes" class="Clientes" scope="page">
   <jsp:setProperty name="clientes" property="nome" value="Rafael dos Santos">
   <jsp:setProperty name="clientes" property="telefone" value="648-2343"/>
</jsp:useBean>

O exemplo acima inicializa o objeto instanciado clientes com as propriedades nome e telefone.

Entendendo os Escopos:

Os escopos definem o ciclo de vida de um objeto, eles podem ser definidos como:

  • page: Objetos definidos com o escopo page são vistos apenas pela página onde ele foi criado. As referências para objetos no contexto page são armazenados no objeto pageContext.
  • request: Objetos definidos no escopo request são vistos nas páginas usadas para responder a requisição do usuário. Se uma página é redirecionada para outra os objetos de escopo request são preservados uma vez que fazem parte da mesma requisição. As referências a objetos do contexto request são armazenados no objeto implícito request.
  • session: Objetos definidos no escopo sessão são acessíveis por páginas que fazem parte da mesma sessão. As referências as esses objetos são armazenadas no objeto session.
  • application: Objetos definidos no escopo application são acessíveis por toda aplicação JSP em questão e são armazenadas no objeto implícito application.

A tag <jsp:useBean> tem a seguinte sintáxe básica:

<jsp:useBean id="nome" scope="page|request|session|application" class="nome_completo_da_classe"/>

Comentários (3)

Meu amigo isso é dificil!! :(
postado por Melquior em 13/12/2006 às 23:21
Muito interressante essa questão do "scope", nao sabia que tinhas essas facilidades, artigo bom para quem esta começando no JEE .
postado por Rodrigo em 14/12/2006 às 23:21
Minha nossa, eu to começando em JSP e sinceramente tenho que admitir que é a coisa mais bagunçada que já vi. Um Milhão de formas de se fazer a mesma coisa, o desenvolvedor não sabe nem por onde começar, porque são inúmeros frameworks com nomes parecidos, vários servidores, vários etc etc.. Eu ainda tenho cabelo imagina quem não tem? Dá pra ficar louco né? Até agora não descobri o que devo instalar pra ter um bom ambiente de trabalho JSP. PHP e ASP por exemplo é tão rápido = Servidor->Apache ou IIS Linguagem-> PHP ou ASP Banco de Dados->MySQL ou MSSQL Fácil e rápido nada de 300 configurações, depois os frameworks são óbvios e praticos. Agora este JSP cara meu, que enrolacera! Imagino como fica a cabeça dos caras que mantem este projeto :|
postado por Gilberto Albino em 12/10/2008 às 23:21
Comente!

Observações

Os campos em negrito são obrigatórios.

Para evitar problemas, este espaço é moderado. Após o envio do comentário será necessário aguardar pela sua aprovação.