Por que eu devo ler este artigo:
Boas Práticas com JSF
Este artigo apresenta como aplicar boas práticas no desenvolvimento de software,
abrangendo a tecnologia JSF, utilizando-se de exemplos implementados com foco nos recursos inseridos apartir da
versão 2.0.
Em que situação o tema é útil:
Para desenvolvedores de software que utilizam a tecnologia JSF e desejam conhecer dicas de como empregar seus
recursos da melhor maneira, a fim de levar melhorias a uma aplicação, como também aprimorar o seu método de
desenvolvimento.
O uso de sistemas web tem se tornado cada vez mais comum e abrangente e, em função disso, nesta área de desenvolvimento é comum e necessário o uso de frameworks, buscando facilitar a implementação deste tipo de sistema.
Um dos frameworks mais comumente utilizados em aplicações web é o JavaServer Faces (JSF), que subsidia o desenvolvimento da interface com o usuário (UI). Essa tecnologia recomenda fortemente a adoção do padrão MVC, visando à separação entre o modelo de negócio e a camada de visualização.
O JSF, em sua atual versão (2.0), teve novos recursos inseridos, trazendo também dúvidas de como usufruir deles corretamente. Normalmente, por causa destas dúvidas, certas tecnologias são utilizadas de maneira ineficiente, comprometendo o desempenho de uma aplicação. Outras vezes, por falta de conhecimento, alguns recursos importantes deixam de ser utilizados, quando poderiam trazer melhorias ao projeto. Por esses motivos, o propósito desse artigo é mostrar como usufruir de alguns dos recursos essenciais do JSF e adotá-los como boas práticas no desenvolvimento de aplicações web.
Dentre os recursos do JSF abordados neste artigo, estão: a) os escopos, que quando empregados de maneira correta possibilitam aprimorar o desempenho das aplicações; b) a integração entre Ajax e JSF 2, visando melhorias na interação com o usuário; c) o Project Stage (estágios de execução do projeto); d) o uso de arquivos de propriedades; e e) a internacionalização.
Limitando a utilização do Escopo de Sessão
O desempenho de uma aplicação web é um fator essencial a ser levado em consideração durante o seu desenvolvimento. Para isso, deve-se analisar vários trechos de código a fim de descobrir de que maneira é possível aprimorá-los para tornar a aplicação mais ágil.
Dentre os artefatos que compõem uma aplicação JSF, estão os Managed Beans, que são classes que possuem a responsabilidade de realizar a intermediação na comunicação entre as páginas e o modelo de negócio da aplicação. Esta comunicação se dá quando uma requisição é realizada ao servidor, onde a mesma é então delegada para as classes de negócio. Cada Managed Bean possui um determinado escopo, que é responsável por definir o ciclo de vida de cada uma de suas instâncias. Esses escopos são representados por cinco tipos, os quais serão descritos a seguir:
- Escopo de aplicação (Application Scope): O ciclo de vida do Managed Bean anotado com esse escopo dura enquanto a aplicação estiver em execução. Os valores armazenados estarão disponíveis em todas as páginas da aplicação e para todos os clientes;
- Escopo de Requisição (Request Scope): Nesse escopo, o ciclo de vida começa quando uma requisição é iniciada e permanece disponível durante o tempo de execução dela;
- Escopo de Visão (View Scope): As instâncias de um Managed Bean anotado com esse escopo iniciam quando houver uma requisição a determinada página e permanecem disponíveis enquanto houver requisições para esta mesma página, sendo finalizados quando ocorrer o redirecionamento para outra página;
- Escopo de Sessão (Session Scope): O ciclo de vida proposto por esse escopo se inicia no momento em que a primeira requisição para a instância de um Managed Bean com este escopo for realizada, e termina no momento em que a sessão do cliente for finalizada;
- Escopo Personalizado (Custom Scope): Este escopo se diferencia dos demais por ter seu ciclo de vida e comportamento definidos por meio de uma classe personalizada. Os métodos desta classe são implementados de acordo com o comportamento desejado para o escopo.
Dentre os escopos vistos, o escopo de sessão é o que apresenta maior consumo de memória, pelo fato de os objetos permanecerem disponíveis durante toda a sessão do cliente. Consequentemente, seu uso em demasia pode comprometer o desempenho da aplicação. Por esse motivo, a utilização desse escopo deve ser analisada com bastante cuidado.
Para entender de que forma o escopo de sessão consome tanta memória, é interessante analisar o seu funcionamento. Este escopo é o único que armazena os dados do Managed Bean na memória do servidor durante toda a sessão do cliente. Dessa maneira, durante todas as solicitações em diferentes páginas que o cliente fizer, os dados continuarão armazenados na sessão, até que a mesma seja finalizada, e consequentemente a memória liberada.
O escopo de sessão não é o mais adequado para o uso geral, entretanto, existem situações específicas em que Managed Beans necessitam desta definição. Imagine uma aplicação em que há a necessidade de armazenar alguns dados durante toda a navegação do usuário, e que esses dados deverão estar disponíveis em todas as páginas da aplicação. Como exemplo, é possível utilizar o clássico e-commerce, onde há duas situações:
- Autenticação do usuário;
- Carrinho de Compras.
Esses exemplos devem ser implementados no JSF com um único tipo de escopo, o escopo de sessão, pois os dados referentes à “Autenticação do usuário” e ao “Carrinho de compras” devem estar armazenados para o cliente durante todo o tempo em que o mesmo estiver conectado à aplicação. Posteriormente, a sessão pode ser finalizada pelo próprio usuário. No caso referente à “Autenticação do usuário”, ela será finalizada por meio do logout, e no exemplo correspondente ao carrinho de compras, quando o mesmo estiver vazio ou se a compra for finalizada. Além disso, também é possível definir um tempo limite para que a sessão fique disponível na memória do servidor. Após esse tempo ela será automaticamente finalizada.
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.