Cadastre-se Revistas DevMedia Cursos
 

Space de RENAN DE MELO OLIVEIRA
Busca Autor


Últimas 20 atualizações de RENAN DE MELO OLIVEIRA

Artigo - JSF 2: introdução - Revista easy Java Magazine 15

Desenvolvimento para web é um assunto muito discutido no contexto da tecnologia Java. Há anos a comunidade de software tem se esforçado para projetar e criar melhores formas de criar sistemas para web com esta linguagem. Atualmente, uma das tecnologias mais utilizadas para o desenvolvimento em Java deste tipo de aplicação é o JavaServer Faces (JSF). O JSF é a especificação de um framework para aplicações web definido na padronização do Java Enterprise Edition (Java EE). A nova versão desta tecnologia (o JSF 2.0) traz uma série de recursos úteis para o desenvolvedor de software, como a definição de componentes através de anotações, trabalho nativo com Facelets, AJAX, integração com CDI e diversos outros itens.

Para demonstrar como utilizar este framework, este artigo visa apresentar ao leitor com algum conhecimento de aplicativos web em Java (por exemplo, Servlets e JSPs) as vantagens do JSF, já considerando os recursos desta segunda versão. Também é nosso intuito demonstrar alguns mecanismos úteis desta nova versão para conhecedores de JSF, integrada com o mecanismo padrão de injeção de dependências do Java EE (o CDI – Contexts and Dependency Injection), e a simplificação de sua utilização prática no dia-a-dia.

Neste artigo baseamos nossas explicações conforme desenvolvemos algumas funcionalidades em um sistema web. Portanto é fundamental que o leitor “brinque” um pouco com os recursos aqui exemplificados e adquira conhecimento a partir dessas experiências.

Para isso, desenvolveremos algumas funcionalidades básicas de um sistema de aluguel de carros. Primeiro aprenderemos como criar um pacote JSF 2 instalável em um servidor Java EE. Posteriormente criaremos uma funcionalidade exemplo (um cadastro de modelos de carros), demonstrando alguns componentes básicos do JSF e como funciona o ciclo de vida de uma chamada. Após isto, transformaremos pouco a pouco nossa aplicação, passando por conceitos como navegação, internacionalização, validadores, conversores, layouts, AJAX, etc.

Montando o ambiente

Existem várias formas de preparar um ambiente para desenvolver uma aplicação com JSF 2. Uma maneira muito utilizada no mercado é através do projeto Maven. Para quem não conhece, o Maven é uma ferramenta bastante útil para tratar do empacotamento de projetos Java e gerenciar suas dependências (entre algumas outras coisas). Porém, estruturar adequadamente um projeto Maven pode ser complicado caso você não tenha experiência nesta ferramenta, portanto você pode utilizar as IDEs como o Eclipse e o NetBeans para ajudar nestes casos (eles possuem esqueletos de projetos web já prontos e fáceis de utilizar e gerar os pacotes necessários). No entanto, independente da solução adotada, o mais importante para um projeto Java web é discutir o conteúdo do pacote WAR (que em nosso caso será o locadora.war), pois representa o pacote de instalação da aplicação.

Consideramos que o leitor já possui conhecimento de como se cria uma aplicação web em Java (utilizando Servlets e/ou JSPs, por exemplo), bem como a estrutura básica de um arquivo WAR. Demonstraremos a preparação de um ambiente exemplo utilizando o Maven para configurar nosso projeto. Apesar disto, sugerimos que o leitor prepare sua aplicação Java Web da maneira com que já está acostumado, e por isto, nossos exemplos de aplicação estarão apenas baseados na estrutura do pacote WAR, e livre das ferramentas de desenvolvimento utilizadas para a montagem deste pacote.

Para este artigo, demonstraremos a API do JSF 2 já integrada com o CDI (um mecanismo de injeção de dependências padronizado no Java EE 6), e por isto, utilizaremos o servidor de aplicação JBoss 7.0.2-Final (Web Profile). Além de possuir uma versão gratuita para download, este servidor já possui suporte a ambas as tecnologias em versões consideravelmente atualizadas, e por isto nosso arquivo.war não necessita possuir nenhuma biblioteca específica (dentro de /WEB-INF/lib) para rodar, apesar de você necessitá-las em seu classpath no momento da compilação de seu código.

Durante o desenvolvimento do artigo, utilizamos o Maven para simplificar a manipulação de dependências e a construção de nosso projeto. A utilização desta tecnologia não é obrigatória para acompanhar o conteúdo apresentado, porém consideramos que a criação de um projeto Maven padroniza a administração de alguns recursos na aplicação web.

Preparando o JBoss

Para instalar o servidor de aplicação JBoss 7.0.2-Final, é necessário baixá-lo em http://www.jboss.org/jbossas/downloads. Após isto, descompacte-o no local de sua preferência.

Para a execução de uma aplicação básica, é apenas necessário rodar o arquivo standalone.bat (ou standalone.sh em caso de sistemas Linux), localizado no diretório bin deste servidor. Esta execução deverá iniciar o servidor de aplicações, que poderá ser acessado no navegador através do endereço http://localhost:8080. Para instalarmos uma aplicação web, é apenas necessário incluir o pacote WAR no diretório standalone/deployments deste servidor e a aplicação correspondente será automaticamente instalada.

Preparando um projeto Maven

Como já mencionado, a utilização do Maven não é obrigatória para seguir os nossos exemplos e um detalhamento desta tecnologia foge ao escopo deste artigo. Apesar disto, demonstramos como preparar uma aplicação Java Web com as dependências necessárias para rodar os exemplos aqui apresentados.

Para preparar o nosso projeto utilizando o Maven execute os seguintes passos:

1.      Instale o Maven seguindo os procedimentos encontrados em http://maven.apache.org/download.html;

2.      Crie um diretório com o nome locadora no local de sua preferência para representar o nosso projeto;

3.      Crie um arquivo com nome pom.xml dentro do diretório locadora com o conteúdo indicado na Listagem 1;

4.      Acesse o diretório locadora através de um prompt de comando e execute o comando: mvn clean install (espere o Maven realizar o download inicial das dependências e construir um pacote WAR);

5.      Verifique no diretório locadora/target se o arquivo locadora.war foi criado com sucesso.

 

Listagem 1. Conteúdo do arquivo pom.xml.

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

       <modelVersion>4.0.0</modelVersion>

       <groupId>br.com.simpleit</groupId>

       <artifactId>locadora</artifactId>

       <packaging>war</packaging>

       <version>0.0.1-SNAPSHOT</version>

       <name>LocadoraDeCarros</name>

       <dependencies>

             <dependency>

                    <groupId>javax</groupId>

                    <artifactId>javaee-web-api</artifactId>

                    <version>6.0</version>

                    <scope>provided</scope>

             </dependency>

       </dependencies>

       <repositories>

             <repository>

                    <id>Repo1</id>

                    <name>Repo1</name>

                    <url>http://repo1.maven.org/maven2</url>

             </repository>

                      

              <repository>

                <id>java.net2</id>

                <name>Repository hosting the jee6 artifacts</name>

                <url>http://download.java.net/maven/2</url>

              </repository>

 

       </repositories>

       <build>

             <plugins>

                    <plugin>

                           <artifactId>maven-compiler-plugin</artifactId>

                           <version>2.3.1</version>

                           <configuration>

                                  <source>1.6</source>

                                  <target>1.6</target>

                           </configuration>

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
17/02/2012 09:10:00





 

Pesquisador na empresa Maps Soluções e Serviços SA, além de ser instrutor de cursos relacionados a Java e Web na Globalcode. É doutorando e mestre em Ciência da Computação pelo IME-USP e bacharel em Sistemas de Informação pela EACH-USP, além de realizar pesquisas vinculadas a métodos ágeis de desenvolvimento de software. Possui as certificações SCJP, SCWCD e SCEA-fase1.
Arquivo de atualizações
 2012

Estatísticas do Autor:
Número de posts: 4
Características dos posts deste autor:
Conteúdo:
Utilidade:
1 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group