Mind map
JSF - Temas de Discursivas
Map content
JSF - Temas de Discursivas
- Podemos definir a Tecnologia JSF como uma tecnologia que nos permite criar Aplicações Web utilizando componentes visuais pré-prontos, de forma que o desenvolvedor não se procupe com Javascript ou HTML. A funcionalidade fornecida por uma Aplicação JSF é similar a qualquer outra Aplicação Web. Ela possui as seguintes partes: * Um conjunto de Páginas Web em que são colocados os componentes; * Um conjunto de tags para adicionar componentes à página web; * Um conjunto de Managed Beans (ou Beans Gerenciados); * Um Descritor de Implantação Web (web.xml); * Um ou mais arquivos de configuração (Ex: faces-config.xml); * Um conjunto de objetos customizados (Ex: validadores, conversores, etc); *Um conjunto de tags customizadas para representar objetos customizados;
- O JSF fornece uma maneira fácil e amigável para criar Aplicações Web por meio de, basicamente, três atividades: * Criar uma Página Web (usando tags de componentes); * Desenvolver Managed Beans; * E mapear a instância FacesServlet.
O que é?
- Considerado tanto uma especificação quanto um framework para criar aplicações web baseadas em componentes pré - prontos, permitindo gerenciar seus estados, vinculá-los aos modelos de dados, realizar conversões de dados, definir navegação de páginas, acessibilidade e validação de dados de forma que o desenvolvedor não se preocupe com Javascript ou HTML.
Aspectos tecnológicos
- Gerenciamento de Componentes
- uma API para representar componentes e gerenciar seus estados; manipular eventos; realizar validação server-side; converter dados; definir navegação de páginas; suportar internacionalização e acessibilidade; e prover extensibilidade.
- Baseada em taglibs (bibliotecas de tags)
- taglibs (bibliotecas de tags) para adicionar componentes a páginas web e conectar componentes a objetos server-side.
- JSF provê um modelo de programação bem definido e robusto, além de fornecer diversas taglibs – inclusive o desenvolver pode criar sua própria taglib. Essas taglibs contêm manipuladores de tags que implementam os componentes de tags. Essas características facilitam significativamente o peso da construção e manutenção de Aplicações Web com interfaces de usuário server-side.
- O Modelo de Componentes JSF define três taglibs: * HTML: possui componentes que representam diversos elementos HTML.o Namespace: xmlns:h=”http://java.sun.com/jsf/html” * CORE: responsável por internacionalização, validação, conversão e outros.o Namespace: xmlns:f=”http://java.sun.com/jsf/core” * FACELETS: fornece tags para criar templates para aplicações web.o Namespace: xmlns:ui=”http://java.sun.com/jsf/facelets”
- Validadores de Componentes
- Pessoal, o JSF oferece diversos validadores embutidos para validar seus Componentes UI – essa validação ocorre no lado do servidor. Eles podem ser invocados a partir de sua tag específica e podem validar o tamanho de um campo, tipo de entrada, range de um valor numérico, expressão regular, entre outros. É possível, inclusive, criar o seu próprio validador customizado.
- Gerenciamento de Componentes
Managed Beans
- Classes vinculadas ao JSF que processam regras de negócio no lado servidor.
- São objetos registrados por meio de annotations ou pelo descritor de implantação e que tem seu ciclo de vida gerenciado pelo objeto Faces Servlet do JSF
- A página será gerada no servidor após a requisição do cliente, sendo gerenciada pelo container web. A visão da página HTML será devolvida ao cliente após a árvore de componentes do JSF ser atualizada pelas informações oriundas das regras de negócio processadas nos Managed Beans
- São apenas POJOs com a annotation @ManagedBeans. Os Managed Beans são os objetos que intermediam a comunicação entre a visão e o modelo. Eles são registrados no descritor de implantação (ou por meio de annotations) e tem seu ciclo devida controlado e gerenciado pelo próprio JSF!
- As principais tarefas de um Managed Bean (ou Backing Beans) é fornecer dados que serão exibidos nas telas; receber dados enviados nas requisições; executar tarefas de acordo com as ações dos usuários; validar dados.
FacesServlet
- É uma servlet que gerencia o ciclo de vida do processamento de requisições de aplicações web que estão utilizando JSF para construir a interface com o usuário.
- Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do Model e respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele faz a conexão entre Web Container e Web Application. Após isso, devemos configurar também o arquivo de configuração faces-config.xml, referente a uma aplicação específica que utiliza JSF.
Arquivo Web.xml
- As configurações realizadas no web.xml são mais genéricas, tratando da especificação de detalhes de segurança; configuração de páginas de erro; mapeamento e declaração de servlets e filtros; configuração de parâmetros de inicialização; entre outros.
Arquivo faces-config.xml
- Ele é responsável por descrever e configurar elementos e subelementos que compõem o projeto, tais como conversores, managed beans, validadores, fluxo da comunicação, configurações de localização e o mapeamento da navegação – ademais, ele faz a conexão entre View e Controller.
- O faces-config.xml é mais específico, tratando de regras e mapeamento de navegação; definição de managed beans; configuração de detalhes de internacionalização; entre outros.
annotations
- O faces-config.xml tem sido rapidamente substituído por annotations – novidade do JSF 2.0. Essa versão trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação do desenvolvimento de componentes; suporte nativo a Ajax (f:ajax); navegação implícita e condicional; suporte ao Método GET; adição de novos escopos (Flash e View); composição de componentes customizados; etc.
Escopos
- O JSF1 tinha os escopos Request (Default), Session e Application. A partir do JSF2, ganhamos o View, Flash, None e Custom. O @RequestScoped vive o tempo do ciclo de uma Requisição/Resposta HTTP; o @ViewScoped vive enquanto houver interação com a mesma view, i.e., enquanto persistir a mesma página; o @ApplicationScoped persiste toda a duração da aplicação web.
- O @SessionScoped persiste o tempo que durar uma sessão, i.e., até invocar um método inválido ou o tempo acabar (lembrar de um carrinho de compras); o @FlashScoped dura um redirecionamento de página; o @NoneScoped indica que o escopo não está definido para a aplicação; por fim, o @CustomScoped é um escopo personalizado.
Ciclo de vida do JSF
- Pelo fato do framework JSF ser talvez uma evolução da linguagem JSP, o ciclo de vida do JSF é parecido com o do JSP. Por exemplo, quando o cliente faz uma Requisição HTTP para a página, o servidor responde com a página traduzida para HTML. Porém, ele é dividido em múltiplas fases, apresentando um modelo de componentes de interface com usuário mais sofisticado.
- I - Restore View
- Restore View: restauram-se os objetos e estruturas de dados que representam a visão. Claro, se essa for a primeira visita à página, deve-se criar a visão. Quando o JSF cria e renderiza uma página JSF, ele cria objetos de interface com o usuário para cada componente da visão. Os componentes são armazenados em uma árvore de componentes e o estado da visão é salvo para requisições futuras.
- II - Apply Request Values
- Apply Request Values: qualquer dado que for enviado como parte da requisição é passado para os componentes apropriados. Essas visões atualizam seus estados com os valores dos dados. Dados podem vir de formulários, cookies enviados com a requisição ou por meio de cabeçalhos da requisição. Alguns dados são validados e, se houver erro, são adicionados à FacesServlet.
- III - Process Validation
- Process Validation: os dados que foram submetidos com o formulário são validados (se já não o foram anteriormente). Assim como na fase anterior, isso ainda não atualiza os objetos de negócio na aplicação. Isso ocorre porque, se a Aplicação atualizar os objetos de negócio junto com a validação dos dados e uma parte da validação falhar, o modelo será atualizado com um estado inválido.
- IV - Update Model Values
- Update Model Values: após todas essas validações terminarem, os objetos de negócio que criam a aplicação são atualizados com os dados validados da requisição. Ademais, se qualquer um dos dados precisar ser convertido em um formato diferente para atualizar o modelo (Ex: String para Data), a conversão ocorrerá nessa fase.
- V - Invoke Application
- Invoke Application: durante essa fase, os métodos de ação de qualquer botão ou link que foi ativado serão chamados. Além disso, todos os eventos que foram gerados durante as fases anteriores e que ainda não tenham sido manipulados são passados para a Aplicação Web para que ela possa concluir qualquer outro processamento da requisição que seja necessário.
- VI - Render Response
- Render Response: os Componentes UI de resposta são renderizados e a resposta é enviada para o cliente. O estado dos componentes é salvo de modo que a árvore de componente possa ser restaurada quando o cliente enviar outra requisição. Em suma, essa fase renderizará a página de resposta requisitada pelo usuário.
Faces Context
- Lembrando que FacesContext (javax.faces.context) é o objeto utilizado para representar todas as informações de contexto associadas ao processamento da requisição de entrada e à criação da resposta correspondente. Ela é criada pela FacesServlet, que é executada antes do início do ciclo de vida de processamento de requisições e é responsável por gerenciar a execução das etapas do ciclo de vida.
Component Binding
- Essa é uma nova característica da tecnologia JSF que permite associar componentes de uma view e controlar todos os aspectos desse componente.
- Algumas vezes, nós temos um componente visual que nos oferece alguma informação (Ex: um mapa em que o usuário escolhe estado). em geral, nós necessitamos apenas do valor, i.e., o usuário escolheu ‘DF’. O Component Binding permite que nós tenhamos acesso ao componente como um todo. Para que? Nós, eventualmente, podemos querer manipular o componente dinamicamente, por exemplo. Assim, é possível acessar métodos do componente – se você quiser, pode até mudar seu comportamento.
Facelets
- Trata-se de uma linguagem de declaração de página poderosa, apesar de leve. Antigamente, utiliza-se a tecnologia JSP como camada de visão do JSF, porém ele não suporta todas as características disponíveis na Plataforma Java EE – sendo considerada obsoleta para JSF!
- Facelets é uma parte da especificação JSF e também a tecnologia de apresentação preferida para construir aplicações JSF – substituindo JSP. Ela suporta todos os componentes de UI do JSF e constrói Árvores de Componentes; e Views (utilizando Templates HTML). Um tipo especial de template são os Componentes Compostos, que agem como um componente. Ademais, é bom destacar algumas características:
- * Utilização de XHTML para criação de Páginas Web; * Suporte a Facelets Tag Libraries (além do JSFTL e JSTL); * Suporte a Linguagens de Expressão (Expression Languages); * Suporte a templates para componentes e páginas.
- Em suma, a utilização de Facelets reduz o tempo e esforço gastos no desenvolvimento e implantação. Em geral, Facelets Views são criadas com Páginas HTML e XHTML (criadas em conformidade com Transation DTD). Além disso, elas utilizam linguagens de expressão para referenciar propriedades e Managed Beans. Para desenvolver uma Aplicação Facelets simples, é necessário: * Desenvolver um Managed Bean; * Criar páginas usando tags de componentes; * Definir a navegação das páginas; * Mapear a instância javax.faces.webapp.FacesServlet; * Adicionar declarações de Managed Beans.
Filtros
- Em JSF, um Filtro (do inglês, Filter) é um objeto capaz de realizar tarefas de filtragem tanto na requisição de um recurso (Servlet ou conteúdo estático), ou na resposta desse recurso, ou ambos – para tal, eles utilizam o método doFilter. Todo Filtro possui acesso a um objeto FilterConfig, do qual ele pode obter seus parâmetros de inicialização; e a uma ServletContext, do qual ele pode carregar recursos.
- Os Filtros são configurados nos descritores de implantação de uma Aplicação Web. Ele possibilita o gerenciamento de todas as Requisições HTTP do Servidor, capaz de filtrar o endereço que está sendo acessado. Dessa forma, quando um usuário acessar uma determinada URL proibida, pode-se imediatamente redirecioná-lo para outro endereço, antes que a resposta seja dada ao cliente.
- Para tal, deve-se implementar a interface javax.servlet.Filter! Existem dezenas de aplicações para filtros, além da mostrada acima. Podemos ter filtros de autenticação; filtros de log e auditoria; filtros de conversão de imagens; filtros de compressão de dados; filtros de criptografia; filtros de tokenização; filtros XSLT; filtros que acionam eventos de acesso a recursos, entre outros.
PrimeFaces
- É uma biblioteca de componentes de interface com o usuário baseada no JSF
- Através da tag poll dessa biblioteca, pode-se realizar chamadas AJAX periodicamente para atualizar unicamente os componentes visuais que se queira. O campo update dessa tag indica o componente a ser atualizado, já o campo listener indica o método do Managed Bean que atualiza a informação do componente.
AJAX
- AJAX (Javascript Assíncrono e XML) é um conjunto de técnicas que permite à aplicações web trabalharem de modo assíncrono, processando qualquer requisição ao servidor em segundo plano.
Images and files in the map
Information
- Description
- Concursos Públicos Desenvolvimento de Software (J2EE: Java Servlets, JavaBean, JSF e JSP) Mind Map on JSF - Temas de Discursivas, created by Luis Felipe Guariento on 30/11/2021.
- Created by
- Luis Felipe Guariento
- Views
- 1
- Rating