Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
Construindo um sistema de login
de usuários (passo-a-passo) usando JavaServer Faces
1 - O que é JavaServer
Faces?
No decorrer dos últimos anos, o Java se estabeleceu
como a tecnologia de ponta para o desenvolvimento de aplicações
web. Desenvolvedores estão usando tecnologias tais como
Servlets e JSP
para desenvolver aplicações web robustas e de
escalabilidade suportada com grande sucesso.Mas,
à medida que as aplicações web se tornam
mais complexas, alguns desenvolvedores saem em busca dos bons
e velhos frameworks de interface gráfica do usuário
(GUI) com seus conjuntos de componentes ricos e poderosos e
seu modelo de desenvolvimento guiado por eventos.Servlets
e JSP têm nos servido bem, mas a natureza sem estado do
HTTP e seu modelo simples de requisição/resposta
força os desenvolvedores a travar uma guerra com os detalhes
que são gerenciados nos bastidores por frameworks GUI
tais como AWT/Swing, o framework GUI padrão para Java.
Para tornar mais fácil o desenvolvimento de
sofisticadas interfaces de usuário para aplicações
web, projetos open source e empresas comerciais desenvolveram
frameworks que se aproximam o máximo dos frameworks GUI
tradicionais. Alguns exemplos notáveis são o Barracuda,
da Enhydra, O Tapestry, da Apache, o UIX da Oracle e o JATO,
da Sun. Na primavera de 2001, um grupo Java Community Process
(JCP) foi formado com representantes da maioria destes esforços
a fim de criar um uma solução padrão que
todos os frameworks pudessem usar. O resultado é JavaServer
Faces. A versão 1.0 da especificação foi
lançada em março de 2004.
2 - O que preciso para desenvolver em JavaServer Faces?
Para desenvolver em JavaServer Faces você precisa
no mínimo de:
a) O Java Development Kit (SDK). A versão
mais recente pode ser baixada de http://www.java.sun.com.
b) Um servidor web ou container que suporte Servlet
2.5 e JavaServer Pages 2.1. Para este artigo nós usamos
o Tomcat 6.0, que pode ser baixado de http://tomcat.apache.org/download-60.cgi.
O passo seguinte é criar uma aplicação
web para iniciar o projeto que vamos desenvolver. Acesse o artigo
Estrutura
básica de uma aplicação web desenvolvida
em Java se você ainda não sabe como
montar a estrutura de uma aplicação web usando
tecnologias Java. Em seguida vá ao diretório lib
da implementação JSF que você baixou e copie
todo o seu conteúdo (jsf-api.jar, jsf-impl.jar, etc)
para a pasta lib de sua aplicação web. Certifique-se
também de incluir os arquivos jstl.jar e standard.jar.
3 - Desenvolvendo o projeto proposto
Vamos botar a mão na massa agora. O que vamos desenvolver
é um sistema de login de usuários. O usuário
informará seu nome e senha e a aplicação
web verificará se os dados são válidos
e o direcionará para uma página de sucesso ou
erro. É um projeto básico, mas, se bem entendido,
abrirá as portas para o desenvolvimento de aplicações
mais complexas. Vale lembrar também que a leitura e entendimento
de todos os conceitos apresentados neste artigo servirão
de base para o entendimento dos demais.
Basicamente uma aplicação web usando JSF é
composta de páginas HTML, JSP, Servlets (se necessário),
JavaBeans, Classes de negócios e os arquivos de configuração
faces-config.xml e web.xml. Vamos começar criando o JavaBean
que nos permitirá passar os dados informados pelo usuário
da parte view (visão) da aplicação para
a parte model (modelo). Se você ainda não se sente
confortável com o modelo MVC, clique
aqui e veja nosso artigo sobre este assunto.
Segue o código para UsuarioBean:
Código para UsuarioBean.java
package estudos;
public class UsuarioBean{
private String nome;
private String senha;
public String getNome(){
return this.nome;
}
public void setNome(String no){
this.nome = no;
}
public String getSenha(){
return this.senha;
}
public void setSenha(String se){
this.senha = se;
}
Não compile este JavaBean ainda. Antes revise-o cuidadosamente
e veja que é um JavaBean comum, ou seja, o fato de o
usarmos com JSF não adiciona nada de extraordinário
em sua estrutura. Observe agora o método verificarUsuario:
Aqui nós fazemos uma chamada ao método estático
isUsuarioValido da classe Utilidades. Resolvi acrescentar isso
para lembrá-lo que o código que lida com a camada
lógica de sua aplicação deve estar concentrado
em classes reutilizáveis, ou seja, a mesma classe que
usamos para autenticar um usuário em JSF pode também
ser usada com uma aplicação Swing. Sendo assim,
vamos escrever e compilar a classe Utilidades:
Código para Utilidades.java
package estudos;
public class Utilidades{
public static boolean isUsuarioValido(
String usuario, String senha){
String user = "osmar";
String pass = "1234";
Veja que temos apenas um método estático que retorna
true ou false dependendo dos valores fornecidos para usuário
e senha. Aqui o nome de usuário e senha já estão
definidos. Na prática, estes valores seriam verificados
em uma base de dados. Compile esta classe e coloque-a no pasta
estudos dentro da pasta classes no diretório WEB-INF
da aplicação. Compile agora o JavaBean e coloque-o
também na pasta estudos. Veja que, na hora de compilar
o JavaBean, devemos fazer referência à classe Utilidades.
Se você estiver compilando diretamente na aplicação,
a dica abaixo poderá ajudá-lo:
Este arquivo web.xml possui algumas seções
que merecem destaque. Para que uma aplicação JSF
funcione, é preciso que o Servlet Faces esteja atento
à tudo que acontece. Assim, é preciso que ele
seja iniciado juntamente com a aplicação. Isso
é feito na seção:
define a página que será chamada quando acessarmos
http://localhost:8080/login. Assim, vamos criar esta página
agora:
Código para index.html
<html>
<head>
<meta http-equiv="Refresh" content= "0; URL=login.faces"/>
<title>Login JSF</title>
</head>
<body>
<h3>A aplicação já vai ser iniciada.
Aguarde.</h3>
</body>
</html>
Salve esta página como index.html na
raiz da aplicação. Veja que tudo que fazemos aqui
é direcionar o navegador para a URL login.faces.
Hora de criarmos o arquivo faces-config.xml
(que deverá estar no diretório WEB-INF):
Nesta seção nós definimos o nome do JavaBean
usado para armazenar o nome de usuário e senha. Veja
que fornecemos também o nome da classe e seu pacote,
assim como o escopo do bean. O valor session indica que o JavaBean
estará disponível durante toda a sessão
do usuário.
Em seguida temos as regras de navegação. É
aqui que JSF mostra todo o seu poder. Você ainda se lembra
do método verificarUsuario da classe UsuarioBean?
Este método retorna uma string que será usada
para definir a navegação pela aplicação.
Se o valor retornado for "sucesso", podemos ver nas
regras de navegação que o usuário será
direcionado para a página sucesso.jsp. Se o retorno for
"erro", o usuário será direcionado para
erro.jsp.
importam as bibliotecas de tags JSF core e html com os prefixos
"f" e "h", respectivamente. A biblioteca
core contém as tags que independem da tecnologia usada
para renderizar o aspecto visual da aplicação.
A biblioteca html, por sua vez, contém as tags usadas
para gerar marcação HTML.
Todas as tags JSF devem estar contidas em uma tag f:view. A
tag h:form denota um formulário HTML. Dentro do formulário
temos as tags que representam os controles. Veja a caixa de
texto usada para informar o nome do usuário:
<h:inputText value="#{usuarioBean.nome}"/>
Observe que a propriedade value da caixa de texto está
amarrada à propriedade nome do JavaBean usuarioBean.
O mesmo ocorre com a caixa de senha:
<h:inputSecret value="#{usuarioBean.senha}"/>
O botão de envio do formulário está amarrado
ao método verificarUsuario do JavaBean:
Quando o botão é clicado, as propriedades do JavaBean
é atualizado de acordo com os valores dos campos e o
método verificarUsuario é chamado. Ele retornará
uma string que será comparada com as regras de navegação
no arquivo faces-config.xml. Dessa forma o usuário será
enviado a uma página de sucesso ou erro. Veja agora o
código para a página de sucesso:
<f:view>
<head>
<title>Login de Usuários
Usando JSF</title>
</head>
<body>
<h:form>
<h3>
<h:outputText
value="#{usuarioBean.nome}"/>,
seu
login foi efetuado com sucesso!
</h3>
</h:form>
</body>
</f:view>
</html>
Veja que aqui nós usamos a tag h:outputText para exibir
o nome do usuário:
<h:outputText value="#{usuarioBean.nome}"/>
Isso é perfeitamente possível, uma vez que o bean
usuarioBean está na sessão e pode ser acessado
a partir de qualquer página da aplicação.
Veja agora o código para erro.jsp:
<f:view>
<head>
<title>Sistema de Login de Usuários</title>
</head>
<body>
<h:form>
<h3>Nome de usuário
ou senha não confere!</h3>
</h:form>
</body>
</f:view>
</html>
Veja que está é um página bem simples.
Nem precisávamos da declaração das bibliotecas
de tags. Mas, vamos deixar assim mesmo.
Pronto! A aplicação já está pronta
para ser executada. Direcione seu navegador para http://localhost:8080/login
e terá o resultado mostrado abaixo:
Experimente digitar qualquer coisa e pressionar o botão
Login. Você será levado à página
de erro. Informe os dados corretos e será levado à
página de sucesso. E, para que ninguém reclame,
a aplicação completa pode
ser baixada aqui.
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.