• Nenhum resultado encontrado

JSP com JavaBeans

No documento Java Aplicações Web (páginas 130-135)

O atributo ação da tag page possibilita a realização de tarefas complexas. Embora se obtenha resultados equivalentes com o uso de código Java dentro de scriptlets, o uso das tags de ações promove reusabilidade de seus componentes e aumenta a capacidade de manutenção da página.

q

Uso do atributo ação da tag <@page /> permite: 1 Instanciação de objetos.

1 Comunicação com recursos do lado do servidor como páginas JSP e servlets. 1 Sem a necessidade de código Java.

Resultado equivalente com o uso de código Java dentro de scriptlets. Uso das tags de ações.

1 Promove reusabilidade de seus componentes. 1 Aumenta a capacidade de manutenção da página.

A tecnologia de componentes para JSP é baseada em componentes JavaBeans. Antes de acessar um bean dentro de uma página JSP, é necessário identificar o bean e obter uma referência dele.

Figura 9.3 Gerenciador de paletas do Netbeans.

Capí tu lo 9 - J av ab ean s

q

Tecnologia de componentes para JSP. 1 Baseada em componentes JavaBeans. 1 Identificar o bean.

2 Antes de acessá-lo dentro de uma página JSP. 2 Necessário identificar e obter sua referência. 1 tag <jsp:useBean />

2 Tenta obter uma referência de um bean que já esteja criado. 2 Depende do escopo em que ele foi definido.

3 scope=”page | request | session | application” Por exemplo:

<jsp:useBean id="user" class="Global" scope="session"/>

q

id 1 id=”beanInstanceName” class 1 class=”package.class” scope

1 scope=”page | request | session | application” beanName

1 beanName=”{package.class | <%= expression %>}” Type

1 type=”package.class”

A tag acima instanciará um objeto que será identificado por user, a partir da classe Global. A definição do escopo depende muito do projeto em questão. No exemplo anterior, esse 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 Global, o objeto já instanciado será usado, não havendo a necessidade de criação de outro.

q

Passos para a criação do objeto: 1 Tentativa de localizar o objeto. 1 Baseado nas informações (id, scope). 1 Inspeção é feita sincronizada.

1 Definir a variável de script identificado por id. 1 Objeto encontrado.

2 A variável é inicializada com a referência à localizada e então é realizado um casting para o tipo específico.

1 Se o Cast falhar:

2 Uma exceção do tipo java.lang.ClassCastException vai ocorrer e o processamento da tag acaba.

õe

s W

eb

q

1 Objeto não encontrado no escopo e a classe não pode ser localizada:

2 Uma exceção do tipo java.lang.InstantiationException vai ocorrer e o processa- mento da tag acaba.

1 Objeto não encontrado no escopo e a classe for encontrada com um construtor padrão (sem argumentos):

2 O objeto é instanciado e relacionado com a variável de scriplet identificada por id. 1 Se um construtor sem argumentos não for encontrado:

2 Então uma exceção do tipo java.lang.InstantiationException ocorrerá e o processamento da tag acabará.

Caso o processamento do corpo da tag venha a ser realizado, ele poderá realizar algumas inicializações desejadas, como no exemplo a seguir, onde o objeto clientes é instanciado com as propriedades nome e telefone.

<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>

Cabe entender melhor os escopos possíveis para a definição de um bean. São eles:

q

1 page: objetos são vistos apenas pela página onde ele foi criado. As referências para esses objetos são armazenados no objeto pageContext.

1 request: objetos são vistos nas páginas usadas para responder a requisição do usuário. Se uma página é redirecionada para outra, esses objetos são preservados, uma vez que fazem parte da mesma requisição. As referências para esses objetos são armazenadas no objeto implícito request.

1 session: objetos são acessíveis por páginas que fazem parte da mesma sessão. As referências para esses objetos são armazenadas no objeto session.

1 application: objetos são acessíveis por toda aplicação JSP em questão e são armaze- nados no objeto implícito application.

Vejamos um exemplo de uso de JSP com JavaBeans. No código JSP a seguir, é realizada a chamada a um JavaBean que é a classe Global. Através da tag <jsp:useBean> é criado um objeto chamado user, que será utilizado ao longo do código para realizar chamadas aos métodos implementados para essa classe. Podemos citar a linha do comando user.checkUser(); como exemplo de execução de um método da classe Global dentro do código JSP.

<html> <head>

<title>Página Principal</title> </head>

<%@ page import = “Global" %>

<jsp:useBean id="user" scope="page" class="Global" /> <jsp:setProperty name="user" property="login" />

Capí tu lo 9 - J av ab ean s <% user.checkUser(); if (!(user.getUser().equals(“adm"))) { %> <jsp:forward page="nopermition.jsp" /> <% } %> <h1>Seção de Administrador</h1><br><br> <center>

Bem Vindo!!! Administrador. </center>

<br><a href="javascript:history.back()">Voltar</a><br> </body>

</html>

Nesse outro exemplo, começamos mostrando o código HTML de um formulário de entrada de dados.

<!DOCTYPE html> <html>

<head>

<title>JSP e JavaBean</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head>

<body>

<form method="post" action="ex01UseBean.jsp"> Digite seu nome:

<input type="text" name="nome" size="50" /> <br /> Selecione o sexo: <select name="sexos"> <option value="Feminino">Feminino</option> <option value="Masculino">Masculino</option> </select> <br />

<input type="reset" name="b1" value="Limpar" /> &nbsp;&nbsp;

<input type="submit" name="b2" value="Enivar" /> </form>

</body> </html>

O código do bean a ser utilizado é o seguinte.

<%@page contentType="text/html" pageEncoding="ISO-8859-1"%> <jsp:useBean id="pessoa" class="modelo.Pessoa" />

<jsp:setProperty name="pessoa" property="nome" /> <jsp:setProperty name="pessoa" property="sexo" /> <!DOCTYPE html>

<html> <head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP e JavaBean</title>

aç õe s W eb </head> <body>

<h1>Informações do objeto instanciado do Bean</h1> <hr> Nome: ${pessoa.nome} <br> Sexo: ${pessoa.sexo} <hr> <a href="ex01UseBean.html">Voltar</a> </body> </html>

Uma alternativa é utilizar o bean com atribuição genérica, conforme podemos ver no trecho de código a seguir.

<%@page contentType="text/html" pageEncoding="ISO-8859-1"%> <jsp:useBean id="pessoa" class="modelo.Pessoa" />

<jsp:setProperty name="pessoa" property="*"/> <!DOCTYPE html>

<html> <head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>JSP e JavaBean</title>

</head> <body>

<h1>Informações do objeto instanciado do Bean</h1> <hr> Nome: ${pessoa.nome} <br> Sexo: ${pessoa.sexo} <hr> <a href="ex02UseBean.html">Voltar</a> </body> </html>

Exercício de fixação e

JavaBeans

Para você, qual é a principal característica e como JavaBeans pode auxiliar no processo de desenvolvimento de sofwares?

Ca pí tu lo 1 0 - D eploy me nt d e a pl ic aç ão Jav a W eb

obj

et

ivo

s

co

nc

ei

to

s

10

No documento Java Aplicações Web (páginas 130-135)