Dev (Back & Front)ARTIGO

Usando JSF com NetBeans

Olá, pessoal! Nesse artigo veremos como criar um formulário usando JavaServerFaces tendo a IDE Netbeans como ambiente de desenvolvimento e o glassfish como servidor. Parece um exemplo bobo, “criar formulário de login/senha”, mas usaremos esse exemplo “bobo” para mostrar como é mais prazeroso usar JavaServerFaces para desenvolvimento JEE.

Lets go…

JavaServerFaces é um framework desenvolvido pela Sun, tendo como objetivo facilitar o desenvolvimento de aplicações Web através de componentes de interface de usuário (GUI) e conectar estes componentes a objetos de negócios. Read more

Livro JSF in Action: estou lendo este livro para aprimorar meus conhecimentos sobre o framework e realmente o material está excelente, com uma leitura bem confortável. E o melhor: nem tão caro é para quem tem cartão internacional e puder comprar em alguma livraria internacional.

Requisitos:

  • Java 1.5/Superior
  • Netbeans 6.0/Superior

Passo 1

Aqui vamos criar o projeto e o Bean para que o JSF possa acessar.

1. Crie um novo projeto no NB. Dê nome ao projeto e depois clique em next.

2. Na terceira tela, para escolher o framework, marque JavaServerFaces. 


3. A estrutura do seu projeto deve ser semelhante à imagem a seguir:

faces-config.xml = é o arquivo de navegação da sua aplicação com jsf.

4. Crie uma classe java chamada CamBean tendo uma variável do tipo String nome e, em seguida, use a técnica de refatoração “encapsulated field” da IDE. Clique no menu Refactor ==> Encapsulated Field. Em seguida, diga que os métodos serão public e os campos private.

5. Crie um método chamado verifica com o tipo de retorno String

/*<br /> * To change this template, choose Tools | Templates<br /> * and open the template in the editor.<br /> */<br /><br />package br.camilo.com;<br /><br />import javax.faces.application.FacesMessage;<br />import javax.faces.context.FacesContext;<br /><br />/**<br /> *<br /> * @author Camilo<br /> */<br />public class CamNome {<br />    private String login = null; <br />    private String senha = null;<br /><br />    public String getLogin() {<br />        return login;<br />    }<br /><br />    public void setLogin(String login) {<br />        this.login = login;<br />    }<br /><br />    public String getSenha() {<br />        return senha;<br />    }<br /><br />    public void setSenha(String senha) {<br />        this.senha = senha;<br />    }<br /><br />    /* poderia conectar ao BD e verificar se os campos digitados batem com <br />     * os que estao no banco */<br />    public String verifica(){<br />        boolean sucesso = true;<br /><br />        FacesContext context = FacesContext.getCurrentInstance();<br />        if(!login.equalsIgnoreCase("camilo") && !senha.equalsIgnoreCase("123")){<br />            String msg = "usuário inválido";<br />            FacesMessage message = new FacesMessage(msg);<br />            context.addMessage("formulario", message);<br />            sucesso = false;<br /><br />        }else{<br />            sucesso = true;<br />        }<br /><br />        return (sucesso ? "sucesso" : "falha");<br />    }<br />}

Passo 2

Criar o formulário usando JSF. Para isso, altere o arquivo welcomeJSF.jsp deixando como na imagem a seguir:

<%@page contentType="text/html"%><br /><%@page pageEncoding="UTF-8"%><br /><br /><%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%><br /><%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%><br /><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />   "http://www.w3.org/TR/html4/loose.dtd"><br /><br /><%--<br />    This file is an entry point for JavaServer Faces application.<br />--%><br /><!-- FORMULARIO PARA O USUARIO --><br /><html><br />    <head><br />        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><br />        <title>JSP Page</title><br />    </head><br />    <body> <!-- SEU CODIGO JSF DEVE ESTÁ DENTRO DE f:view --><br />        <f:view><br />            <h:form id="formulario"><br /><br />                Digite seu login:          <br />         <!-- aqui tem o mesmo efeito do input que usamos no html, porem <br />         este é jsf com suas particulidades, observe que passo o valor digitado<br />         para variavel login da class CamNome e digo que esse campo é obrigatorio" --><br />         <h:inputText id="nome" value="#{CamNome.login}" required="true" <br />            requiredMessage="este campo é obrigatório"/> <br/><br />            digite sua senha:<br />            <h:inputSecret id="senha" value="#{CamNome.senha}" required="true" <br />            requiredMessage="este campo é obrigatório"/><br/><br />            <h:commandButton action="#{CamNome.verifica}" value="Login" id="submit"/><br />            <br/><br />            <!-- em caso do usuario quebrar alguma regra de nao preencher <br />            os campos ele vai receber a mensagem que está na class CamNome.java<br />            --><br />            <h:messages /><br />        </h:form><br />        </f:view><br />    </body><br /></html>

Passo 3

Fazer o mapeamento no arquivo face-config.xml, para navegação da aplicação. 

1. Abra o face-config.xml, normalmente ele estará no modo PageFlow. Altere para XML e clique com o botão direito em qualquer parte em branco e depois clique na opção como na imagem a seguir:

2. Agora vamos inserir as regras. A página inicial deve ser chamada como default. Faça o mesmo procedimento da imagem anterior, mas dessa vez escolha Add Navigation Rule e preencha a tela que apareceu conforme abaixo:

3. Salve as alterações e, em seguida, crie duas páginas JSP: uma com o nome de sucesso.jsp e outra falha.jsp. Essas serão as páginas que serão exibidas de acordo com o resultado.

4. Abra o arquivo face-config.xml no modo PageFlow e deixe conforme a imagem a seguir:

Testando a aplicação

O teste da aplicação é bem simples, basta clicar com o botão direito do mouse e escolher a opção “Run” e aguardar. 

Bom, pessoal! Vou ficando por aqui e espero que tenham gostado. Até o próximo artigo!

Um abraço!

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil