Informações
| Tipo: | Tutorial |
|---|---|
| Data de Publicação: | 01/01/2004 |
| Revisado em: | 01/01/2004 |
Vote!
Tags Relacionadas
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:
- 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.
- Definir a variável de script identificado por id.
- 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.ClassCastExceptionirá ocorrer e o processamento da tag acaba. - 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.InstantiationExceptionocorrerá e o processamento da tag acabará. - 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.InstantiationExceptionocorrerá e o processamento da tag acabará. - 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
