Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
default.htm default.jsp
desenvolvendoTaglibs /WEB-INF/tld/TrabComTaglib.tld
1
- No deployment descriptor da sua aplicação você é obrigado a colocar o elemento envolvendo os elementos: - que deve ser adicionado o mesmo nome dados pelo elemento definido no TLD TrabComTaglib.tld. - aqui você define o local onde se encontra o arquivo TLD criado.
Utilizando a tag personalizada em uma página JSP Depois de desenvolvido e configurado, você precisa apenas chamar essa tag personalizada. Para chamá-la a página a seguir demonstra como fazer: utilizandoTagPers.jsp <%@ taglib uri="desenvolvendoTaglibs" prefix="jsps" %>
1
<%@ page language="java" contentType="text/html" pageEncoding="ISO-8859-1"%> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
Trabalhando com taglibs 2
- Depois de todo o desenvolvimento, que a primeira vista assusta um iniciante, você tem a diretiva taglib em ação, onde você utiliza o atributo uri necessário para chamar a sua tag personalizada. No elemento prefix você define o nome de um prefixo que será colocado na chamada a tag personalizada. - Para chamar a tag personalizada, você utiliza o nome dado no atributo prefix, da diretiva taglib, separado por dois-pontos e o nome da tag personalizada. Só para lembrá-lo, esse nome você definiu no TLD TrabComTaglib.tld no elemento .
Visite: www.integrator.com.br
62
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
Figura 3
O uso de expressões Em algumas páginas JSP construídas até agora utilizamos um elemento dinâmico chamado de expressão, e esse elemento serve para imprimir o resultado na página do usuário Web, convertendo o valor em uma String. <%= expressão %> Note que a expressão contém um sinal de igual “=” e não termina com ponto-e-vírgula.
Visite: www.integrator.com.br
63
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
Capítulo 7 JavaBeans JavaBeans são classes que possuem o construtor sem argumentos e métodos de acesso get e set. Tecnicamente isso não é necessário, para uma classe ser considerada um JavaBean. São amplamente utilizados em conjunto com JSP, com a característica de separar a lógica do visual. Essa classe pode realizar qualquer tipo de tarefa dentro de uma aplicação Java. O JavaServer Pages possui um conjunto de tags para definir o uso dos JavaBeans. A action é altamente flexível, e sua funcionalidade é controlada pelos atributos passados à action. A action é extremamente flexível e sua funcionalidade exata é controlada pelos atributos passados à ação. Se usada corretamente, essa ação pode reduzir a quantia de código scriptlet que seria necessário em caso contrário.
Curiosidade: O JavaBeans não existe apenas para o desenvolvimento Web, como é largamente usado. Sua concepção inicial era a reutilização de programação visual, os famosos “Beans” do Swing. Tecnicamente JavaBeans é o termo correto para a reutilização de partes de programas visuais, com certas funcionalidades, mas essa forma de reutilização de componentes passou a ser conhecida popularmente como componentes, na programação visual para desktop. Criando seu primeiro JavaBean Como você já sabe, é possível converter boa parte do código scriplet, presente em uma página JSP, para um JavaBean, ou componente, visando a reutilização de objetos. A parte mais importante disso é a separação da lógica da aplicação com a parte visual, facilitando assim o trabalho do designer e também o do desenvolvedor. Para utilizar um JavaBean, você precisa primeiro criá-lo. O JavaBean a seguir é um simples exibidor de mensagem, visando introduzí-lo nessa “forma” desenvolvimento.
MeuPrimeiroJavaBean.java package meupacote; public class MeuPrimeiroJavaBean { private String mensagem = ""; public String getMensagem() { return mensagem; } ) { public void setMensagem (String mensagem ; this.mensagem = mensagem } }
Visite: www.integrator.com.br
64
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
Para utilizar esse JavaBean, crie a seguinte página JSP: usandoMeuPrimJavaBean.jsp <%@ page language="java" contentType="text/html" pageEncoding="ISO-8859-1"%> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> Usando meu primeiro JavaBean
A mensagem atual é <%= primeirojb.getMensagem() %>
A mensagem, após adicionada é:
<% primeirojb.setMensagem( "Meu primeiro JavaBean" ); out.println( primeirojb.getMensagem() ); %>
A action cria uma instância da classe JavaBean e armazena uma referência para ela em uma variável scripting, chamada primeirojb. Uma expressão JSP simples é usada para chamar o método getMensagem( ) para trazer a mensagem existente. Não existindo nenhuma mensagem, o método setMensagem( String m ) lhe dá a possibilidade de colocar um texto e depois recuperá-lo com getMensagem( ). Evidentemente esse exemplo é muito básico e não vem a ser a verdadeira lógica por trás desse recurso, no qual sua utilidade está aqui apenas para ensiná-lo de forma simplificada. A imagem a seguir demonstra o resultado ocorrido na utilização desse JavaBean.
Figura 1
Visite: www.integrator.com.br
65
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
Um outro exemplo A idéia desse exemplo é criar um JavaBean que formatará suas datas.
FormatandoDatas.java package meupacote; import java.util.Date; import java.text.*; public class FormatandoDatas { private DateFormat dateFormat ; private Date data; public FormatandoDatas() { dateFormat = DateFormat. getInstance (); data = new Date();
1
}
public String getData() { return dateFormat .format(data); }
public void setData(Date data) { this.data = data; } ) { public void setFormato(String formato ); this.dateFormat = new SimpleDateFormat( formato } }
Para utilizar esse JavaBean crie a página JSP a seguir: TrabComDatas.jsp <%@ page language="java" contentType="text/html" pageEncoding="ISO-8859-1"%> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> Usando JavaBeans para formatar datas A data atual é <%= data.getData() %>
Visite: www.integrator.com.br
66
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
Esse exemplo é bem simples, pois o JavaBean chama a data atual e através da formatação executada pelo método getInstance( ) da classe DateFormat. Esse método retorna um formato no estilo SHORT, apresentando a data como mostra a imagem a seguir, do seu resultado:
Figura 2
Mas é lógico que você pode manipular essa saída e a forma que você pode usar é simples: TrabComDatas.jsp ... <% data.setFormato( "dd/MM/yy"); %>
1
A data atual é <%= data.getData() %> ...
Veja que basta, antes de chamar o método getData( ), chamar o método setFormato(String f) e dar a ele o formato de data que quer exibir. Compreendendo os JavaBeans Como você pode ter notado, até o momento, um JavaBean nada mais é do que uma classe que obedece a um conjunto de regras, utilizando métodos “getters” e “setters”. Mas essas regras são adotadas voluntariamente pelo desenvolvedor, onde se ele desejar, poderá iniciar seus métodos com outros nomes. É claro que isso implicaria em outras situações que não estão em discussão nesse momento. O que realmente você deve entender é que, qualificar uma classe como sendo um JavaBean é uma situação exclusivamente sua. O compilador não lhe dirá: isso é um JavaBean. Você diz a ele.
Visite: www.integrator.com.br
67
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
As regras Em uma situação técnica, você também tem que seguir algumas regras, para que o que você está desenvolvendo seja realmente um JavaBean. Os JavaBeans, como já foi dito anteriormente, existem tanto para modelar sistemas gráficos criados para desktop ou também para aplicações Web em conjunto com páginas JSP. Isso, na prática, implica em duas diferenças iniciais básicas: 1. JavaBeans criados para trabalhar em desenvolvimento de aplicações gráficas desktop precisam implementar a interface java.io.Serializable. Isso acontece porque são armazenados em arquivos. Já no caso de páginas JSP, isso não é necessário, uma vez que, normalmente, só existem em memória. 2. Os JavaBeans desenvolvidos para aplicações desktop tem uma tendência dos nomes com métodos iniciando com set e get coincidirem com os nomes dos atributos da classe, pois esses representam, numa maioria das vezes, objetos visuais que necessitam ser configurados. A tabela a seguir demonstra as regras de trabalho com JavaBeans: Tabela 1
Regra Construtor
Descrição da Regra Se o JavaBean não contiver nenhum construtor declarado explicitamente, o interpretador Java considerará, já faz parte da definição da linguagem, a existência de um construtor implícito sem argumentos sem nenhuma utilidade. Persistência Os JavaBeans podem implementar a interface java.io.Serializable. Mas como já foi dito, essa regra não precisa ser obedecida. A não existência dessa implementação o impossibilita de ser salvo em arquivo ou ser enviado de um computador para outro em uma aplicação distribuída. Atributos Se o JavaBean criado possui um atributo que você deseja obter o seu valor, ele deve ser acessível por um método público que, de preferência, deve ter o mesmo nome, com o prefixo get. Por exemplo: um atributo chamado teste deve ser acessível externamente por um método public getTeste( ). No caso de querer alterar o valor do atributo, o mesmo deve ser feito por um outro método, também público, void, com o prefixo set; tendo também, um parâmetro de mesmo tipo para tal mudança. Por exemplo: seguindo o caso anterior, o atributo teste será alterado em seu valor através do método public void setTeste(Tipo valor). Executando essa normativa, você tem os atributos encapsulados. Portanto esses mesmos atributos devem ser qualificados como protected ou private.
Visite: www.integrator.com.br
68
Desenvolvendo Web com JSP, Servlet,JSTL, JavaServer Faces e Struts
Usando as Actions e Como você viu, os JavaBeans, acessíveis através da action , são simples de trabalhar dentro das páginas JSP. Ma a utilização ainda de scriplets não agrada no seu trabalho. Evidentemente você já deve ter concluído que deve existir actions específicas para isso. Como o nome já sugere, a tag é usada para alterar uma propriedade existente em seu JavaBean. Para um JavaBean, usando o exemplo da data feito anteriormente, você pode setar uma propriedade chamada data, desde exista o método setData( ). A seguir você tem a sintaxe dessa tag:
Para colocar em prática, você vai alterar o exemplo último, tirando o scriptlet e o substituindo pela action , como mostra a seguir o detalhe em destaque: TrabComDatas.jsp ...
1 A data atual é <%= data.getData() %>