Você está na página 1de 11

Grupo de Usurios Java

http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 1
JavaServer Faces: A mais nova
tecnologia Java para desenvolvimento WEB
Talita Pitanga
Conhea um pouco sobre a mais nova tecnologia para desenvolvimento de aplicaes WEB:
JavaServer Faces.
Introduo

As tecnologias voltadas para o desenvolvimento de aplicaes WEB tm mudado constantemente.
Como sabemos, inicialmente os sites possuam apenas contedo esttico, ou seja, o contedo de uma
pgina no podia ser modificado em tempo de execuo. Depois, os sites passaram a oferecer pginas
com contedos dinmicos e personalizados. Diversas tecnologias esto envolvidas no desenvolvimento
das aplicaes WEB como, por exemplo, CGI (Common Gateway Interface), Servlets e JSP (Java Server
Pages).

A primeira tecnologia voltada para a construo de pginas dinmicas foi a CGI. Os programas
CGI podem ser escritos em qualquer linguagem de programao. Eles, porm, apresentam problemas de
portabilidade e escalabilidade, alm de mesclarem as regras de negcio com a visualizao. Vale salientar
que um servidor que usa este tipo de tecnologia pode ter seu desempenho comprometido, uma vez que
cada solicitao recebida de uma CGI requer a criao de um novo processo.

Em seguida vieram os servlets. Similarmente s CGIs, servlets so pequenos programas feitos
em Java que encapsulam alguma funcionalidade inerente sua aplicao WEB. Diferentemente das CGIs,
servlets so objetos Java que no precisam ser executados em outro processo: o processamento
executado dentro de uma thread do processo do servidor. No entanto, eles ainda no resolvem o
problema da separao das regras de negcio da visualizao, dificultando a manuteno.

Posteriormente surgiram as pginas JSP. Elas so facilmente codificadas e produzem contedos
reutilizveis. Assim como os servlets, as JSPs tambm no resolvem o problema da manuteno das
aplicaes.

Esse problema s foi resolvido quando comeou a se aplicar os design patterns no
desenvolvimento das pginas. No caso das tecnologias para desenvolvimento WEB usando Java, o design
pattern utilizado o MVC (Model-View-Controller). Se voc no sabe o que MVC, fique tranqilo!!
Falaremos um pouco sobre esse padro mais adiante. Mas voc pode encontrar algo sobre esse pattern
bem aqui pertinho: http://www.guj.com.br/forum/viewtopic.php?t=7228&highlight=mvc.

Com a grande utilizao dos patterns, principalmente no mundo Java, comearam a surgir
diversos frameworks para auxiliar no desenvolvimento de aplicaes WEB. Posso apostar que a maioria
de vocs j ouviu falar em Struts ou WebWork.

Finalmente chegamos ao assunto que se prope esse artigo. Se voc for como eu, j deve ter
feito a seguinte pergunta para si mesmo: Beleza... mas e da? Afinal, o que JavaServer Faces?

Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 2

O que JavaServer Faces?

JSF uma tecnologia que incorpora caractersticas de um framework MVC para WEB e de um
modelo de interfaces grficas baseado em eventos. Por basear-se no padro de projeto MVC, uma de
suas melhores vantagens a clara separao entre a visualizao e regras de negcio (modelo).

A idia do padro MVC dividir uma aplicao em trs camadas: modelo, visualizao e controle.
O modelo responsvel por representar os objetos de negcio, manter o estado da aplicao e fornecer
ao controlador o acesso aos dados. A visualizao representa a interface com o usurio, sendo
responsvel por definir a forma como os dados sero apresentados e encaminhar as aes dos usurios
para o controlador. J a camada de controle responsvel por fazer a ligao entre o modelo e a
visualizao, alm de interpretar as aes do usurio e as traduzir para uma operao sobre o modelo,
onde so realizadas mudanas e, ento, gerar uma visualizao apropriada.

O Padro MVC segundo JSF

No JSF, o controle composto por um servlet denominado FacesServlet, por arquivos de
configurao e por um conjunto de manipuladores de aes e observadores de eventos. O FacesServlet
responsvel por receber requisies da WEB, redirecion-las para o modelo e ento remeter uma
resposta. Os arquivos de configurao so responsveis por realizar associaes e mapeamentos de
aes e pela definio de regras de navegao. Os manipuladores de eventos so responsveis por
receber os dados vindos da camada de visualizao, acessar o modelo, e ento devolver o resultado para
o FacesServlet.

O modelo representa os objetos de negcio e executa uma lgica de negcio ao receber os dados
vindos da camada de visualizao. Finalmente, a visualizao composta por component trees
(hierarquia de componentes UI), tornando possvel unir um componente ao outro para formar interfaces
mais complexas. A Figura 1 mostra a arquitetura do JavaServer Faces baseada no modelo MVC.


Figura 1 - Arquitetura JSF baseada no modelo MVC
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 3

Caractersticas e Vantagens

JavaServer Faces oferece ganhos no desenvolvimento de aplicaes WEB por diversos motivos:
Permite que o desenvolvedor crie UIs atravs de um conjunto de componentes UIs pr-
definidos;
Fornece um conjunto de tags JSP para acessar os componentes;
Reusa componentes da pgina;
Associa os eventos do lado cliente com os manipuladores dos eventos do lado servidor
(os componentes de entrada possuem um valor local representando o estado no lado
servidor);
Fornece separao de funes que envolvem a construo de aplicaes WEB.

Embora JavaServer Faces fornea tags JSP para representar os componentes em uma pgina, ele
foi projetado para ser flexvel, sem limitar-se a nenhuma linguagem markup em particular, nem a
protocolos ou tipo de clientes. Ele tambm permite a criao de componentes prprios a partir de classes
de componentes, conforme mencionado anteriormente.

JSF possui dois principais componentes: Java APIs para a representao de componentes UI e o
gerenciamento de seus estados, manipulao/observao de eventos, validao de entrada, converso de
dados, internacionalizao e acessibilidade; e taglibs JSP que expressam a interface JSF em uma pgina
JSP e que realizam a conexo dos objetos no lado servidor.

claro que existe muito mais a ser dito sobre JavaServer Faces. Esse artigo apenas fornece uma
viso geral, mas espero ter criado uma certa curiosidade a respeito dessa nova tecnologia.
Download e Instalao

JavaServer Faces pode ser usado em conjunto com o Sun Java
TM
System Application Server -
Plataform Edition 8, com o Java
TM
Web Services Developer Pack (Java WSDP) ou ainda com outro
Container, tal como o Tomcat.

O download de JavaServer Faces pode ser obtido em
http://java.sun.com/j2ee/javaserverfaces/download.html. Caso voc ainda no tenha o Tomcat, voc
pode fazer o download em http://jakarta.apache.org/tomcat.

Instale o Tomcat e logo em seguida descompacte o arquivo do JavaServer Faces. Acrescente ao
seu Classpath o diretrio lib do JavaServer Faces. Copie qualquer arquivo .WAR do diretrio samples do
JavaServer Faces para o diretrio webapps do seu servidor Tomcat. Se o seu servidor no estiver
rodando, inicialize-o.

Agora s falta testar! Abra o browser e digite http://localhost:8080/jsf-cardemo (supondo que
copiamos o arquivo jsf-cardemo.war). Se no tiver ocorrido nenhum erro, parabns! Caso contrrio,
reveja os passos de instalao/configurao.

Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 4

Vamos agora ao nosso exemplo.
Implementando um exemplo em JSF

Ser uma aplicao bem simples para demonstrar o uso dessa nova tecnologia. O nosso exemplo
consiste de uma pgina inicial contendo 2 links: um para a insero de dados e outro para a busca.

A pgina de insero consiste de um formulrio onde o usurio entrar com o nome, endereo,
cidade e telefone. Os dados sero guardados em um banco de dados (no meu caso, eu uso o
PostgreSQL) para uma posterior consulta. Se o nome a ser inserido j existir no banco de dados, uma
mensagem ser exibida informando ao usurio que o nome j est cadastrado (no nosso exemplo, o
nome a chave primria da tabela). Caso contrrio, uma mensagem de sucesso ser exibida ao usurio.

A busca se dar pelo nome da pessoa. Se o nome a ser buscado estiver cadastrado no banco,
ento uma pgina com os dados relativos ao nome buscado sero exibidos. Caso contrrio, ser
informado ao usurio que o nome buscado no existe no banco.

Para a criao da tabela da base de dados foi utilizado o script apresentado abaixo.

CREATE TABLE pessoa
(
nome var char ( 30) NOT NULL,
ender eco var char ( 50) ,
ci dade var char ( 20) ,
t el ef one var char ( 10) ,
PRI MARY KEY ( nome)
) ;

Vamos utilizar a IDE eclipse (http://www.eclipse.org/) para o desenvolvimento deste exemplo
devido existncia de um plugin para JSF (http://www.exadel.com/products_jsfstudio.htm), tornando o
desenvolvimento mais fcil.

No eclipse, escolha a opo New Project do menu File. Depois, escolha JSF Project. Nomeie seu
projeto como exemplo-jsf. Com o seu projeto criado, v at o diretrio WebContent. As pginas JSP
devem ficar armazenadas nesse diretrio.

O cdigo da pgina index.jsp ficar como mostrado abaixo.

<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>

<ht ml >
<head>
<t i t l e>Exempl o J SF</ t i t l e>
</ head>
<body>
<f : vi ew>
<h: f or m>
<cent er >
<h1>Agenda</ h1>
<br >
<h3>
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 5
<h: out put Li nk val ue=" i nser i r . j sf " >
<f : ver bat i m>I nser i r </ f : ver bat i m>
</ h: out put Li nk>
<br ><br >
<h: out put Li nk val ue=" buscar . j sf " >
<f : ver bat i m>Buscar </ f : ver bat i m>
</ h: out put Li nk>
</ h3>
</ cent er >
</ h: f or m>
</ f : vi ew>
</ body>
</ ht ml >

Algumas tags aqui merecem ser comentadas:
<h:form> gera um formulrio.
<h:outputLink> cria um link para a pgina definida pelo campo value. O texto que
compe o link colocado utilizando-se a tag <f:verbatim>.

O usurio ter a opo de buscar ou inserir dados. Os cdigos das pginas de busca e insero
so mostrados a seguir, respectivamente.

buscar.jsp
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>

<ht ml >
<body>
<f : vi ew>
<h: f or m>
<cent er ><h2> Busca </ h2></ cent er >
<br >
Di gi t e o nome:
<h: i nput Text i d=" nome" val ue=" #{agenda. nome}" / >
<h: commandBut t on val ue=" OK" act i on=" #{agenda. buscar }" / >
</ h: f or m>
<br >
<h: out put Li nk val ue=" i ndex. j sf " >
<f : ver bat i m>vol t ar </ f : ver bat i m>
</ h: out put Li nk>
</ f : vi ew>
</ body>
</ ht ml >

inserir.jsp
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>

<ht ml >
<body>
<f : vi ew>
<h: f or m>
<cent er ><h2> I nser o </ h2></ cent er >
<br >
<h3>Ent r e comos dados abai xo</ h3>
<t abl e>
<t r >
<t d>Nome: </ t d>
<t d>
<h: i nput Text val ue=" #{agenda. nome}" / >
</ t d>
</ t r >
<t r >
<t d>Ender eo: </ t d>
<t d>
<h: i nput Text val ue=" #{agenda. ender eco}" / >
</ t d>
</ t r >
<t r >
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 6
<t d>Ci dade: </ t d>
<t d>
<h: i nput Text val ue=" #{agenda. ci dade}" / >
</ t d>
</ t r >
<t r >
<t d>Tel ef one: </ t d>
<t d>
<h: i nput Text val ue=" #{agenda. t el ef one}" / >
</ t d>
</ t r >
</ t abl e>
<p>
<h: commandBut t on val ue=" I nser i r " act i on=" #{agenda. i nser i r }" / >
</ p>
</ h: f or m>
<br >
<h: out put Li nk val ue=" i ndex. j sf " >
<f : ver bat i m>vol t ar </ f : ver bat i m>
</ h: out put Li nk>
</ f : vi ew>
</ body>
</ ht ml >

A tag <h:inputText> cria uma caixa de texto onde o valor digitado guardado em value. Para
criar um boto, utilizada a tag <h:commandButton>. O label do boto colocado em value. Action
determina qual a ao que o boto deve tomar. Na pgina buscar.jsp, ao clicar no boto OK, o mtodo
buscar() da classe AgendaDB chamado.

O cdigo da classe bean AgendaDB com os mtodos getters e setters das variveis nome,
endereo, cidade e telefone e com os mtodos inserir e buscar ficar conforme mostrado abaixo. nesse
arquivo onde a conexo com o banco feita. Nas aplicaes JSF, os beans so usados para que dados
possam ser acessados atravs de uma pgina. O cdigo java referente a essa classe deve estar localizado
no diretrio JavaSource. J que estamos utilizando um Java bean, um managed-bean dever ser criado
no arquivo faces-config.xml que est presente no diretrio WEB-INF.

i mpor t j ava. sql . *;

publ i c cl ass AgendaDB {
pr i vat e St r i ng nome = bl ank;
pr i vat e St r i ng ender eco = bl ank;
pr i vat e St r i ng ci dade = bl ank;
pr i vat e St r i ng t el ef one = bl ank;

pr i vat e St r i ng r esul t _busca = bl ank;
pr i vat e St r i ng r esul t _i nser i r = bl ank;

publ i c st at i c f i nal St r i ng BUSCA_I NVALI DA = " f ai l ur e" ;
publ i c st at i c f i nal St r i ng BUSCA_VALI DA = " success" ;
publ i c st at i c f i nal St r i ng SUCESSO_I NSERCAO = " success" ;
publ i c st at i c f i nal St r i ng FALHA_I NSERCAO = " f ai l ur e" ;

st at i c Connect i on con = nul l ;
st at i c St at ement st m= nul l ;
st at i c Resul t Set r s;
st at i c pr i vat e St r i ng bl ank = " " ;

publ i c AgendaDB( ) {
i f ( con==nul l ) {
t r y {
Cl ass. f or Name( " or g. post gr esql . Dr i ver " ) ;
con =
Dr i ver Manager . get Connect i on( " j dbc: post gr esql : / / l ocal host : 5432/ t al i t a" , " t al i t a" , " t at a" ) ;
} cat ch ( SQLExcept i on e) {
Syst em. er r . pr i nt l n ( " Er r o: " +e) ;
con = nul l ;
} cat ch ( Cl assNot FoundExcept i on e) {
Syst em. out . pr i nt l n( " Cl assNot Found. . . " ) ;
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 7
e. pr i nt St ackTr ace( ) ;
}
}
}

publ i c St r i ng get Nome( ) {
r et ur n nome;
}

publ i c voi d set Nome( St r i ng nome) {
t hi s. nome = nome;
}

publ i c St r i ng get Ci dade( ) {
r et ur n ci dade;
}

publ i c voi d set Ci dade( St r i ng ci dade) {
t hi s. ci dade = ci dade;
}

publ i c St r i ng get Ender eco( ) {
r et ur n ender eco;
}

publ i c voi d set Ender eco( St r i ng ender eco) {
t hi s. ender eco = ender eco;
}

publ i c St r i ng get Tel ef one( ) {
r et ur n t el ef one;
}

publ i c voi d set Tel ef one( St r i ng t el ef one) {
t hi s. t el ef one = t el ef one;
}

publ i c St r i ng i nser i r ( ) {
St r i ng r esul t _i nser i r = FALHA_I NSERCAO;
t r y {
st m= con. cr eat eSt at ement ( ) ;
st m. execut e( " I NSERT I NTO pessoa( nome, ender eco, ci dade, t el ef one) VALUES ( ' " + nome + " ' , ' " +
ender eco + " ' , ' " + ci dade + " ' , ' " + t el ef one + " ' ) " ) ;
st m. cl ose( ) ;
r esul t _i nser i r = SUCESSO_I NSERCAO;

} cat ch ( SQLExcept i on e) {
Syst em. er r . pr i nt l n ( " Er r o: " +e) ;
r esul t _i nser i r = FALHA_I NSERCAO;
}
r et ur n r esul t _i nser i r ;
}

publ i c St r i ng buscar ( ) t hr ows SQLExcept i on {
St r i ng r esul t _busca = BUSCA_I NVALI DA;
t r y {
st m= con. cr eat eSt at ement ( ) ;
r s = st m. execut eQuer y( " SELECT * FROM pessoa WHERE nome = ' " + nome + " ' " ) ;
i f ( r s. next ( ) ) {
nome = r s. get St r i ng( 1) ;
ender eco = r s. get St r i ng( 2) ;
ci dade = r s. get St r i ng( 3) ;
t el ef one = r s. get St r i ng( 4) ;
r esul t _busca = BUSCA_VALI DA;
}
el se
r esul t _busca = BUSCA_I NVALI DA;
r s. cl ose( ) ;
st m. cl ose( ) ;
} cat ch ( SQLExcept i on e) {
Syst em. er r . pr i nt l n ( " Er r o: " +e) ;
}
r et ur n r esul t _busca;
}
}

Ainda existiro mais 4 pginas JSP em nosso exemplo:
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 8
sucesso_busca.jsp: esta pgina informa ao usurio que
a busca foi bem sucedida, apresentando os dados referentes ao nome procurado;
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>

<ht ml >
<body>
<f : vi ew>
<h: f or m>
<cent er ><h2> Resul t ado da Busca </ h2></ cent er >
<br >
<t abl e>
<t r >
<t d>Nome: </ t d>
<t d>
<h: out put Text val ue=" #{agenda. nome}" / >
</ t d>
</ t r >
<t r >
<t d>Ender eo: </ t d>
<t d>
<h: out put Text val ue=" #{agenda. ender eco}" / >
</ t d>
</ t r >
<t r >
<t d>Ci dade: </ t d>
<t d>
<h: out put Text val ue=" #{agenda. ci dade}" / >
</ t d>
</ t r >
<t r >
<t d>Tel ef one: </ t d>
<t d>
<h: out put Text val ue=" #{agenda. t el ef one}" / >
</ t d>
</ t r >
</ t abl e>
</ h: f or m>
<br >
<h: out put Li nk val ue=" i ndex. j sf " >
<f : ver bat i m>vol t ar </ f : ver bat i m>
</ h: out put Li nk>
</ f : vi ew>
</ body>
</ ht ml >

falha_busca.jsp: esta pgina informa ao usurio que o nome buscado no existe no
banco de dados;
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>

<ht ml >
<body>
<f : vi ew>
<h: f or m>
<h3>
<h: out put Text val ue=" #{agenda. nome}" / >
no f oi encont r ado( a) !
</ h3>
</ h: f or m>
<br >
<h: out put Li nk val ue=" buscar . j sf " >
<f : ver bat i m>vol t ar </ f : ver bat i m>
</ h: out put Li nk>
</ f : vi ew>
</ body>
</ ht ml >

sucesso_insercao.jsp: informa que os dados foram inseridos com sucesso no banco;

<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 9

<ht ml >
<body>
<f : vi ew>
<h: f or m>
Dados I nser i dos comSucesso!
</ h: f or m>
<br >
<h: out put Li nk val ue=" i ndex. j sf " >
<f : ver bat i m>vol t ar </ f : ver bat i m>
</ h: out put Li nk>
</ f : vi ew>
</ body>
</ ht ml >

falha_insercao.jsp: informa que os dados no foram inseridos porque j existe no
banco um nome igual ao que est se tentando inserir.

<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / cor e" pr ef i x=" f " %>
<%@t agl i b ur i =" ht t p: / / j ava. sun. com/ j sf / ht ml " pr ef i x=" h" %>

<ht ml >
<body>
<f : vi ew>
<h: f or m>
<h3>
<h: out put Text val ue=" #{agenda. nome}" / >
j est cadast r ado! Ent r e comout r o nome!
</ h3>
</ h: f or m>
<br >
<h: out put Li nk val ue=" i nser i r . j sf " >
<f : ver bat i m>vol t ar </ f : ver bat i m>
</ h: out put Li nk>
</ f : vi ew>
</ body>
</ ht ml >

Arquivos de configurao

Finalmente faltam os arquivos de configurao faces-config.xml e web.xml. No arquivo faces-
config.xml ns vamos definir as regras de navegao e o managed-bean relativo nossa classe
AgendaDB. O cdigo est mostrado logo abaixo.

<?xml ver si on=" 1. 0" ?>
<! DOCTYPE f aces- conf i g PUBLI C
" - / / Sun Mi cr osyst ems, I nc. / / DTD J avaSer ver Faces Conf i g 1. 0/ / EN"
" ht t p: / / j ava. sun. com/ dt d/ web- f acesconf i g_1_0. dt d" >

<f aces- conf i g>
<navi gat i on- r ul e>
<f r om- vi ew- i d>/ buscar . j sp</ f r om- vi ew- i d>
<navi gat i on- case>
<f r om- out come>success</ f r om- out come>
<t o- vi ew- i d>/ sucesso_busca. j sp</ t o- vi ew- i d>
</ navi gat i on- case>
<navi gat i on- case>
<f r om- out come>f ai l ur e</ f r om- out come>
<t o- vi ew- i d>/ f al ha_busca. j sp</ t o- vi ew- i d>
</ navi gat i on- case>
</ navi gat i on- r ul e>

<navi gat i on- r ul e>
<f r om- vi ew- i d>/ i nser i r . j sp</ f r om- vi ew- i d>
<navi gat i on- case>
<f r om- out come>success</ f r om- out come>
<t o- vi ew- i d>/ sucesso_i nser cao. j sp</ t o- vi ew- i d>
</ navi gat i on- case>
<navi gat i on- case>
<f r om- out come>f ai l ur e</ f r om- out come>
Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 10
<t o- vi ew- i d>/ f al ha_i nser cao. j sp</ t o- vi ew- i d>
</ navi gat i on- case>
</ navi gat i on- r ul e>

<managed- bean>
<managed- bean- name>agenda</ managed- bean- name>
<managed- bean- cl ass>AgendaDB</ managed- bean- cl ass>
<managed- bean- scope>sessi on</ managed- bean- scope>
</ managed- bean>
</ f aces- conf i g>

O primeiro bloco contm uma regra de navegao para a pgina buscar.jsp. Caso o mtodo
buscar() da classe AgendaDB retorne success, ento a pgina chamada ser sucesso_busca.jsp. Caso a
palavra retornada pelo mtodo seja failure, ento a pgina a ser exibida dever ser falha_busca.jsp. O
segundo bloco contm a mesma regra do primeiro, sendo que para a pgina inserir.jsp.

O terceiro bloco refere-se ao managed-bean. No parmetro class, deve ser indicado o nome da
classe Java bean. O nome fica a critrio do desenvolvedor, podendo at mesmo ser o mesmo da classe.

O cdigo do arquivo web.xml pode ser visto abaixo.

<?xml ver si on=" 1. 0" ?>
<! DOCTYPE web- app PUBLI C
" - / / Sun Mi cr osyst ems, I nc. / / DTD Web Appl i cat i on 2. 3/ / EN"
" ht t p: / / j ava. sun. com/ dt d/ web- app_2_3. dt d" >
<web- app>
<cont ext - par am>
<par am- name>j avax. f aces. STATE_SAVI NG_METHOD</ par am- name>
<par am- val ue>cl i ent </ par am- val ue>
</ cont ext - par am>

<cont ext - par am>
<par am- name>j avax. f aces. CONFI G_FI LES</ par am- name>
<par am- val ue>/ WEB- I NF/ f aces- conf i g. xml </ par am- val ue>
</ cont ext - par am>

<l i st ener >
<l i st ener - cl ass>com. sun. f aces. conf i g. Conf i gur eLi st ener </ l i st ener - cl ass>
</ l i st ener >

<! - - Faces Ser vl et - - >
<ser vl et >
<ser vl et - name>Faces Ser vl et </ ser vl et - name>
<ser vl et - cl ass>j avax. f aces. webapp. FacesSer vl et </ ser vl et - cl ass>
<l oad- on- st ar t up> 1 </ l oad- on- st ar t up>
</ ser vl et >

<! - - Faces Ser vl et Mappi ng - - >
<ser vl et - mappi ng>
<ser vl et - name>Faces Ser vl et </ ser vl et - name>
<ur l - pat t er n>*. j sf </ ur l - pat t er n>
</ ser vl et - mappi ng>
</ web- app>

A linha <url-pattern>*.jsf</url-pattern> presente no ltimo bloco desse arquivo, indica que as
pginas tero a extenso jsf. Por esse motivo que qualquer chamada de uma pgina dentro de outra a
extenso no jsp e sim jsf. Existem outras opes de configurao. Mas que no esto no escopo desse
artigo.




Grupo de Usurios Java
http://www.guj.com.br

Grupo de Usurios Java http://www.guj.com.br Pgina 11

Dentro do diretrio lib ficam armazenados os arquivos .jar. Como o nosso exemplo acessa um
banco de dados, devemos adicionar a esse diretrio o driver relativo verso do banco que se est
utilizando. Para esse exemplo eu utilizei a verso 8.0 do PostgreSQL (http://www.postgresql.org). Voc
pode obter o driver em http://jdbc.postgresql.org/download.html.
Rodando o exemplo

Com todas as pginas, classe Java e arquivos de configurao criados, podemos finalmente rodar
a nossa aplicao. Podemos fazer isso de duas maneiras. Primeiro, voc pode utilizar as opes que o
Eclipse oferece. Clique com o boto direito em cima do diretrio exemplo-jsf. Em JSF Studio escolha
Register Web Context in Tomcat. Em seguida, inicialize o servidor. Abra o browser e digite
http://localhost:8080/exemplo-jsf/index.jsf.

Voc pode, ao invs de registrar a sua aplicao no Tomcat, gerar o arquivo WAR. Para isso, v
at o diretrio WebContent da sua aplicao e ento digite
jar cvf exemplo-jsf .
Em seguida, copie o arquivo WAR para o diretrio webapps do Tomcat. Inicialize o servidor, abra
o browser e digite o mesmo endereo j dito anteriormente.
Concluso

JavaServer Faces uma tecnologia bastante recente para o desenvolvimento de aplicaes WEB
e pouco tem se visto ainda sobre essa tecnologia. Como j mencionado, esse artigo fornece apenas uma
simples introduo sobre o assunto. Existe muito mais a ser dito a respeito dessa tecnologia.

O exemplo aqui mostrado faz uso de pouqussimos recursos oferecidos pelo JSF. Lembre-se que o
JSF faz uso do tratamento de eventos (que no foi demonstrado nesse exemplo). Mas acredito que
outros artigos viro e, quem sabe nos prximos poderemos tratar mais a fundo essa tecnologia


Talita Pitanga (tpitanga@gmail.com) estudante do curso de Engenharia de Computao da Universidade Federal do
Rio Grande do Norte UFRN.

Você também pode gostar