Baixar este arquivo PDF - Revista TIS

Propaganda
ISSN 2316-2872
T.I.S. São Carlos, v. 4, n. 1, p. 41-50, jan-abr 2015
©Tecnologias, Infraestrutura e Software
Servlets & JSP x JavaServer Faces 2.1:
Comparação do desenvolvimento de aplicações web
baseado no modelo MVC
Everton Marcos de Godoy, Ivan João Foschini
Resumo: Este artigo apresenta a evolução do desenvolvimento de sistemas web, utilizando a linguagem de programação Java e a tecnologia
JavaServer Faces(JSF), comparado ao uso de Servlets e Páginas JSP(Java Server Pages). A comparação é baseada nas camadas do modelo
MVC (Model View Controller), e ilustra a forma de tratamento para os dados do usuário, desde a página até a camada final do modelo.
Palavras-Chave: Servlet, JSP, JavaServer Faces, desenvolvimento web
Servlets & JSP x JavaServer Faces 2.1: Comparing Web Applications Development based on MVC model
Abstract: This paper presents the evolution of web systems development using Java programming language and JavaServer Faces (JSF)
technology, compared to the use ofServlets and JSP pages (Java Server Pages). The comparison is based on the layers ofMVC (Model View
Controller) model, and illustrates a form to treat the user´s data from the page until the final layer ofthe model.
Keywords: Servlet, JSP, JavaServer Faces, web development
I. INTRODUÇÃO
O uso de aplicações web não é novidade nos dias de hoje
principalmente após a inserção de smartphones para o
processamento de sistemas de informação. Por volta de 1990,
os PCs(Personal Computer) popularizaram-se entre as pessoas
com as aquisições em grande número e preços acessíveis,
onde posteriormente surgiram aplicações GUI(Graphical User
Interfaces).
A utilização de sistemas de informação é muito importante
e está presente constantemente em nossos dias, porém as
aplicações GUI não seriam performáticas para o uso
distribuído de informações pois um sistema inteiro deveria
estar instalado e configurado no computador local
direcionando os dados para o servidor com um banco de
dados instalado. Com o propósito de solucionar esse
problema, surgiram os Servlets e as JSPs (Java Server Pages)
na linguagem Java.
Para executar um sistema web, é necessário um servidor de
aplicação que suporte os frameworks utilizados no
desenvolvimento, tais como JSF, EJB (Enterprise JavaBeans),
JPA(Java Persistence API), etc. Um servidor de aplicação
fornece a infraestrutura de serviços para a execução de
aplicações distribuidas. Entre os principais servidores,
podemos citar o Glassfish e o JBoss/WildFly1 .
Atualmente temos a computação em nuvem, e logo um
novo conceito do desenvolvimento de sistemas web. Mesmo
para
a execução de uma aplicação web em nuvem, será
____________________________________
1 Para maiores detalhes e download dos servidores,
https://glassfish.java.net/ e http://www.wildfly.org/
necessário um servidor de aplicação onde o mesmo estará
operando em uma infraestrutura local da nuvem. Conforme
(SILVA, 2013), A computação em nuvem introduz uma nova
maneira de como sistemas são desenvolvidos e
comercializados. Um exemplo de plataforma para esse tipo
de desenvolvimento é o GAE2, Google App Engine, que
permite que sejam executadas aplicações na infraestrutura do
Google suportando as tecnologias estudadas aqui dentre
outras.
Segundo (BASHAM; SIERRA; BATES, 2008), a função
de um servlet é receber uma solicitação do cliente e devolver
uma resposta. Servlet é simplesmente uma classe Java.
Páginas HTML (HyperText Markup Language) são estáticas
e não são capazes de fazer uma requisição ao servidor, porém
um Servlet processa a requisição e devolve ao cliente um
resultado de forma dinâmica em uma página HTML como
resposta à requisição HTTP. A Figura 1 ilustra um exemplo
de Servlet produzindo código HTML.
Figura 1 - Código HTML gerado por um Servlet
_____________________________________
2 Outras observações podem ser localizadas em
https://appengine.google.com/
Departamento de Computação - Universidade Federal de São Carlos (UFSCar)
Caixa Postal 676 – 13.565-905 – São Carlos – SP – Brasil
Autor para correspondência: [email protected], [email protected]
Everton Marcos de Godoy, Ivan João Foschini
Analisando o código da Figura 1, o browser3 do usuário
tem a capacidade de interpretar o código HTML retornado
pelo Servlet. Para isso, o código deverá possuir a estrutura de
cabeçalho e corpo correta do HTML, onde será criada a parte
visual da página do usuário.
A marcação “<html>” é responsável pelo cabeçalho inicial
de qualquer página HTML, e a mesma será finalizada com
“</html>”. A marcação “<title>”, é opcional e permite a
visualização do título da página na barra superior do
navegador, normalmente na mesma barra que existem as
caixas de controle para minimzar, maximizar e fechar.
Toda a codificação da página deverá estar contida dentro
da marcação “<body>”, essa marcação representa o corpo da
página que será visualizada no browser do usuário, toda a
renderização do código HTML pelo browser será feita com as
informações aqui contidas.
Figura 2 - Código HTML de uma página JSP
A Figura 2 ilustra uma página JSP com as devidas
marcações HTML. As JSPs foram introduzidas para separar
as camadas de visão e controle. A página JSP é tipicamente
uma página HTML com tags especiais para a inclusão de
código Java. A página compila dinamicamente em um servlet
e executa como tal. Isso torna possível escrever HTML puro
sem levar em conta o código Java na página. (PATZER,
2002).
Conforme exposto acima, as marcações, também
conhecidas como “tag” HTML, permitem que o browser faça
a renderização dos componentes. Nesse caso, é importante
ressaltar a tag4“<form>”, onde a mesma possui um método a
ser declarado e uma ação. Maiores detalhes serão vistos na
seção 4.
A utilização de JSPs tornam as páginas da web dinâmicas.
As JSPs conseguem executar código Java entre as tags de
código descritas no corpo da página, sendo possível recuperar
uma
solicitação enviada ao servidor. (BASHAM; SIERRA;
_______________________________
3 Programa de computador que habilita seus usuários a
interagirem com documentos virtuais na internet, por
exemplo, Internet Explorer, Mozilla FireFox, Google
Chrome.
4Uma tag html será a forma visual do componente na página
do usuário, por exemplo, um botão, uma caixa de texto ou um
texto qualquer.
T.I.S. 2015; 4 (1): 41-50
BATES, 2008).
A proposta desse trabalho é fazer um estudo comparativo de
comunicação entre as camadas MVC, de modo que seja
ilustrado como os dados de uma página são transmitidos desde
a camada de visão, até a classe controladora. Será apresentada
a comunicação que uma página faz, ilustrando os caminhos
desde a submissão dos dados da página, percorrendo o modelo
MVC e retornando os dados solicitados para um usuário. Para
essa comparação, foi utilizada uma funcionalidade da
aplicação web referente ao sistema de Reservas de Espaços da
UFSCar (Universidade Federal de São Carlos), a qual foi
desenvolvida com JavaServer Faces e componentes do
PrimeFaces na versão 3.5.
O artigo foi dividido em 7 seções, onde a primeira está
abordadndo a introdução do trabalho. As seções 2 e 3 abordam
características do desenvolvimento Servlet e JSP e
desenvolvimento JavaServer Faces. A seção 4 trata do estudo
comparativo em si, são ilustrados e comparados algumas
características do desenvolvimento Servlet e JSF. As seções
5,6 e 7 tratam de trabalhos relacionados, conclusão do
trabalho e trabalhos futuros respectivamente. Finalizando,
estará disponível a relação das referências bibliográficas
pesquisadas para o desenvolvimento do trabalho.
II. ESTRUTURA DE DESENVOLVIMENTO S ERVLET E JSP
JavaServer Pages é uma tecnologia para o desenvolvimento
de páginas web com conteúdo dinâmico(BERGSTEN, 2002).
Ao contrário de uma simples página HTML, que contém
conteúdo estático que permanece sempre o mesmo, uma
página JSP pode alterar seu conteúdo com base em qualquer
número de itens variáveis, incluindo a identidade do usuário,
tipo de navgador do usuário, informações fornecidas pelo
usuário, e seleções feitas pelo usuário.
De acordo com (BERGSTEN, 2002), a especificação JSP é
baseada na especificação Java Servlet. Na verdade, as páginas
JSPs são muitas vezes combinadas com Servlets na mesma
aplicação. De forma geral grande parte dos frameworks Java
implementam de alguma forma a arquitetura MVC Model 2 5 ,
onde um servlet gerencia a comunicação do cliente e a
execução da regra de negócio, passando a responsabilidade da
apresentação para as páginas JSPs.
No Model 1, as páginas JSPs são consideradas o ponto
principal de toda a aplicação. Nesse modelo, as JSPs além de
possuirem os elementos e componentes de tela para exibição
do código HTML, são reponsáveis por recuperar os
parâmetros da requisição HTTP, executar a lógica de negócios
e lidar com a sessão HTTP. Apesar do Model 1 ser apropriado
para aplicações de pequeno porte, essa arquitetura geralmente
produz uma quantidade considerável de código Java dentro do
código HTML de uma página JSP. (ZAMBON; SEKLER,
2007). A Figura 3 ilustra a arquitetura do Model 1, onde as
camadas View e o Controller não são separadas.
___________________________________
5 MVC Model 2 – Solução criada para aperfeiçoar o Model 1,
também é adequada para aplicações maiores onde a lógica de
código da aplicação é separada das páginas.. (ZAMBON;
SEKLER, 2007)
42
Servlets & JSP x JavaServer Faces 2.1: Comparação do desenvolvimento de aplicações web baseado no modelo MVC
como Managed Bean, sem a necessidade de passar por um
servlet. Implicitamente está sendo utilizado um servlet que no
JSF é chamado de Faces Servlet, mas o framework deixa o
processo transparente.
Faces Servlet é um servlet que gerencia o ciclo de vida do
processamento de requisições de uma aplicação web que
utiliza JSF para construir a interface com o usuário.
(ORACLE, 2011).
Segundo (MANN, 2005), o JSF é um framework MVC
Java para a construção de interfaces de usuário baseadas em
componentes para aplicações web. Além de ser produtivo,
possui as seguintes características:
•
Fornece separação de funções que envolvem a
construção de aplicações Web
•
Alta abstração para desenvolvimento de
aplicação web
•
Modelo de programação dirigido a eventos
(oposto ao modelo HTTP request/ response)
•
Vários pontos de extensão (converters,
validators, listeners etc)
•
Componentes já prontos (PrimeFaces,
RichFaces, Ice Faces)
III. ESTRUTURA DE DESENVOLVIMENTO JAVAS ERVER F ACES
JavaServer Faces (JSF, ou simplesmente ”Faces”) facilita o
desenvolvimento de aplicações web, proporcionando apoio
para poderosos componentes de interface do usuário (por
exemplo caixas de texto, caixas de listagem, painéis com
guias e grades de dados) para o mundo do desenvolvimento
web.(MANN, 2005).
JSF é baseado no modelo de arquitetura de software
MVC (Model View Controller), organizando o
desenvolvimento de aplicações em camadas. O padrão MVC
separa o sistema em três responsabilidades (modelo,
visualização e controle), onde o modelo é responsável por
representar os objetos de negócio, manter o estado da
aplicação e fornecer ao controlador o acesso aos dados. A
visualização é responsável pela interface do usuário. É esta
camada que define a forma como os dados são apresentados e
encaminha as ações do usuário para o controlador. O
controlador é responsável por ligar o modelo e a visualização,
interpretando as solicitações do usuário, traduzindo para uma
operação no modelo (onde são realizadas efetivamente as
mudanças no sistema) e retornando a visualização adequada à
solicitação.(FARIA, 2013).
Na figura 5 é possível verificar a arquiteruta.
Figura 3 - Arquitetura do Model 1 - JavaServer Pages
(ORACLE, 2004)
Para auxiliar o desenvolvimento Servlet e JSP, foi criado o
framework Struts. Struts é um framework de código aberto
para o desenvolvimento de aplicações web que integra
algumas tecnologias padrões, por exemplo, Servlets,
JavaBeans e JSP. O Struts fornece benefícios para o
desenvolvedor web, entre eles o Model 2, modelo MVC de
padrões de projeto para aplicações JSP. Com esse modelo, um
servlet processa a requisição, trata a lógica da aplicação, e
instancia os Java Beans. As JSPs obtém os dados a partir dos
Beans e pode tratar a resposta sem ter que saber qualquer
coisa sobre o que está acontecendo.(ZAMBON; SEKLER,
2007).
O paradigma do Model 2 MVC permite separar o código da
camada de visão, por exemplo, HTML e Tags, por classes da
camada de controle.
A figura 4 ilustra a arquitetura de aplicações web Model 2,
onde Servlets controlam o fluxo da aplicação web e delegam a
regra de negócios para componentes externos, por exemplo,
JavaBeans ou EJBs, enquanto as páginas JSPs geram somente
código HTML para o navegador.
Figura 4 - Arquitetura do Model 2 - JavaServer Pages
(ORACLE, 2004)
A comunicação entre Servlets e JSP, é iniciada no cliente
através de uma página JSP no browser do usuário, passando
para um dos métodos do Servlet, por exemplo Get ou Post e,
somente após isso, é iniciada a regra de negócio nas demais
classes Java processando a requisição do usuário. O
framework JSF torna esse processo transparente ao
desenvolvedor diminuindo tempo e código durante o
desenvolvimento da aplicação. Por exemplo, as requisições
são iniciadas no cliente através de uma página HTML ou
XHTML(eXtensible Hypertext Markup Language),
comunicam-se diretamente com uma classe Java, conhecida
Figura 5 - Arquitetura do framework JSF
(JAVABEAT, 2013)
43
T.I.S. 2015; 4 (1):41-50
Everton Marcos de Godoy, Ivan João Foschini
Nessa arquitetura, um cliente, sendo um computador ou
dispositivo móvel faz a requisição a um servidor. Na
aplicação, o Faces Servelet, explicado na seção 2 encaminha a
requisição para a página solicitada, onde os dados serão
tratados pelas camadas Controller e Model, realizando a
operação desejada pelo usuário.
Para auxiliar o desenvolvimento de uma aplicação MVC, o
JSF fornece serviços. Segundo (GEARY; HORSTMANN,
2004), os serviços mais importantes oferecidos pelo JSF são:
•
Model-View-Controller
Architecture
(Arquitetura MVC): Todas as aplicações permitem aos
usuários manipular certos dados, tais como carrinhos de
compras, roteiros de viagem, ou quaisquer dados que
sejam necessários para um domínio de problema
particular. Estes dados são chamados modelo. O JSF
conecta a visão e o modelo. Um componente de tela pode
ser ligado a uma propriedade do bean de um modelo
através de um atributo no Managed Bean.
•
Data Conversion (Conversão de Dados): Os
usuários inserem dados em formulários da página como
texto. Os objetos de negócios esperam dados como
números, datas ou outros tipos de dados. O JSF torna
mais fácil para especificar e personalizar regras de
conversão.
•
Validation and Error Handling (Validação e
Maniulação de Erros): O JSF torna mais fácil anexar
regras de validação para campos, por exemplo, “Este
campo é obrigatório” ou “Este campo deve ser um
número”. É claro que, quando o usuário digitar dados
inválidos, o programador deverá exibir mensagens de erro
apropriadas.
•
Internationalization (Internacionalização): JSF
gerencia problemas de internacionalização como
codificações de caracteres e seleção de pacotes de
recursos.
•
Custom
Components
(Componentes
Customizados): Desenvolvedores de componentes podem
desenvolver componentes sofisticados com liberdade
Além disso, o framework JSF possui um ciclo de vida,
ilustrado na Figura 6, para as requisições que a aplicação
recebe. Sempre que uma aplicação JSF recebe uma
requisição, ela passa por um processo de seis etapas
conhecida por Processamento de Cico de Vida. Durante esse
processo, o JSF restaura a visão, traduz os parâmetros de
requisição em valores de componentes, valida as entradas,
atualiza objetos do modelo, invoca os action listeners, e
retorna uma resposta para o usuário. (MANN, 2005).
(GEARY; HORSTMANN, 2004) define as seis fases do
ciclo de vida do JSF da seguinte forma:
1. Restauração da view
Recria a árvore de componentes do lado servidor
quando você voltar para a página JSF. É realizada a
requsição para uma página e o processo de Restauração
da Visão é iniciado. Caso a página já tenha sido exibida,
será recuperada toda a árvore de componentes com os
valores do seu estado anterior. Caso seja a primeira
exibição, será criada a árvore.
T.I.S. 2015; 4 (1): 41-50
2. Aplicar valores de requisição.
Copia os parâmetros da request dos componentes
submetidos, ou seja, o JSF recupera os valores
informados pelo usuário, e os armazena em objetos.
3. Processar Validações
Converte os valores apresentados e valida o valor
convertido no seu tipo correto de objeto. Caso ocorra
erro, a mensagem será adicionada no FacesContext.
Nesse ponto, a implementação JSF invoca a fase de
Renderizar Resposta, de modo a renderizar a página do
usuário com as mensagens de erro para o componente
invalidade pelo erro de conversão.
4. Atualizar os valores do modelo
Nesse ponto, são copiados os valores (convertidos e
validados) para o modelo, que ficarão armazenados nos
ManagedBeans.
5. Invocar a aplicação
Invoca os Action listeners e Actions, nessa ordem para
os componentes de comando. O JSF chama o método
associado ao submit do formulário, através da Action do
botão ou link. Como todos os valores já foram
convertidos e validados, é permitido que sejá disparada os
métodos das camadas de negócio.
6. Retorna resposta ao usuário.
Finalmente renderiza, salva o estado e carrega a
próxima view. Uma página pode ser encaminhada ou
redirecionada, encaminhar é o comportamento padrão,
mas você pode especificar redirecionamentos com o
elemento de redirecionamento em um arquivo de
configuração de faces.
A Figura 6 ilustra o conteúdo explicado acima.
Figura 6 - O ciclo de vida JavaServer Faces
(GEARY; HORSTMANN, 2004)
IV. ANÁLISE COMPARATIVA S ERVLET E JSP X
JAVAS ERVERF ACES
Para ilustrar as diferenças básicas de programação entre
Servlet e JSP com o JavaServer Faces, foi utilizada a
aplicação criada em JSF para o curso de Desenvolvimento de
Sistemas Web Lato Sensu. Trata-se de um sistema de reserva
de espaços do campus UFSCar, onde salas, laboratórios, etc,
podem ser reservados para o uso de professores e alunos.
A interação de componentes de tela para o usuário com a
aplicação foi toda desenvolvida com PrimeFaces, e para a
44
Servlets & JSP x JavaServer Faces 2.1: Comparação do desenvolvimento de aplicações web baseado no modelo MVC
comparação com JSP, foi utilizada a funcionalidade de
listagem de reservas implementada na aplicação. Essa
funcionalidade é destinada apenas aos usuários que possuem
tipo de acesso Administrador no sistema. Trata-se de uma
página que possuem filtros de pesquisa para que o
Administrador possa buscar reservas de acordo com a
necessidade da consulta. Sendo assim, a mesma
funcionalidade foi aplicada em uma versão JSP.
Ao utilizar JavaServer Faces, é necessário uma classe
controladora, também conhecida como Managed Bean,
conforme o modelo MVC, onde são declarados os atributos
responsáveis por cada elemento da página. Para enviar ou
recuperar dados da página, a classe controladora será
invocada através do atributo value presente no componente da
página HTML. O valor será enviado ou recuperado na classe
controladora para o atributo de mesmo nome encapsulado no
Managed Bean por meio dos métodos Getters e Setters.
A figura 7 ilustra a declaração de uma classe controladora
com alguns atributos do tipo Integer e List referente ao
Managed Bean GerenciarRelatorioReservaMB do Projeto.
Figura 7 - Classe Controladora/Managed Bean
Para que seja possível o mesmo processo em uma página e o caminho ao qual o mesmo está localizado. Na
JSP, um Servlet é explicitamente envolvido, enquanto que no especificação 3 o processo é feito através de anotações no
JSF, o Faces Servlet faz o mesmo papel, porém transparente Servlet, por exemplo @Servlet acima da linha public class do
Servlet. Nesse estudo, foi utilizada a especificação 2.
ao desenvolvedor.
A figura 8 ilustra o arquivo web.xml do projeto para o
Na especificação 2 do Servlet, um arquivo xml deverá ser
devidamente preenchido para que o Servlet seja localizado mapeamento de um Servlet.
pela aplicação. Nele deverá ser atribuido um nome ao Servlet
Figura 8 - Mapeamento de um Servlet no arquivo Web.xml do projeto
Conforme visto na figura 7, ilustrando uma classe
•
<servlet-name>, indica um nome ao Servlet,
controladora, a comunição entre uma página XHTML com a
pois é através desse nome que será indicado o local do
classe controladora é direta, ou seja, não há intervenção de
Servlet.
outros arquivos, porém para uma página JSP utilizando a
•
<servlet-class>, indica o local que o Servlet
especificação 2 do Servlet, será produzido mais código pois o
mapeado em “<servlet-name>” está no projeto.
mapeamento do Servlet deve ser realizado no arquivo
•
<url-pattern>, indica a URL de acesso ao
web.xml do projeto. Abaixo segue detalhes sobre as tags do
Servlet definido pelo nome “<servlet-name>”
arquivo Web.xml.
A tag url-pattern será utilizada pelo form, localizando a
•
<display-name>, armazena um nome curto para ação que será executada ao enviar o formulário através do
o Servlet.
botão submit da página JSP. A figura 9 representa o trecho
•
<welcome-file-list>, fornece em ordem inicial do form da página pesquisaReserva.jsp do projeto
sequêncial as primeiras páginas para exibição.
Servlet e JSP feito para o estudo de comparação.
45
T.I.S. 2015; 4 (1):41-50
Everton Marcos de Godoy, Ivan João Foschini
Figura 9 - Declaração do form em uma página JSP
A “action” da tag “<form>” é a mesma anotada na tag “url- da tag “<script>”, permite que seja escrito código javaScript.
A figura 10 ilustra a declaração do método doPost no
pattern”, onde será executado o método do servlet que está
anotado na declaração do form, nesse caso, o doPost. O bloco Servlet mapeado no arquivo web.xml.
Figura 10 - Declaração do método doPost no Servlet
Nesse ponto é iniciado o tratamento da regra de negócio. diretamente entre a página XHTML com a classe
Primeiramente serão recuperados os valores da página para controladora.
atribuição das variáveis, através dos métodos “getParameter”,
A figura 11 está ilustrando um trecho da página
e logo após serão executados os métodos de Serviços, relatorioReserva.xhtml. Esse trecho possui dois componentes,
Fachadas e DAOs, e ao finalizar os métodos, o Servlet recebe do tipo <p:selectOneMenu> responsáveis por armazenar os
o foco novamente e os valores que serão transmitidos para as dados de duas listas distintas. Após a submissão da página, o
páginas JSPs serão atribuidos na requisição ou sessão do ID do valor selecionado será enviado para o tratamento das
usuário, onde a página JSP é capaz de recuperar esses valores. regras de negócio nas classes controladoras, anotada pelo
No desenvolvimento JSF, o Faces Servlet torna esse nome gerenciarRelatorioReservaM. Comparação feita com a
procedimento transparente, pois a comunicação é realizada página pesquisarReserva.jsp ilustrada na figura 12.
Figura 11 - Comunicação entre XHTML e a Classe Controladora
T.I.S. 2015; 4 (1): 41-50
46
Servlets & JSP x JavaServer Faces 2.1: Comparação do desenvolvimento de aplicações web baseado no modelo MVC
As figuras 12 e 13 ilustram as páginas responsáveis por
recuperar uma lista de reservas, para que o admisitrador da
sala possa efetuar o tratamento necessário.
Figura 12 - Página JSF da aplicação Alocações de Espaço
Figura 13 - Versão JSP da Página da Aplicação Alocações de Espaço
Apesar da similaridade entre as páginas, a figura 12
Caso o desenvolvedor opte pelo desenvolvimento Servlet e
apresenta uma interface desenvolvida com a biblioteca de JSP, existe a bilioteca jQuery. Essa biblioteca foi desenvolvida
componentes PrimeFaces, enquanto que a figura 13 foi justamente para facilitar a programação de scripts que
desenvolvida utilizando os recursos de componentes do interagem com as páginas web do lado do cliente. Porém,
HTML puro, por exemplo, inputs de caixas de texto, combo visando desmembrar o código, a boa prática é criar arquivos
box e botões.
JS (JavaScript) para separar o código JavaScript do HTML.
Outro ponto forte que facilita o desenvolvimento de uma Mesmo assim, isso também produzirá mais código e arquivos
página web com o framework JSF, são os tratamentos de erros anexados ao projeto.
e validação de campos da tela do usuário, "Validation and
A figura 14 ilustra um exemplo de como atribuir um valor
Error Handling", item citado entre um dos serviços mais para um componente da página cliente.
importantes do JSF na seção 3 do artigo.
Figura 14 - Exemplo de jQuery e JavaScript
47
T.I.S. 2015; 4 (1):41-50
Everton Marcos de Godoy, Ivan João Foschini
Trata-se de uma simples comparação entre jQuery e
JavaScript. Assim como o JSF diminui escrita de código e
facilita o desenvolvimento web, jQuery faz o mesmo papel
em relação ao JavaScript. Também é possível tratar
comportamento de componentes das páginas através do
jQuery.
Mesmo utilizando a biblioteca jQuery, o desenvolvedor
estará produzindo mais arquivos e códigos conforme dito
anteriormente. Porém, isso não indica que não deve ser
utilizado, pelo contrário, é muito importante o uso de jQuery
e JavaScript nas aplicações web, pois para o tratamento de
mensagens de erros e orientadoras em páginas HTML, é
indispensável o uso de scripts.
Levando-se em consideração o acima exposto, o
framework JSF também facilita o uso de scripts que
interagem com as páginas no lado cliente, diretamente nos
componentes inseridos na página. Por exemplo, ao utilizar
PrimeFaces, automáticamente o projeto terá o jQuery
incorporado, e validações de erros e tratamento de caracteres
dos campos podem ser tratados no próprio componente, sem a
criação de arquivos adicionais ou escrita de JavaScript na
página.
A figura 15 ilustra um trecho de código da página de
cadastro de Sala referente ao sistema de reserva de espaços.
Entre os atributos dos componentes <p:inputTextArea> e
<p:inputText> ilustrados na figura 15, é possível controlar:
•
(Validator Message): Mensagem de erro para
tratar alguma regra de preenchimento do componente,
por exemplo, quantidade de caracteres.
•
(counterTemplate): Contador de caracteres .
•
(maxlength): Quantidade máxima de caracteres .
•
(required): Campo obrigatório.
•
(requiredMessage): Mensagem para o campo
obrigatório.
•
(converterMessage): Validador de conversão, no
caso letra para número.
Figura 15 - Tratamento de dados em componentes do PrimeFaces
Para fazer o mesmo controle de validações e menssagens, desenvolvimento, e mantém o código limpo, mas isso
se o desenvolvedor estivesse usando apenas jQuery com somente seria possível se usar uma biblioteca de componentes
Servlet e JSP, uma grande quantidade de código JavaScript compativel, por exemplo, o PrimeFaces.
Para finalizar, a figura 16 ilustra o caminho percorrido por
iria ser criada. Isso utilizaria boa parte da programação, que
poderia ser destinada para a regra de negócio da aplicação. ambas as soluções, no que diz respeito a visão de
Dessa forma, utilizar as validações de erros e programação.
comportamentos diretamente nos componentes, agiliza o
Figura 16 - Comparação do desenvolvimento Servlet e JSP x JavaServer Faces
T.I.S. 2015; 4 (1): 41-50
48
Servlets & JSP x JavaServer Faces 2.1: Comparação do desenvolvimento de aplicações web baseado no modelo MVC
Na Figura 16, ao utilizar Servlets, o programador deverá
utilizar todos os arquivos ilustrados, pois a ação do formulário
indicará qual Servlet será executado. Conforme ilustrado na
figura 8 “<url-pattern>”, a ação está mapeada pelo nome do
Servlet no arquivo Web.xml. Com essa afirmação, o Servlet
localiza as classes controladoras, e processa a requisição do
usuário. Caso seja utilizado JSF, o Faces Servlet resume para
o progrador a atividade de criação de Servlet.
Para determinar qual tecnologia utilizar, o porte da
aplicação deverá ser analisado. Porém, considerando uma
aplicação de pequeno porte, por exemplo, um sistema de
cadastro simples de pessoas ou controle de estoque, pode ser
viavel a utilização de Servlets e JSP, porque o tratamento de
conversões, dados e mensagens pode ser pequeno, onde a
utilização de javaScript e jQuery pode solucionar. Também
pode ser levado em consideração, a quantidade de classes e
Servlets que serão criados.
A aplicação de gerenciamento de reservas de salas da
UFSCar utilizada aqui para a comparação, pode ser
considerada como médio porte, pois envolve varias
tecnologias e frameworks, tais como JSF, JPA, EJB e
WebServices. Para uma aplicação de médio ou grande porte, é
viável utilizar o framework JSF do que Servlets e JSP, devido
aos componentes existentes nas bibliotecas disponíveis, e
porque os componentes facilitam o desenvolvimento e a
criação das páginas, onde o programador pode usar mais
tampo com a regra de negócio da aplicação, além da
separação em camadas do modelo MVC.
vezes é uma das partes mais dificeis do desenvolvimento de
aplicações Web".
É possível verificar a informação acima durante a
comparação realizada na seção 4 desse trabalho, onde o
framework JSF facilita o tratamento dos dados na aplicação e
para a visualização no browser do usuário, juntamente com
uma boa biblioteca de componentes. O PrimeFaces permite
que sejam manipulados eventos javaScript em cada
componente, sem a necessidade da declaração de scripts
externos, pois ao utilizar a biblioteca PrimeFaces,
automaticamente será incorporado ao projeto a biblioteca
jQuery6.
(BERNICHE, 20113), durante sua análise comparativa de
bibliotecas javaScript, comparou quatro bibliotecas , e
concluiu dizendo que a existência de diversas bibliotecas para
o desenvolvimento de aplicações Web ricas torna difícil a
escolha do desenvolvedor sobre qual bilioteca utilizar em sua
aplicação.
De acordo com (SILVA, 2008 apud BERNICHE, 2013), "A
biblioteca jQuery7 fornece dinamismo e interatividade às
páginas Web com o intuito de tornar agradável a experiência
do usuário com a aplicação, além de fornecer diversas
funcionalidades ao desenvolvedor para facilitar a criação de
scripts. Esses scripts visam incrementar de forma progressiva
e não obstrutiva, a usabilidade, a acessibilidade e o desgin,
enriquecendo a experiência do usuário".
VI. CONCLUSÃO E CONSIDERAÇÕES F INAIS
Nesse trabalho foi realizada a comparação entre dois modos
de programação, utilizando uma metodologia para
comparação em horas e a necessidade de arquivos javaScript.
É aconselhável usar Servlets e JSP para aplicações de
pequeno porte, e JavaServer Faces para aplicações de médio e
grande porte. Fica a critério do desenvolvedor ou da equipe de
desenvolvedores o que será utilizado, e isso dependerá do
tamanho do projeto que está em desenvolvimento. Utilizar
JavaServer Faces para pequenas aplicações, às vezes, pode
não ser a melhor ideia se considerar o tempo do projeto, mas é
um bom framework.
Utilizar Servlets e JSP pode não ser a melhor ideia
para a construção de uma aplicação de grande porte, mesmo
sabendo que ainda existem várias aplicações legadas feitas
com essa tecnologia. A Tabela 1 ilustra o tempo de
desenvolvimento e a necessidade de JS para tratamento de
mensagens e erros dos dados informados pelo usuário.
Tabela 1 - Comparação em horas e necessidade de arquivos
javaScript
V. TRABALHOS RELACIONADOS
Nesse trabalho foram ilustradas características e a estrutura
de desenvolvimento sobre Servlet e JSP, na seção 2, e JSF na
seção 3. Logo após foi realizada a análise comparativa na
seção 4.
Para complementar o trabalho, foram analisados outros
trabalhos que fazem referêcia ao experimento aqui realizado.
De acordo com (FILHO, 2013), em seu trabalho de
comparação com as versões 1.2 e 2.0 do framework JSF, um
Servlet é uma classe Java usada para estender as capacidades
dos servidores que hospedam aplicativos acessados através de
um modelo de programação de solicitação de resposta. Os
Servlets exigem a escrita do código de saída HTML na classe
Java, tornando a legibilidade e a manutenção mais
complicadas, pois não há separação clara do código HTML do
código Java. Com isso, surgiu o JSP que executa todas as
capacidades dinâmicas da tecnologia Servlet, oferencendo
uma abordagem natural para criação de conteúdo estático,
pois segue o caminho inverso, adicionando código Java em
página HTML.
Porém, mesmo utilizando Servlets e JSP baseado no padrão
MVC Model 2, o programador deve ficar atento, pois a regra
do padrão MVC pode ser quebrada, caso seja adicionado
muita regra de negócio Java dentro das JSPs. O framework
JSF facilita o desenvolvimento MVC na aplicação.
Segundo (SCHALK; BURNS; HOLMES, 2009 apud
FILHO, 2013) "JSF é um framework Java que simplifica o
desenvolvimento de interfaces de usuário, que na maioria das
_____________________________________
6 Biblioteca JavaScript rápida, pequena e rica em recursos. Ela
faz transmissão de documentos HTML, manipulação de
eventos, animação e Ajax. Mais detalhes em
http://www.jquery.com.
7 Bibliotecas comparadas foram jQuery javaScript Library
v1.6.2, Prototype v1.7 Script.aculo.us v1.9, MooTools v1.4 e
YUI v3.3.0.
49
T.I.S. 2015; 4 (1):41-50
Everton Marcos de Godoy, Ivan João Foschini
Utilizando JSF, foi realizada a funcionalidade de Relatório
de Reservas do inicio ao fim, com todos os tratamentos dos
dados pela biblioteca PrimeFaces, sem necessidade de JS. No
caso de Servlet e JSP, foi implementada a mesma
funcionalidade, porém não foi realizado todos os tratamentos
de dados. Dessa forma, ainda poderia totalizar em 56 horas e
deve ser incluído um arquivo JS para o tratamento dos dados.
VII. TRABALHOS F UTUROS
Este trabalho teve como foco, o estudo comparativo entre
Servlets e JSP com o framework JavaServer Faces. Uma
aplicação web Java, necessita de um servidor de aplicação
para manter o processamento dos códigos e controle das
requisições feitas pelo usuário.
Na seção 1, introdução, foi relatado sobre o
desenvolvimento de aplicações em nuvem utilizando a
plataforma GAE (Google App Engine), mas não foram
abordadas características relevantes sobre esse tipo de
desenvolvimento.
O Google oferece uma interface intuitiva e gratuita para o
desenvolvimento em nuvem, e a utilização dessa plataforma é
importante para um novo aprendizado.
Esse artigo comparou o desenvolvimento de duas
tecnologias diferentes, sendo que uma utilizou o GlassFish
para JSF e a outra o WildFLy para Servlets e JSP como
servidores de aplicação. Para utilizar alguns recursos do
desenvolvimento web, por exemplo EJB, a escolha do
container é importante.
Uma abordagem de desenvolvimento web, utilizando EJB
entre outros frameworks dentro da plataforma do GAE é um
trabalho que pode ser desenvolvido futuramente, visto que a
utilização de EJB é dependente de qual servidor de aplicação
escolher.
Estudar a maneira de utilizar as mesmas tecnologias de um
container web Java, dentro da plataforma Google App Engine
seria muito importante, visto que ainda é um modo de
desenvolvimento novo, e pode trazer grandes benefícios para
a comunidade de TI.
REFERÊNCIAS
BASHAM, B.; SIERRA, K.; BATES, B. Use a Cabeça
T.I.S. 2015; 4 (1): 41-50
Servlets & JSP. Alta Book Editora - Starlin Alta Con Com
Ltda, 2008.
BERGSTEN, H. JavaServer Pages. 2. ed. [S.l.]: O Reilly,
2002. 684 p. ISBN 0-596-00317-X.
BERNICHE, E. F; NERIS, V. P. A., Análise Comparativa
Entre Bibliotecas JavaScript Para o Desenvolvimento de
Interfaces Web Ricas. Revista T.I.S., São Carlos - SP, 1,
Vol.2, Jan. 2013.
FARIA, T. Java EE 7 com JSF, Primefaces e CDI., Albany.
[S.l.]: AlgaWorks Softwares, Treinamentos e Servic¸os
Ltda, 2013.
FILHO, C. J. S.; FOSCHINI, I. J., JavaServer Faces 2.0:
Melhorias em Relação à Versão 1.2 Para o
Desenvolvimento Web. Revista T.I.S., São Carlos - SP, 1,
Vol.2, Jan. 2013.
GEARY, D.; HORSTMANN, C. Core JavaServer Faces.
[S.l.]: Prentice Hall PTR, 2004. 552 p.
JAVABEAT. JSF Simple Architecture Diagram. 2013.
Disponível em: <http://www.javabeat.net/jsf-2>. Acesso
em: 04 Out. 2014.
MANN, K. D. JavaServer Faces in Action. 1. ed. [S.l.]:
Manning Publications Co. All rights reserved, 2005.
ORACLE. About the Model 2 Versus Model 1 Architecture.
2004.
Disponível
em:
<
http://download.oracle.com/otn_hosted_doc/jdeveloper/10
12/developing_mvc_applications/adf_aboutmvc2.html>.
Acesso em: 25 Ago. 2014.
ORACLE. FacesServlet (Java EE 6). 2011. Disponível em: <
https://docs.oracle.com/javaee/6/api/javax/faces/webapp/F
acesServlet.html>. Acesso em: 21 Nov. 2014.
PATZER, A. JSP Examples and Best Practices. 1. ed. [S.l.]:
Apress, 2002. 288 p. ISBN 1590590201.
SILVA, E. A. N. Uma Abordagem Dirigida por Modelos para
Portabilidade Entre Plataformas de Computação em
Nuvem. Dissertação (Mestrado) — Universidade Federal
de São Carlos, Centro de Ciências e de Tecnologia,
Programa de Pós Graduação em Ciência da Computação,
São Carlos, 2013.
ZAMBON, G.; SEKLER, M. Beginning JSP JSF and Tomcat
Web Development: From Novice to Professional. 1. ed.
[S.l.]: Apress, 2007. 448 p. ISBN 978-1-59059-904-4.
50
Download