BALSAS MA
2013
FACULDADE DE BALSAS
CURSO DE SISTEMAS DE INFORMAO
Balsas - MA
2013
FACULDADE DE BALSAS
CURSO DE SISTEMAS DE INFORMAO
BANCA EXAMINADORA
3
AGRADECIMENTOS
Agradeo primeiramente a Deus, a meu orientador Marcos David Souza Ramos neste
trabalho, a minha Famlia, a meus colegas e amigos.
4
RESUMO
Este trabalho visa mostrar o desenvolvimento do sistema web, para informatizar os processos
de envio, armazenamento e recebimento de documentos oficiais utilizados pelos diversos setores da prefeitura municipal de Balsas-MA. Baseado em padres Web Model-ViewController (MVC) e alguns dos frameworks mais importantes para o desenvolvimento Web
em Java como, Java Server Faces (JSF), Hibernate e Spring Security. O trabalho ainda expe
conceitos teis sobre configuraes de arquivos, anotaes e CDI, necessrios para o entendimento da estrutura e do desenvolvimento do mesmo. O trabalho tem como resultado final o
desenvolvimento do sistema web, com a finalidade de automatizar os processos de envio de
documentos oficiais utilizado na estrutura interna da prefeitura municipal de Balsas-MA.
Palavras-chaves: Desenvolvimento Web. Padres. Frameworks.
5
ABSTRACT
This work aims to show the development of web system to computerize the process of sending, receiving and storage of official documents used by various sectors of the city hall Balsas-MA. Web-Based Model-View-Controller (MVC) and some of the most important frameworks for web development in java as Java Server Faces (JSF), Hibernate and Spring Security
standards. the work also presents useful concepts about settings files, notes and CDI required
for understanding the structure and development of the same. The work is the final result of
the web system development, in order to automate the process of sending official documents
used in the internal structure of the municipal government of Balsas-MA.
Keywords: Web Development. Standards. Frameworks.
6
LISTA DE FIGURAS
FIGURA 1: Representao da comunicao interna da Prefeitura de Balsas - MA ................ 12
FIGURA 2: Ciclo de vida em Cascata ..................................................................................... 19
FIGURA 3: Ambiente de Desenvolvimento NetBeans IDE 7.3 .............................................. 22
FIGURA 4: Ciclo de vida JSF .................................................................................................. 28
FIGURA 5: Arquitetura do Hibernate para plataforma Java ................................................... .34
FIGURA 6: Estrutura do Projeto .............................................................................................. 40
FIGURA 7: Configurao do JSF ............................................................................................ 41
FIGURA 8: Apresenta a Configurao do Spring .................................................................... 41
FIGURA 9: Apresenta a Configurao do Spring Security ..................................................... 42
FIGURA 10: Apresenta a Configurao do Prime Faces ......................................................... 42
FIGURA 11: Configurao do Spring Security-applicationContext.xml ................................ 42
FIGURA 12: Configurao do Spring Security-applicationContext.xml ................................ 43
FIGURA 13: Configurao do Spring Security-applicationContext.xml ................................ 43
FIGURA 14: Arquivo hibernate.cfg.xml .................................................................................. 44
FIGURA 15: Declarao da Anotao @Entity....................................................................... 45
FIGURA 16: Declarao da Anotao @Entity e @GeneratedValue ..................................... 45
FIGURA 17: Declarao da Anotao @OneToOne............................................................... 46
FIGURA 18: Declarao da Anotao @Column ................................................................... 47
FIGURA 19: Classe Usuario.java ............................................................................................ 47
FIGURA 20: Mtodo gravar .................................................................................................... 48
FIGURA 21: Formulrio de Login (index.xhtml ..................................................................... 50
FIGURA 22: Classe SegurancaBean ........................................................................................ 51
FIGURA 23: Pgina de Login ................................................................................................. 52
FIGURA 24: Weld ................................................................................................................... 53
FIGURA 25: Arquivo beans.xml ............................................................................................. 53
FIGURA 26: Configurao do CDI no arquivo Context.xml .................................................. 54
FIGURA 27: Configurao do CDI no arquivo web.xml ........................................................ 54
FIGURA 28: Ilustrao do Escopo Request ............................................................................. 55
FIGURA 29: Session ................................................................................................................ 56
FIGURA 30: Sem injeo de Dependncia .............................................................................. 57
FIGURA 31: Com Injeo de Dependncia ............................................................................. 57
FIGURA 32: Anotao @PostConstruct ................................................................................. 58
7
FIGURA 33: Criao da Tabela ............................................................................................... 58
FIGURA 34: Criao do Mtodo da tabela .............................................................................. 59
FIGURA 35: Criao da Coluna Data ...................................................................................... 59
FIGURA 36: Cdigo da Classe Documento responsvel por retorna data............................ 59
FIGURA 37: Criao da Coluna Assunto ................................................................................ 60
FIGURA 38: Criao da Coluna Destinatrio .......................................................................... 60
FIGURA 39: Mtodo secretariaNome...................................................................................... 60
FIGURA 40: Criao da Coluna Documentos ......................................................................... 60
FIGURA 41: Mtodo Selecionar .............................................................................................. 61
FIGURA 42: Classe DocumentoDownloadBean ..................................................................... 61
FIGURA 43: Pgina do Formulrio ......................................................................................... 61
FIGURA 44: Pgina do Formulrio Coluna Assunto............................................................... 62
FIGURA 45: Boto Enviar ...................................................................................................... 62
FIGURA 46: Mtodo Salvar .................................................................................................... 63
FIGURA 47: Pgina que Mostrar os Documentos ................................................................... 64
FIGURA 48: Pgina para Enviar Documento .......................................................................... 64
8
LISTA DE TABELAS
TABELA 1: Lista dos pacotes Hibernate e uma descrio resumida de cada um deles .......... 35
9
LISTA DE ABREVIATURAS E SIGLAS
API
CDI
DAO
EJB
Enterprise JavaBeans
GUI
HTML
HTTP
HTTPS
IDE
J2EE
JDBC
JDK
JSF
JSP
JSTL
LDAP
MVC
Model-View-Controller
OO
Orientada a Objetos
ORM
SQL
URL
XHTML
XML
10
SUMRIO
1 INTRODUO .................................................................................................................... 12
1.1 Justificativa.................................................................................................................... 14
1.2 Objetivos ....................................................................................................................... 14
1.2.1 Objetivo Geral ............................................................................................................ 14
1.2.2 Objetivos Especficos ................................................................................................. 14
1.3 Metodologia .................................................................................................................. 14
1.4 Organizao da Monografia .......................................................................................... 14
2 REVISO BIBLIOGRFICA ............................................................................................. 16
2.1 Engenharia de Software ................................................................................................. 16
2.1.1 Metodologia de desenvolvimento de sistemas .......................................................... 16
2.1.2 Processo de Software .................................................................................................. 17
2.1.3 Modelos de processo de software .............................................................................. 18
2.1.4 Engenharia de requisitos ............................................................................................. 18
2.1.5 Modelos de ciclo de vida ........................................................................................... 19
2.2 NETBEANS .................................................................................................................. 21
2.3 MVC (Model-View-Controller) ..................................................................................... 22
2.3.1 Padro MVC segundo JSF........................................................................................... 25
2.4 JavaServer Faces ............................................................................................................ 25
2.4.1 Ciclo de vida do JSF .................................................................................................... 27
2.4.2 Pginas HTML ............................................................................................................ 31
2.4.3. Navegao entre pginas ............................................................................................ 32
2.4.4. Componentes .............................................................................................................. 32
2.5 Hibernate ........................................................................................................................ 33
2.6 Spring Security ............................................................................................................... 37
2.7 PrimeFaces ..................................................................................................................... 37
3 DESENVOLVIMENTO........................................................................................................ 39
3.1 Estrutura do Projeto ........................................................................................................ 39
3.2 Configurao do arquivo web.xml ................................................................................. 41
3.3 Configurao do Sprint Security .................................................................................... 42
3.4 Configurao do Hibernate............................................................................................. 44
3.5 Anotaes ....................................................................................................................... 45
3.6 Construo da tabela Usurio ......................................................................................... 47
11
3.7 UsuarioDAO ................................................................................................................... 48
3.8 Spring Security ............................................................................................................... 49
3.9 Pgina de Login .............................................................................................................. 50
3.10 CDI ............................................................................................................................... 52
3.11 Formulrio para Mandar Arquivo................................................................................. 61
4 CONCLUSO ...................................................................................................................... 65
4.1 Consideraes Finais ...................................................................................................... 65
4.2 Trabalhos Futuro ............................................................................................................ 65
5 REFERNCIAS BIBLIOGRFICAS ................................................................................. 66
6 APNDICES ........................................................................................................................ 68
6.1 Apndice A Documentos de Requisito........................................................................ 68
12
1 INTRODUO
Sabe-se que a comunicao responsvel pelo sucesso ou fracasso em uma organizao em relao troca de informao, fazendo a passar de um ponto para outro, utilizando
processos de emisso, transmisso e recepo de mensagens por meio de mtodos ou sistemas
convencionais (FERREIRA, 2005).
A Prefeitura Municipal de Balsas-MA vem passando por problemas relacionados
comunicao na transmisso de documentos oficiais, causado pela demora em que determinados documentos saiam do seu destino de origem e cheguem at seu destino final. A mesma
dividida fisicamente por setores e seus respectivos subsetores, todos localizados em locais
diferentes, necessitando manter uma constante comunicao entre os mesmos, que feita por
troca de documentos oficiais. A prefeitura de Balsas-MA no possui um sistema de software
que atenda s suas necessidades referentes comunicao interna, na mesma existe uma
grande quantidade de documentos oficiais armazenados, como ofcios, licitaes e outros,
sem contar que, novos documentos so gerados diariamente.
A Figura1 uma representao de como funcionar a comunicao interna da mesma, com foco no envio e recebimento de documentos oficiais.
A Figura 1 representa o funcionamento da comunicao interna da prefeitura municipal de balsas, onde as secretarias de sade, educao, infraestrutura e comunicao entre
outras, so reparties da mesma e so localizadas e locais diferentes, onde necessita manter
em comunicao com a prefeitura municipal. Se as secretarias desejam enviar documentos
13
oficiais para a prefeitura municipal de Balsas-MA, um funcionrio tem que percorrer um caminho entre as mesmas at a Prefeitura Municipal de Balsas-MA, para realizar a entrega dos
mesmos, causando assim: Demora no envio e no recebimento dos documentos oficiais; Riscos
de acidentes de trabalho com funcionrios na realizao da entrega dos documentos oficiais
em que tem que se locomover entre as ruas da cidade; Se o prefeito ou funcionrios (a) competentes a receberem determinados documentos no estiverem presentes na cidade, eles (a)
no tero como receber os documentos.
A necessidade de um sistema automatizado para a Prefeitura Municipal de BalsasMA, surgiu como ponto de partida ao estudo e desenvolvimento de um sistema web em que
foi observado que o mecanismo utilizado para enviar e receber documentos oficiais utilizados
pela prefeitura municipal de Balsas-MA e seus setores contm problemas em relao demora da execuo no envio e recebimento de documentos oficiais.
O objetivo deste trabalho foi desenvolver um sistema Web que atenda as necessidades
da prefeitura municipal de Balsas-MA em relao a troca de documentos oficiais entre seus
setores. Espera-se que o software desenvolvido, quando for implantado, permita minimizar o
tempo gasto nos envios e recebimentos dos documentos oficiais, permitindo assim uma rpida
comunicao entre seus setores e a mesma.
14
1.1 Justificativa
A administrao pblica de Balsas MA, passa hoje por problemas de comunicao
entre os setores que a constitui e a prpria prefeitura municipal, onde tudo o que realizado
documentado e aprovado por secretarias por meio de seus respectivos supervisores ou secretrios e pelo Prefeito, em que esses documentos precisam ser repassados para os setores que a
constitui. Porm o envio ou a entrega desses documentos feito manualmente atravs de um
funcionrio pblico, que se desloca de uma partio at outra para realizar a entregar dos
mesmos, tornando assim um processo demorado, e que acaba dificultando o processo de organizao da mesma.
O sistema web desenvolvido para a Prefeitura Municipal de Balsas-MA, propulsionar
que os documentos sejam enviados com mais rapidez e segurana, visando melhorar a comunicao interna da mesma em relao transmisso de documentos oficiais.
1.2 Objetivos
1.2.1 Objetivo geral:
Desenvolver um sistema web para a Prefeitura Municipal de Balsas-MA, que possa
enviar, armazenar e receber documentos oficiais.
1.3 Metodologia
A pesquisa cientifica tem por objetivo a busca de conhecimento e permitir que o
mesmo possa ser vivel na resoluo de determinado problema, com a finalidade de colocar
em prtica o conhecimento que foi adquirido, suficiente para realizar o desenvolvimento do
sistema proposto.
15
O trabalho ser desenvolvido para Prefeitura Municipal de Balsas-MA. No ano de
2013.
A metodologia do trabalho consistir em:
Pesquisas Bibliogrficas: Sero realizados estudos em livros, tutoriais, publicaes e artigos onde possa contribuir no aperfeioamento do conhecimento em
relao s ferramentas que sero utilizadas para o desenvolvimento do sistema
web;
Ser adotada a metodologia de desenvolvimento em Cascata;
Reunies com funcionrios da prefeitura municipal de Balsas-MA: Com o propsito de aprimorar o conhecimento de como funciona o mecanismo de entrega
dos documentos oficiais;
Levantamento de requisitos: Sero levantados atravs de entrevista formal com
os responsveis pelas secretarias e setores da administrao pblica de BalsasMA;
Implementao do sistema;
16
2.
REVISO BIBLIOGRFICA
A reviso bibliogrfica consistir na apresentao de conceitos de diferentes autores sobre
MVC que ser utilizado para separao da aplicao, Hibernate para mapeamento objeto relacional, Spring Security para autenticao e autorizao de usurios no sistema, tambm ser
apresentado conceitos sobre JSF, Prime Faces e engenharia de software.
2.1 Engenharia de Software
Engenharia de software metodologia de desenvolvimento e manuteno de sistemas
modulares, com as seguintes caractersticas: processo (roteiro) dinmico, integrado e inteligente de solues tecnolgicas; adequao aos requisitos funcionais do negcio do cliente e
seus respectivos procedimentos pertinentes; efetivao de padres de qualidade, produtividade e efetividade em suas atividades e produtos; fundamentao na Tecnologia da informao
disponvel, vivel, oportuna e personalizada; planejamento e gesto de atividades, recursos,
custos e datas (REZENDE, 2005).
MAFFEO (1992 apud REZENDE, 2005, p.5.) considera-se que os objetivos primrios da
Engenharia de Software so o aprimoramento da qualidade dos produtos de software e o aumento da produtividade dos engenheiros de software, alm do atendimento aos requisitos de
eficcia e eficincia, ou seja, efetividade.
17
2.1.2 Processo de Software
Um processo de software um conjunto de atividades e resultados associados que geram
um produto de software. Essas atividades so, em sua maioria, executadas por engenheiros de
software (SOMMERVILLE, 2005).
Segundo REZENDE (2005):
Os processos de software ou processos de desenvolvimento de software tm conceitos equivalentes a metodologia de desenvolvimento e manuteno de software, pois
ambos so roteiros de elaborao de software que devem contemplar fases, subfases,
produtos externados e pontos de avaliao de qualidade.
Um processo um conjunto de passos parcialmente ordenados, constitudos por atividades, mtodos, prticas e transformaes, usado para atingir uma meta. Essa meta est associada a um ou mais resultados concretos finais, que so os produtos da execuo do processo
(FILHO, 2001).
Segundo SOMMERVILLE (2005), existem quatro atividades de processo fundamentais
comuns a todos os processos de software. Essas atividades so:
1. Especificao do software: A funcionalidade do software e as restries em sua operao devem ser definidas.
2. Desenvolvimento do software: O software deve ser produzido de modo que atenda as
suas especificaes.
3. Validao do software: O software tem de ser validado para garantir que ele faz o que
o cliente deseja.
4. Evoluo do software: O software deve evoluir para atender s necessidades mutveis
do cliente.
Diferentes processos de software organizam essas atividades de maneiras diversas e so
descritos em diferentes nveis de detalhes. Os prazos das atividades variam, do mesmo modo
que os resultados de cada atividades. Diferentes organizaes podem utilizar processos diferentes para produzir o mesmo tipo de produto (SOMMERVILLE, 2005).
Os processos de software so complexos e, como todos os processos intelectuais, dependem de julgamento humano. Por causa da necessidade de utilizar o julgamento e a criatividade, tentativas de automatizar processos de software tm tido sucesso limitado (SOMMERVILLE, 2005).
18
Uma razo pela qual existe uma abordagem limitada para a automao de processos a
imensa diversidade dos processos de software. No h um processo ideal, e diferentes organizaes desenvolveram abordagens inteiramente diferentes para o desenvolvimento de software (SOMMERVILLE, 2005).
19
o cliente e os usurios finais do sistema; os requisitos do sistema so uma descrio mais detalhada da funcionalidade a ser fornecida.
4- Validao de requisitos Essa atividade verifica os requisitos quanto a sua pertinncia, consistncia e integridade. Durante esse processo, inevitavelmente so
descobertos erros na documentao de requisitos. Os requisitos devem ento
ser modificados, a fim de corrigir esses problemas.
20
Requisitos:
Os problemas que os engenheiros de software tm para solucionar so, muitas vezes,
imensamente complexos. Compreender a natureza dos problemas pode ser muito difcil, especificamente se o sistema for novo. Consequentemente, difcil estabelecer com exatido o
que o sistema deve fazer. As descries das funes e das restries so os requisitos para o
sistema; e o processo de descobrir, analisar, documentar e verificar essas funes e restries
chamado de engenharia de requisitos (SOMMERVILLE, 2003).
Alguns dos problemas que surgem durante o processo de engenharia de requisitos so
resultantes de falta de uma ntida separao entre esses diferentes nveis de descrio (SOMMERVILLE, 2003).
Os requisitos do usurio, os requisitos de sistema e a especificao de projeto de software podem ser definidos como se segue:
1- Requisitos do usurio so declaraes, em linguagem natural e tambm em diagramas
sobre as funes que o sistema deve fornecer e as restries sob as quais deve operar.
2- Requisitos de sistema estabelecem detalhadamente as funes e as restries de sistema. O documento de requisitos de sistema deve ser preciso. Ele pode servir como um
contrato entre o comprador do sistema e o desenvolvedor do software.
3- Especificao de projeto de software uma descrio abstrata do projeto de software.
Segundo Sommerville (2003), os requisitos de sistema de software so, frequentemente, classificados como funcionais ou no funcionais.
1- Requisitos funcionais So declaraes de funes que o sistema deve fornecer,
como o sistema deve reagir a entradas especificas e como deve se comportar em
determinadas situaes.
2- Requisitos no funcionais So restries sobre os servios ou as funes oferecidas
pelo sistema. Entre eles destacam-se restries de tempo, restries sobre o processo de desenvolvimento, padres, entre outros.
Anlise:
Fluxo cujo objetivo detalhar, estruturar e validar os requisitos, de forma que estes
possam ser usados como base para o planejamento detalhado (FILHO, 2009).
21
Desenho:
Fluxo cujo objetivo formular um modelo do produto que sirva de base para implementao (FILHO, 2009).
Implementao:
Fluxo cujo objetivo realizar o desenho em termos de componentes de cdigos (FILHO, 2009).
Testes:
Fluxo cujo objetivo verificar os resultados da implementao (FILHO, 2009).
2.2 Netbeans
O NetBeans considerada uma das melhores IDEs open source do mercado. Desenvolvida pela Sun Microsystems e mantida pela comunidade, a cada nova verso vem se mostrando uma madura e consistente ferramenta para desenvolvimento Java. Em matria de desenvolvimento Web, essa IDE muito madura, sendo uma excelente alternativa para aqueles
que desejam desenvolver aplicaes Web de forma simples e rpida (GONALVES, 2007).
Segundo GONALVES (2007), SANTOS (2007):
O NetBeans foi Desenvolvida pela Sun Microsystems e mantida pela comunidade,
considera uma das melhores IDEs open sourse do mercado. um projeto que se dedica a prover ferramentas aplicveis ao processo de desenvolvimento de software e
que possa ser utilizado por desenvolvedores e demais usurios, entidades e corporaes como base para a criao dos seus prprios produtos.
A comunidade desse projeto um grupo de pessoas interessadas que residem nas mais
diversas partes do mundo que contribuem entre si de diversas formas, como, postando na lista
de discusses mensagens onde qualquer pessoa pode acess-las para busca ajuda nos problemas enfrentados com o uso dessa ferramenta e tambm para compartilhar os sucessos obtidos
com elas (SANTOS, 2007).
Segundo Santos (2007), Qualquer pessoa pode obter gratuitamente o instalador do
NetBeans no web site do projeto e est autorizada a fazer uso dele tanto para propsitos no
comerciais quanto para fins comerciais.
22
Tela principal do NetBeans IDE 7.3. O mesmo ser utilizado como ambiente de Desenvolvimento web para o sistema web proposto.
O NetBeans conta com um sistema de depurao, mostrando variveis no declaradas,
falhas de digitao, mtodos inexistentes e ainda possibilitar importaes de bibliotecas atravs de auxilio da ferramenta (GONALVES, 2007).
O ambiente NetBeans mostra como principal ferramenta de desenvolvimento com a
tecnologia JAVA. Atravs dele o programador consegue mais recursos que podem auxiliar na
produtividade para o desenvolvimento do seu software. Neste ambiente possvel montar
uma arquitetura a nvel de classes em trs camadas, denominada MVC: Modelo-Viso e Controle.
23
aplicaes escritas em JSP. Graas a essa condenao, o paradigma do modelo MVC foi incorporado no desenvolvimento, criando assim dois modelos para desenvolvimento de aplicaes escritas em Java: Model 1 (Modelo 1) e Model 2 (Modelo 2), baseados no paradigma
MVC (GONALVES, 2007).
O Model 1:
A primeira arquitetura, conhecida como Model 1, muito comum no desenvolvimento
de aplicaes Web, chamada de page-centric. Esta arquitetura fornece o modo mais fcil de
reunir uma aplicao Web. Envolvendo simplesmente a construo de uma aplicao como
um conjunto de pginas JSP (GONALVES, 2007)
O Model 2:
uma arquitetura mais sofisticada que usa Servlets e pginas JSP. Foi batizada de
Model 2 (Modelo 2), que est baseada em uma adaptao da arquitetura MVC. Nessa implementao, um Servlet usado como um Controlador, recebendo pedidos do usurio, enquanto efetuando mudanas no Modelo, e fornecendo a Apresentao ao usurio (GONALVES,
2007).
Segundo GONALVES (2006):
As Servlets so classes Java que so instanciadas e executadas em associao com
servidores Web, atendendo requisies realizadas por meio de protocolo http. Os objetos Servlets quando acionados podem enviar a resposta na forma de uma pgina
HTML ou qualquer outro contedo MIME.
24
O modelo a camada que abriga a verdadeira lgica de negcio. Possui as regras para
obteno e atualizao do estado e fornece ao controlador o acesso aos dados, pois a nica
parte do sistema que se comunica com o banco de dados (BASHAM et al, 2008).
A ideia do padro MVC dividir uma aplicao em trs camadas: modelo, visualizao e controle. O modelo responsvel por representar os objetos de negcio, manter o estado
da aplicao e fornecer ao controlador o acesso aos dados. A visualizao representa a interface com o usurio, sendo responsvel por definir a forma como os dados sero apresentados
e encaminhar as aes dos usurios para o controlador. J a camada de controle responsvel
por fazer a ligao entre o modelo e a visualizao, alm de interpretar as aes do usurio e
as traduzir para uma operao sobre o modelo, onde so realizadas mudanas e, ento, gerar
uma visualizao apropriada.
Model: O Model (modelo) o objeto que representa os dados do programa.
Maneja esses dados e controlam todas suas transformaes. Esse modelo no tem conhecimento especifico do controlador (Controller) e das apresentaes (View), nem
sequer contm referncia a eles. Portando, o Model so as classes que trabalham no
armazenamento e busca de dados. Por exemplo, um cliente pode ser modelado em
uma aplicao, e pode haver vrios modos de criar novos clientes ou mudar informaes de um relativo cliente.
View: A View (apresentao) o que maneja a apresentao visual dos dados
apresentados pelo Model. Em resumo, a responsvel por apresentar os dados resultantes do Model ao usurio. Por exemplo, uma Apresentao poder ser um local administrativo se logam em uma aplicao. Cada administrador poder visualizar uma
parte do sistema que o outro no v.
Controller: O Controller (controlador) o objeto que responde as ordens executadas pelo usurio, atuando sobre os dados apresentados pelo modelo, decidindo
como o modelo devera ser alterado ou devera ser revisto e qual apresentao devera
ser exibida. Por exemplo, o controlador recebe um pedido para exibir uma lista de clientes interagindo com o Modelo e entregando uma apresentao onde esta lista poder
ser exibida.
25
2.3.1 Padro MVC segundo JSF
No JSF, o controle composto por um Servlet denominado FacesServlet, por arquivos
de configurao e por um conjunto de manipuladores de aes e observadores de eventos. O
FacesServlet responsvel por receber requisies da WEB, redirecion-las para o modelo e
ento remeter uma resposta. Os arquivos de configurao so responsveis por realizar associaes e mapeamentos de aes e pela definio de regras de navegao. Os manipuladores
de eventos so responsveis por receber os dados vindos da camada de visualizao, acessar o
modelo, e ento devolver o resultado para o FacesServlet (KITO, 2005).
Com o padro MVC ser possvel dividir a aplicao em trs camadas: modelo, visualizao e controle. Atravs desse padro ser possvel fazer a manuteno do sistema com
mais facilidade (GONALVES, 2007). O JSF basear-se nesse padro de projeto, e uma de
suas melhores vantagens e a clara separao entre a visualizao e regras de negcio (modelo), o mesmo ser utilizado como linguagem de programao web no desenvolvimento do
trabalho.
26
Segundo Kito (2005):
O JSF executado do lado do servidor em um container Web padro como, por
exemplo, o Tomcat. Quando o usurio clica em um boto em uma aplicao swing2
ele vai disparar um evento que pode ser tratado diretamente no cdigo do programa
desktop. Em contraste, os navegadores Web no conhecem os componentes do JSF
ou eventos, pois o browser s sabe interpretar HTML (HyperText Markup Language). Ento quando um boto clicado pelo usurio em um aplicativo Faces gerada uma requisio que ser enviada atravs do browser para o servidor pelo protocolo HTTP. O Faces responsvel por traduzir essa requisio em um evento que
ser processado pelo aplicativo no servidor. responsvel tambm por garantir que
cada elemento da interface do usurio definidas no servidor seja exibida corretamente para o navegador.
27
padres, cabe ressaltar que estes recursos esto atrelados a um modelo de desenvolvimento
que o usurio deve seguir, caso contrrio os recursos so bem limitados (SOUSA, p.8-18).
Os componentes JSF so orientados a eventos, ou seja, possvel processar eventos
gerados pelo cliente, como um clique no boto ou alterao do valor de um campo de texto.
Por padro, h um conjunto de componentes bsicos para manipulao de formulrios, mas o
Faces oferece uma infraestrutura para criao de novos componentes. Dentre os componentes
de terceiros, os mais conhecidos so os Jboss RichFaces e Apache Tomahawk (SOUSA, p.818).
O framework JSF responsvel por interagir com o usurio (cliente), e fornece ferramentas para criar uma apresentao visual, a aplicao lgica e a lgica de negcios de uma
aplicao Web. Porm, o escopo de JSF restringindo camadas de apresentao. A persistncia de banco de dados e outras conexes de back-end esto fora do escopo de JSF (GONALVES, 2007).
28
Restore View
A requisio recebida pelo FacesController, que extrair a View ID usada para identificar a pgina JSP associada a ela. Uma View a representao de todos os componentes que
compem uma determinada pgina. Uma vez que a pgina est em mos, realizada uma
tentativa de restaurao desta View que, geralmente, restaurada com base em um campo
oculto, ou baseada na sesso de usurio. A rvore de componentes da View obtida atravs de
duas formas: Initial View e Postback, que so executados de maneiras distintas (SOUSA, p.818).
A Initial View ocorre quando a pgina acessada pela primeira vez ou quando a pgina acessada via HTTP GET. O contexto JSF cria rvore de componentes, com base na View
acessada, e a mesma gravada na propriedade viewRoot do objeto FacesContext. Esse objeto contm todas as informaes relacionadas requisio que so necessrias para manipular
o estado dos componentes GUI de uma pgina de uma determinada requisio. Como no h
nenhum valor de entrada a ser processado, o fluxo avana para a ltima fase, a Render Response (SOUSA, p.8-18).
J o Postback ocorre quando o usurio interage com o formulrio da pgina, seja alterando um valor de campo de texto ou clicando num link ou boto. Nesses casos, a requisio
29
enviada para a mesma pgina da qual foi submetido o formulrio. Como a View j existe, ela
precisa ser restaurada; nesse caso, o JSF utiliza as informaes restauradas para reconstruo
do estado da View. Uma vez reconstrudo o estado, o fluxo passa para a prxima fase do ciclo
de vida (SOUSA, p.8-18).
Process Validation
Nesta fase assegurado que todos os valores enviados so vlidos. A validao desempenhada diretamente pelo componente e tambm pode ser delegada para um ou mais validadores. Antes disso, o valor submetido pelo usurio precisa ser convertido, o que feito por
meio de um conversor padro ou atravs de um conversor especfico (SOUSA, p.8-18).
Uma vez validado o valor enviado pelo usurio, o mesmo verificado com o valor do
componente; caso seja diferente, gerado um evento de alterao de valor. Nesse ponto,
eventos value-change e qualquer outro evento associado a esta fase so executados pelos listeners apropriados. Caso todos os valores submetidos sejam vlidos, a execuo passa para a
30
prxima fase do ciclo; em caso de erros, a pgina renderizadas com as mensagens de validao (SOUSA, p.8-18).
Invoke Application
Essa fase responsvel por chamar qualquer evento ou ao registrados para a requisio. Nesse momento, a aplicao tem o estado necessrio para executar todos os eventos e
lgicas de negcios da aplicao. H dois tipos de mtodos que podem ser chamados neste
momento: action handlers e event listeners (SOUSA, p.8-18).
Action handlers so usadas para controle de paginao. Nesse contexto, dependendo
da lgica de negcio processada, definida a qual pgina o usurio deve ser redirecionado.
Um action handlers um mtodo de um Backing Bean sem argumentos que retorna uma
string que determinar a pgina de destino. Por ser um mtodo sem argumentos, o action
handler no contm a informao de qual componente chamou a ao (SOUSA, p.8-18).
Event listener no tem retorno e recebe como parmetro um objeto do tipo ActionEvent, que contm informaes relacionadas ao evento, como o componente que o originou, a
phaseld relacionada ao ciclo de vida JSF. Por no ter retorno, este tipo de ao ideal para
executar lgica de negcios quando o usurio clica em um boto e um campo atualizado, ou
selecionando uma opo de uma caixa de seleo, que determina a exibio de valores adicionais. Os mtodos listener podem ser criados dentro de Backing Beans ou em classes separadas, mas h uma vantagem em se criar classes separadas que a possibilidade de reutilizao
em mais de uma pgina (SOUSA, p.8-18).
31
Render Response
Esta a ultima fase do ciclo de vida JSF, todo o processamento no nvel de framework
e no nvel da aplicao j foi realizado. Essa ltima fase tem dois objetivos: o primeiro gerar
e enviar a resposta para o usurio e o segundo salvar o estado da View para ser restaurada no
prximo request, caso a pgina venha requisit-la novamente (SOUSA, p.8-18).
Durante a renderizao dos componentes, os conversores so novamente chamados
para transformar o objeto em uma String para ser visualizada. Depois de completada a fase, o
container web transmite fisicamente a resposta para o usurio, a qual exibida no navegador
(SOUSA, p.8-18).
32
2.4.3 Navegao entre pginas
Conceitualmente, o sistema de navegao JSF semelhante ao sistema de navegao
do Struts. S que em JSF no temos as to conhecidas ActionForward, mas, por outro lado,
temos o navigation handler, que o corao do sistema de navegao. E ele que determina
qual ser a prxima pgina a ser carregada. A base de trabalho de um navigation handler a
resposta de action events. E a resposta de uma action event est associada com um action method que executa uma determinada lgica de negcio e retorna uma determinada String como
resultado ou pode ser um valor fixo na propriedade action de um link ou um boto. As regras
de navegao so definidas no arquivo de configurao (SOUSA, p.14-26).
2.4.4 Componentes
Em pginas JSF declaramos os componentes visuais e no visuais que formaro a rvore de componentes. O conceito de componente criado no JSF muito rico: classes Java
definem comportamentos e atributos de componentes que podem ser renderizados no s em
HTML, como tambm em outras linguagens de marcao (NUNES; MAGALHES, p. 2435).
Ainda na renderizao HTML, a infraestrutura para componentes em JSF possibilitou
que o conjunto bsico de componentes visuais fosse significativamente ampliado por bibliotecas de componentes de terceiros, como Apache Tomahawk, Jboss Richfaces, Oracle ADF
Faces e IceSoft IceFaces (NUNES; MAGALHES, p. 24-35).
Para o desenvolvedor isto significa que funcionalidades interativas desejadas na web e
bastaknte conhecidas em aplicaes desktop esto disponveis sem que este desenvolvedor
precise dominar HTML, Javascript e CSS (NUNES; MAGALHES, p. 24-35).
Entretanto, em uma aplicao no rara a situao em que precisamos criar componentes compostos: combinar vrios componentes prontos em uma rea para reuso. Uma rea
de login, uma rea de botes de ao, um menu com busca integrada e uma caixa de texto
combinada com suas respectivas mensagens de erro e informao so alguns exemplos (NUNES; MAGALHES, p. 24-35).
No JSF o conceito de componentes compostos foi incorporado a partir das ideias de
templating do Facelets. Entretanto, evoludo a partir dos maduros recursos existentes na soluo Tag Files do JSP e dos prprios conceitos de componentes j disponveis na especifica-
33
o. Para criar um componente composto JSF basta criar um arquivo XHTML e public-lo na
pasta de recursos (NUNES; MAGALHES, p. 24-35).
2.5
Hibernate
Hibernate uma ferramenta para mapeamento objeto/relacional para ambiente Java. O
termo mapeamento objeto/relacional (ORM) refere-se tcnica de mapeamento de uma representao de dados em um modelo de objetos para um modelo de dados relacionais, baseado
em um esquema E/R. O hibernate no cuida somente do mapeamento das classes Java para
tabelas do banco de dados (e dos tipos de dados Java para os tipos de dados SQL), mas tambm prov facilidades para consultar e retorna os dados da consulta, e pode reduzir significativamente o tempo de desenvolvimento em contrapartida ao tempo gasto pelas operaes manuais dos dados feitas com SQL e JDBC (PRIMO; SANTOS, p.46-57).
34
Segundo Gonalves (2007):
O Hibernate um framework que se relaciona com o banco de dados, onde esse relacionamento conhecido como mapeamento objeto/relacional para Java, deixando
o desenvolvedor livre para se concentrar em problemas da lgica do negcio. Sua
simplicidade em configurao, d ao desenvolvedor algumas regras para que sejam
seguidas como padres de desenvolvimento ao escrever sua lgica de negcio e suas
classes persistentes. De resto, o Hibernate se integra suavemente ao seu sistema se
comunicando com o banco de dados como se fosse diretamente feito por sua aplicao. Uma mudana de banco de dados, nesse caso, no se torna traumtica, alterando
apenas um ou outro detalhe na configurao do Hibernate.
O Hibernate uma ferramenta de consulta e persistncia objeto/relacional de alta performance. Uma das solues ORM mais flexveis e poderosas do mercado, ele faz o mapeamento de classes Java para tabelas de banco de dados e de tipos de dados Java para tipos de
dados SQL (PRIMO; SANTOS, p.46-57).
Ele fornece consultas e facilidades para retorno dos dados que reduzem significativamente o tempo de desenvolvimento. A meta do projeto do Hibernate aliviar os desenvolvedores de 95% das tarefas comuns de programao relacionada persistncia, como a codificao manual com SQL e a API JDBC. O Hibernate gera o SQL para a aplicao, no necessitando o tratamento dos result sets (comuns nas conexes manuais com JDBC), faz a converso entre registros e objetos e permite que sua aplicao seja portvel para qualquer banco
de dados SQL. (PRIMO; SANTOS, p.46-57).
Arquitetura
O projeto Hibernate composto por vrios pacotes Java. Cada pacote tem uma funcionalidade especfica e alguns deles s so disponveis a partir da verso 5.0 do Java SE e do
Java EE. A Figura 5 apresenta um quadro ilustrativo.
35
Os pacotes apresentados na Figura 5 so obrigatrios para o desenvolvimento utilizando o Hibernate. O nico pacote que deve estar sempre presente independente da plataforma
Java utilizada o Core. Alm desses pacotes existem outros que agregam outras funcionalidades ao framework e que podem ser adicionados mediante a necessidade do desenvolvedor
da aplicao, so eles: Hibernate Shard, Hibernate Validator, Hibernate Search e Hibernate
Tools (PRIMO; SANTOS, p.46-57). A Tabela 1 apresenta uma lista e uma descrio resumida de todos os pacotes.
Pacote
Descrio
Hibernate Core
Hibernate Annotation
Hibernate EntityManager
Hibernate Shards
Hibernate Validator
Hibernate Search
Hibernate Tools
Jboss Seam
Hibernate Core
O Hibernate Core est presente em todas as possveis arquiteturas Java onde se possa
utilizar o Hibernate. O Hibernate prov transparent persistence (persistncia transparente); o
nico requisito para uma classe ser persistente ter declarado um construtor default, ou seja,
sem argumentos. Ele oferece ainda opes de consulta sofisticadas, seja com SQL diretamente, ou uma linguagem de query orientada a objeto e independente de SGBD HQL (Hibernate
Query Language), ou ainda, com uma API de queries Criteria muito til para gerar queries
dinamicamente (PRIMO; SANTOS, p.46-57).
36
Outras caractersticas do Hibernate Core:
Modelo de Programao Natural Hibernate suporta o idioma OO natural: herana, polimorfismo, composio e colees Java;
Suporte para modelo de objetos com granularidade fina uma rica variedade de
mapeamento para colees e objetos dependentes;
Sem aumento no tempo de construo do bytecode No acontece a gerao de
cdigo extra ou de bytecode no processo de build da aplicao.
Hibernate Annotations
O Hibernate, como toda ferramenta para mapeamento objeto/relacional, requer metadados que governem as transformaes dos dados de uma representao para outra (e viceversa). Estes metadados eram tradicionalmente fornecidos por arquivos XML, mas a partir da
verso 3.2 do Hibernate, pode-se usar as anotaes do JDK 5.0 para fazer o mapeamento
(PRIMO; SANTOS, p.46-57).
Hibernate EntityManager
A especificao EJB 3.0 reconhece a vantagem e o sucesso do mapeamento objeto/relacional feito de forma transparente, estabelecendo uma API padro inspirada no Hibernate. O Hibernate EntityManager, junto com o Hibernate Annotations, implementam as interfaces e as regras do ciclo de vida definidos pela nova especificao EJB 3, utilizando por baixo a maturidade do Hibernate Core (PRIMO; SANTOS, p.46-57).
O Entity Manager o objeto principal da API EntityManager. Ele usado para acessar
um banco de dados de uma determinada unidade de persistncia. Uma unidade de persistncia
define o banco de dados e as respectivas classes persistentes para as quais o Entity Manager
prov suporte para criao, atualizao, remoo e consultas. Uma aplicao poder definir
vrias unidades persistentes, uma para cada banco de dados que acessar (PRIMO; SANTOS,
p.46-57).
37
2.6 Spring Security
O Spring Security surgiu da necessidade de melhorar o suporte segurana oferecido
pela especificao Java EE. O framework centraliza a configurao em um nico XML, dispensando configuraes do container e tornando a aplicao web um arquivo WAR auto contido (ZANINI, p.28-38).
Segundo Jamacedo (2013), Spring Security um framework responsvel por cuidar
da autenticao e autorizao de usurios em aplicaes web.
Para comear a utiliz-lo basta adicionar seus JARs ao classpath, configurar um filtro
e um listener no web.xml e criar um application contexto (XML de configurao). O XML
centraliza todas as configuraes de autenticao e autorizao. As tags <intercept-url> definem quais roles podem acessar cada grupo de URLs. A tag <authentication-provider> define a
fonte de dados para as informaes de usurios (banco de dados, arquivos de propriedades,
LDAP, etc.) (ZANINI, ano).
Quando necessrio, possvel utilizar os eventos publicados pelo framework a cada
sucesso ou falha na autenticao ou autorizao. Ouvir os eventos permite criar complexos
casos de gerenciamento de usurios. O Spring Security ainda oferece integrao com a API de
servlets, taglibs para facilitar a codificao de JSPs, suporte HTTPS, segurana em mtodos
com uso de anotaes e suporte a autenticao com LDAP ou certificados X509 (ZANINI,
p.28-38).
Com o Spring Security possvel criar um mecanismo de autenticao e autorizao
para aplicaes web em questo de minutos. O framework foca facilitar a implementao dos
casos de uso mais frequentes, porm oferece valiosos pontos de extenso para requisitos mais
complexos. Por fim, disponibilizar suporte a inmeros diferentes tipos de autenticao e integrao com as mais usadas tecnologias na rea de segurana (ZANINI, p.28-38).
O Spring Security e aplicvel a qualquer aplicao web que necessite restringir seus
recursos para diferentes tipos de usurios, bem como assegurar que se autentiquem de forma
prtica e segura (ZANINI, p.28-38).
2.7 PrimeFaces
A biblioteca do PrimeFaces composta por cerca de 100 componentes de interface
todos estes personalizados e de cdigo aberto, e implementa tecnologia AJAX, grficos ani-
38
mados JavaScript entre outros. A utilizao do PrimeFaces em projetos proporciona uma infinita gama de possibilidades para criao de layouts j que em seu ShowCase a cerca de 30
temas diferentes que podem ser facilmente adicionados ao seu projeto (Santos, et.al. 2010).
Segundo GONALVES (2007):
AJAX a sigla de Asynchronous JavaScript and XML, no uma tecnologia e
sim o uso de tecnologias incorporadas que tem as principais o Javascript e o XML,
onde juntos so capazes de torna o navegador mais interativo, utilizando-se de solicitaes assncronas de informaes. sim um conjunto de tecnologia; cada uma
com sua forma de exibir e interagir com o usurio.
O primeFaces ser usado na construo das interfaces, ela uma biblioteca que define
componentes JSF.
39
3. DESENVOLVIMENTO
A partir de agora ser dado incio ao processo de desenvolvimento do projeto. Colocando em prtica todos os conhecimentos adquiridos, atravs dos estudos realizados sobre as
diversas ferramentas que sero utilizadas, bem como um maior aprofundamento do contedo
no decorrer do desenvolvimento, onde sero mostrados os passos importantes para o desenvolvimento e funcionamento do mesmo.
40
Tipicamente um DAO inclui mtodos para inserir, selecionar, atualizar e excluir objetos de um banco de dados. Dependendo de como implementado o padro DAO, pode se ter
um DAO para cada classe de objetos em uma aplicao ou poder ter um nico DAO que
responsvel por todos os objetos (GONALVES, 2007).
41
3.2 Configurao do arquivo web.xml
O diretrio WEB-INF possui o arquivo web.xml, que o Deployment Descriptor da
aplicao. Ele contm informaes de configurao como parmetros de inicializao, mapeamento de Servlets entre outros (PEREIRA, p.52-60).
Para facilitar o entendimento do arquivo web.xml, o mesmo foi dividido em varias
partes separadas por comentrios. A Figura 6 apresenta a estrutura do projeto e onde se encontra o arquivo web.xml.
Na primeira parte da configurao do arquivo web.xml foi configurado o JSF apresentado na Figura 7, includo o servlet Faces Servlet, que ser responsvel pelas renderizaes
feitas pelo JSF.
42
Na terceira parte temos a configurao do Spring Security apresentado na Figura 9,
que descrever um filtro HTTP para interceptar todas as URLs acessadas e conferir suas permisses de acesso. Por isso, o filtro aplicado com o url-pattern /*.
E na ltima parte temos a configurao do Prime Faces apresentado na Figura 10, utilizando o tema delta. Caso o desenvolvedor pretenda mudar o tema da aplicao, basta s trocar o nome delta na configurao, pelo nome do novo tema.
43
A tag <http> a tag root de todas as configuraes de seguranas da aplicao, seu
atributo auto-config marcado com true configura o framework para utilizar autenticao
HTTP-Basic, cria um formulrio de login de autenticao padro para configurar o logout
(PEREIRA, p.52-60).
A tag <intercept-url> usada para determinar o conjunto de padres de URL que a
aplicao est interessada em controlar o acesso e a respectiva restrio. O atributo pattern
descreve o caminho que ser feito o controle e o atributo access define a restrio. Desta forma todas as pginas que estive dentro da pasta sistema s sero acessadas por usurio autenticado (PEREIRA, p.52-60).
O objetivo da tag <form-login> configurar o caminho da pgina de login (atributo
login-page), bem como a pgina que o usurio ser redirecionado caso a login falhe (atributo
authentication-failure-url) (PEREIRA, p.52-60).
Ainda no mesmo arquivo de configurao iremos mapear as informaes do banco de
dados: usurio, senha, url e driver para que o Spring crie e gerencie o dataSource.
44
3.4 Configurao do Hibernate
A configurao do hibernate apresentado na Figura 14, foi realizado em uma arquivo
dentro do pacote de Cdigos-fonte no pacote <pacote default>, esse arquivo o hibernate.cfg.xml. Nesse arquivo podem ser descritas vrias unidades de persistncia, diferenciadas
pelo nome, e cada qual com as seguintes propriedades: driver de banco de dados, usurio e
senha de acesso, url de acesso ao banco e dialeto utilizado. Existe um dialeto especifico para
cada banco de dados (PRIMO; SANTOS, p.46-57).
As configuraes aqui esto divididas em elementos <property/>, onde cada um contm um atributo chamado name, indicando o que ele faz.
Em sequncia temos cada valor do atributo name listado por ordem de apario na
configurao do Hibernate.
Hibernate.dialect: o dialeto no qual o Hibernate dever utilizar para se comunicar
com o banco de dados. Para configurao do hibernate foi utilizado o dialeto
org.hibernate.dialect.MySQLDialect, pois na aplicao foi utilizado o banco de
dados MySQL, e o valor que define a forma de gerao foi o update (GONALVES, 2007).
45
Hibernate.connection.driver_class: nome da classe do drive JDBC do banco de
dados que est sendo utilizado. No caso a configurao est utilizando o driver do
MySQL (GONALVES, 2007).
Hibernate.connection.url: a URL de conexo especfica do banco de dados que
est sendo utilizado (GONALVES, 2007).
Hibernate.connection.username: o nome de usurio com o qual o Hibernate deve
se conectar ao banco de dados. No caso, pela configurao root (GONALVES,
2007).
Hibernate.hbm2ddl.auto: Esta propriedade define que as tabelas do banco de dados sero geradas automaticamente pelo Hibernate. Existem dois valores que define a forma de gerao: o valor create-drop informa que o banco sempre recriado
na inicializao e o valor update denota que o banco atualizado apenas se houver
alterao no modelo, ou seja, aps a incluso de novos mapeamentos ou modificao em mapeamentos existentes (PRIMO; SANTOS, p.46-57).
Depois de ser criada a classe usurio para gerao da tabela, e necessrio mapear a
mesma, adicionando na configurao do hibernate em < mapping> seguindo do nome class, o
caminho exato da classe que ser mapeada.
3.5 Anotaes
O objetivo das anotaes possibilitar a declarao de metadados nos nossos objetos,
isto , configuraes de uma classe podem ficar dentro dela, em vez de em um XML.
Toda classe Java que ser persistida em um banco de dados atravs do Hibernate
considerada uma entidade e declarada utilizando a anotao @Entity (acima da declarao
da classe) (PRIMO; SANTOS, p.46-57). Na Figura15, temos um exemplo da declarao da
anotao @Entity.
A anotao @Table definida em nvel de classe e permite que voc descreva o nome
da tabela que ser utilizada para o mapeamento da entidade. Se nenhum @Table for declara-
46
da, os valores padres sero utilizados: no caso o prprio nome da classe (PRIMO; SANTOS,
p.46-57).
O @Table elemento tambm contm um esquema e um catlogo de atributos, e eles
precisam ser definidos. Voc tambm pode definir restries de unicidade para a tabela usando o @UniqueConstraint anotao em conjunto com @Table (PRIMO; SANTOS, p.46-57).
A anotao @Id permite que o usurio defina qual propriedade a chave primria da
sua entidade. A propriedade pode ser preenchida pela prpria aplicao ou ser gerada pelo
Hibernate. possvel definir a estratgia para gerao graas anotao @GeneratedValue
(PRIMO; SANTOS, p.46-57). Na Figura16, temos a declarao da anotao @Entity e
@GeneratedValue.
47
A anotao @Column permite mapear as colunas de uma tabela. No cdigo abaixo,
Figura 18, est sendo mapeada a coluna login e senha.
48
private Secretaria secretaria;
private String permissao;
private String nome;
@Column (unique = true) /* Ir mapear as colunas login e senha da tabela usuarios. */
private String login;
private String senha;
/* O mapeamento exige que para cada varivel criada existam os mtodos get e set */
Figura 19: Classe Usuario.java
3.7 UsuarioDAO
Para adicionar ao sistema comportamentos de gravar um cadastro foi adicionado ao
pacote com.sysprefeitura.model.daos, a Classe UsuarioDAO, que ir fazer acesso aos dados
no banco.
Foi criado nessa classe o mtodo, gravar (), apresentado na Figura 20, tem a incumbncia de armazenar novos cadastros no banco de dados.
49
3.8 Spring Security
Autenticao
A autenticao a verificao das credenciais (nome de usurio e senha) da tentativa
de conexo. Esse processo consiste no envio de credenciais do cliente para o servidor em um
formulrio de texto simples ou criptografado usando um protocolo de autenticao. O Spring
Security possui vrias formas de realizar a autenticao. Por exemplo, podemos utilizar o
formulrio de login que gerado automaticamente pelo framework ou contruir um prprio
formulrio personalizado. Os usurios da aplicao que sero autenticados podem ser definidos diretamente no arquivo XML de configuraes do framework ou em um banco de dados
(PEREIRA, p.52-60).
Autorizao
Autorizao utilizada para verificar se determinado usurio previamente autenticado
possui permisso para usar, manipular ou executar o recurso em questo. a concesso de
uso para determinados tipos de servio, dada a um usurio previamente autenticado(PEREIRA, p.52-60).
O Spring Security possui uma abordagem declarativa para a segurana, baseada em
roles (papis). Por exemplo, uma aplicao de uma pousada poderia ter dois roles: um ADMIN, que possui permisso para cadastrar acomodaes e reserv-las, e um COMUM, que
possui permisso apenas para reserv-las. Dessa forma os usurios que forem utilizar essa
aplicao teriam que possuir algum desses roles (PEREIRA, p.52-60).
O projeto sysPrefeitura possuir dois roles: um ROLE_SUPER, destinado ao administrador do sistema, que possuir permisso para cadastrar e excluir usurios e para cadastrar e
excluir setores, e um ROLE_ADMIN, destinado ao usurio, que possuir permisso para enviar, excluir e baixar documentos oficiais.
OBS: Para dar continuao ao projeto foi primeiro necessrio criar a tabela usurios
com hibernate para autenticao e autorizao no banco de dados utilizando Spring Security,
como foi mostrado acima. A tabela usurio responsvel por guarda o id, login, senha, nome,
permissao e secretaria_id.
50
3.9 Pgina de Login (index.xhtml)
A Figura 21 apresenta o formulrio da pgina index.html de login, onde temos os
campos de login, senha e um boto Acesse sua Conta que redireciona a aplicao para uma
rea restrita (/sistema/index.xhtml), caso senha e login estiverem corretos. O formulrio ainda
contm o atributo required com o valor true para que o mesmo passe a ser obrigatrio em seu
preenchimento. Para que uma mensagem aparea, caso o usurio no preencha um campo,
est sendo utilizado o atributo requiredMessage, que receber a mensagem que ser mostrada
ao usurio. O atributo value est sendo usado para dar o nome ao campo, no caso e-mail e
senha. O atributo action est definindo o local para onde sero enviados os dados do formulrio.
51
metidos para a classe SegurancaBean mostrado na Figura 22, quando o usurio clicar no boto
Acesse sua conta.
Essa classe responsvel por receber o pedido de autenticao e verificar se as credenciais do usurio so vlidas. Para realizar esse processo ela invoca o mtodo doLogin ()
dentro da classe SegurancaBean.
Caso no seja encontrado o usurio no banco de dados, o framework interrompe o fluxo de autenticao e redireciona o usurio para a pgina de usurio/senha incorreto. Se existir
um usurio com o j_username e j_password informado o usurio ter acesso ao sistema, ou
seja, a pgina index.xhtml dentro da pasta sistema. A Figura 23 mostra a pgina de login.
52
3.10 CDI
A CDI uma especificao Java, cujo nome completo Context and Depen- dency
Injection for Java EE (CORDEIRO, p. 1-208).
Para configurar o CDI necessrio copiar todos os arquivos weld-servlet.jar que foram baixados para a pasta do projeto, no caso foi copiado para sysprefeitura/lib/Weld_CDI. A
Figura 24 abaixo apresenta todos os arquivos Weld que foi adicionado no projeto.
53
54
Arquivo de configurao do Weld no Tomcat no arquivo Context.xml na Figura 26
55
56
nutos de inatividade (CORDEIRO, p. 1-208). A seguir a Figura 29 ilustrar esse funcionamento.
O escopo de sesso serve para armazenar informaes que devem estar em memria
durante toda a navegao do usurio na aplicao. Outros exemplos podem ser as permisses
do usurio, informaes de perfil de acesso, nome, hora do login, entre outras que possam ser
interessantes dependendo da aplicao (CORDEIRO, p. 1-208).
57
Anotao @Inject e @PostContruct
A anotao @Inject usada para marcar o local onde ser feita a injeo. Para solicitar
a injeo de uma dependncia basta utilizarmos a anotao @javax.inject.Inject. Dessa forma
a CDI procura em seu contexto uma classe candidata a suprir essa dependncia, e como por
padro toda classe dentro de um pacote CDI candidata a ser injetada, no precisamos fazer
nenhuma configurao nas classes (CORDEIRO, p. 1-208).
No cdigo abaixo Figura 30 est sendo apresentada a classe CadastroBean sem injeo, onde o mtodo salvar apresenta uma instancia da classe UsuarioDAO.
J no cdigo abaixo na Figura 31 est usando injeo, onde est injetando a classe
UsuarioDAO na classe CadastroBean pela anotao @Inject, observa-se que no mtodo salvar
no precisa mais instanciar a classe UsuarioDAO, como foi instanciado no cdigo acima.
58
A anotao @PostConstruct apresentada na Figura 32, usada para que nossos beans
saibam quando esto prontos ,com todas as dependncias satisfeitas, e assim possam fazer
algo.
Para
dar
continuidade
ao
desenvolvimento
do
sistema,
no
pacote
59
Na mesma possui uma coluna para a data do documento que criada atravs da tag
<p:columm headerText> que recebe o nome Data como o nome da coluna. A tag
<h:outputText value=#{d.data}> acessa a classe Documento no pacote syspefeitua.model.entidades e receber a data atual e em seguida na tag <f:convertDateTime> a data e
convertida e mostrada em dia, ms e ano. A Figura 35 abaixo mostra a criao da coluna Data
e na Figura 36 mostra o cdigo da classe Documento que responsvel por retorna a data.
As anotaes que contm @Temporal so tipos baseados em informaes armazenadas relativas ao tempo. O uso dessa anotao inclui um atributo chamado de TemporalType
com um valor enumerado. Esses valores so: DATE, TIME e TIMESTAMP para representar
os tipos de Java.sql (GONALVES, 2007). Nesse caso foi utilizado o valor DATE.
A tag <p:column> , mostrado na Figura 37 criar a coluna Assunto e receber o nome do
assunto do documento digitado pelo usurio que esto armazenados na tabela documentos.
60
Em seguida e criada mais uma coluna que recebe o nome de todas as secretarias que
receberam os documentos. A tag <h:outputText> tem um atributo value que recebe a classe
documentoBean que busca o mtodo secretariasNome, esse mtodo recebe o nome da secretaria para onde o documento foi enviado, caso for enviado pra mais de uma secretaria os nomes
das mesma ser separado por uma virgula, porm uma virgula era sempre inserida no final do
nome da ultima secretaria. Para resolver esse problema foi utilizado um return, que conta toda
a String e apaga dois caracteres do fim da String, e em seguida foi adicionado um ponto no
fim da String. Figura 38 criao da coluna destinatrio e Figura 39 seu mtodo.
Na coluna Documentos, para cada documento listado criado um boto <p: commandButton> que receber o valor baixar que chama a ao selecionarDocumento(d) na classe
documentoBean. A Figura 40 mostra a criao da coluna na tabela e na Figura 41 mostra o
cdigo correspondente ao mtodo selecionarDocumento(d).
61
Para que o usurio pudesse adicionar um nome para o documento que ele queira enviar
foi adiciona no formulrio um campo com o nome assunto que receber o nome digitado pelo
usurio. Em seguida foi criado um boto que Permite procurar um arquivo atravs do mtodo
62
arquivo (). Figura 44 tem o formulrio da pgina com a criao da coluna assunto e seu boto
procura arquivo.
Para que os arquivos fosse salvos no banco de dados foi criado o mtodo salvar(), da
classe documentoBean. A Figura 45 abaixo apresenta o cdigo no formulrio que aciona a
classe documentoBean e seu mtodo salvar, e na Figura 46 apresenta o mtodo que salva o
arquivo no banco, esse mtodo na hora que o usurio tenta enviar o arquivo ele faz uma comparao entre o arquivo escolhido pelo usurio com os tipos de arquivos que o sistema suporta, se o arquivo tiver extenso diferente de pdf, docx e doc o sistema mostrara uma mensagem
de No permitido esse tipo de arquivo, caso contrario o arquivo ser salvo com sucesso no
banco de dados e uma mensagem ser mostrada para o usurio de arquivo enviado com sucesso.
63
por
fim,
sistema
usar
classe
FacesUtils
presente
no
pacote
64
65
4. CONCLUSO
4.1 Consideraes Finais
Com o sistema desenvolvido por este trabalho, espera-se que o mesmo quando implantado na prefeitura municipal de Balsas-MA consiga realizar de forma mais rpida a comunicao feita por troca de documentos oficiais.
Essa soluo foi concebida com a realizao dos estudos e anlise feitos em diversos
frameworks, softwares e padres utilizados para a separao da aplicao, que possibilitou
para o projeto uma soluo vivel para o seu desenvolvimento.
As tecnologias baseadas na Web permitira aos usurios a oportunidade de enviar, armazenar e receber documentos oficiais de qualquer partio da estrutura interna da mesma
que esteja cadastrada no sistema, a partir de qualquer navegador Web.
O propsito deste trabalho foi apresentar as ferramentas utilizadas para o desenvolvimento do sistema proposto, bem com mostrar passo a passo o desenvolvimento do mesmo.
66
5 REFERNCIAS BIBLIOGRFICAS
BASHAM, B.; SIERRA K.; BATES B. Head first servlets & jsp, 2 Edition.
OREILLY.2008.
CORDEIRO, Gilliard. CDI Integre as dependncias e contextos do seu cdigo Java. Casa
do Cdigo, So Paulo, p. 1- 208.
FERREIRA, A. (Ed). Aurlio Jnior: portugus. Editora Positivo Ltda, 2005.
FILHO, W. Engenharia de Software fundamentos, mtodos e padres. LTC Livros Tcnicos e Cientficos Editora S.A., 2005.
FOX, C. Introduction to software engineering design: processes, principles, and patterns
with uml 2. 1 st ed. Boston: Pearson, 2006.
GONALVES, E. Desenvolvendo Aplicaes Web com JSP Servlets, JavaServer Faces,
Hibernate, EJB3 Persistence e Ajax. Editora Cincia Moderna Ltda., 2007.
GONALVES, E. Dominando NetBeans. Editora Cincia Moderna Ltda., 2006.
JAMACEDO 2013 Jamacedo. Disponvel em: http://jamacedo.com/2011/01/crud-jsf-2-parte3-seguna-com-spring-security-3/, Acessado em 04 de abril de 2013.
KITO, D. JAVASERVER FACES IN ACTION. Mann Foreword by Ed Burns: MANNING.
2005.
KURNIAWAN, B. Java para a Web com Servlet, JSP e EJB. Rio de Janeiro: Editora Cincia
Moderna Ltda., 2002.
NUNES, Vinny; MAGALHES, Eder. Aprendendo JSF 2.0 com ScrumToys. Java Magazine, Rio de Janeiro, p.22-36.
PEREIRA, Tiago. Spring Security 3, JSF 2 e JPA 2. Java Magazine, Rio de Janeiro, p. 5260.
PRIMO, Izalmo; SANTOS, Samuel. Desenvolvendo com Hibernate. Java Magazine, Fortaleza, p.46-57.
67
REZENDE, D. Engenharia de software e sistemas de informao. BRASPORT LIVROS E
Multimdia Ltda., 2005.
SANTOS, R. Java na Web. Axcel Books do Brasil Editora Ltda., 2007.
SOMMERVILLE, I. Engenharia de Software. Pearson Education do Brasil., 2005.
SOUSA, Marcos. Desenvolvendo com JavaServer Faces - Parte 1. Java Magazine, Rio de
Janeiro, p.8-18.
SOUSA, Marcos. Desenvolvendo com JavaServer Faces - Parte 2. Java Magazine, Rio de
Janeiro, p.14-26.
ZANINI, Michel. Spring Security. Java Magazine, Rio de Janeiro, p.28-38.
68
APNDICE A
DOCUMENTOS DE REQUISITOS
69
SUMRIO
70
1 IDENTIFICAO DOS REQUISITOS
1.1 Finalidade
Tem por finalidade descrever e especificar os requisitos que devem ser atendidos pelo
sistema de forma a atender as necessidades dos usurios, bem como definir o sistema a ser
feito, para o desenvolvedor do mesmo.
71
1.3 Diagrama de Caso de Uso
72
1. O caso de uso se inicia quando o administrado/usurio tem a necessidade de logar
no sistema.
2. O sistema exibir uma tela de login de usurios.
3. O administrado/usurio insere na tela exibida seu e-mail e senha.
4. O sistema verifica as informaes de login [FA001].
5. O sistema apresenta uma tela indicando que o usurio est logado no sistema
6. O caso de uso se encerra.
Fluxo Alternativo
[FA001] E-mail e/ou senha errados.
1. O sistema verifica se o e-mail e senha so validos.
2. O sistema exibe uma mensagem erro informando que o e-mail e/ou senha esto incorretos.
3. O caso de uso retorna ao passo 3 do fluxo principal.
Ator: Administrador.
Descrio do caso de uso: Este caso de uso permite que o administrado cadastre usurios no sistema.
Entradas: O administrador acessa o sistema com seu login e senha e insere nos campos o nome do usurio, senha, e-mail e o perfil para o usurio que ser cadastrado.
Pr-condies: Somente o administrador do sistema poder cadastrar usurios.
Processo: O cadastro ser includo no banco de dados.
Sada: Mensagem de confirmao bem sucedido do cadastro caso tenha sido efetuado
com sucesso, seno, mensagem de erro.
Ps-Condio: Usurio cadastrado.
Fluxo Principal
1. O caso de uso se inicia quando o administrador do sistema tem a necessidade de
efetuar o cadastro de usurio.
2. O administrador loga no sistema.
3. O administrador insere os dados dos usurios no sistema. [FA001]
4. O administrador confirma os dados do cadastro.
5. O caso de uso se encerra.
73
Fluxo Alternativo
[FA001] Usurio j cadastrado
1. O sistema verifica se o usurio j est cadastrado.
2. O sistema exibe uma mensagem de erro informando que o usurio inserido j existe.
3. O caso de uso retorna ao passo 3 do fluxo principal.
[RF003] Excluir Usurio
Ator: Administrador
Descrio do caso de uso: Este caso de uso permite que o administrador exclua usurios do sistema.
Entradas: O administrador acessa o sistema com seu login e senha e excluir o usurio
cadastrado.
Pr-condies: Somente o administrador do sistema poder excluir o usurio cadastrado.
Processo: O cadastro ser excludo no banco de dados.
Sada: Mensagem de confirmao bem sucedido da alterao do cadastro caso tenha
sido efetuado com sucesso, seno, mensagem de erro.
Ps-Condio: No h ps-condio.
Fluxo Principal
1. O caso de uso se inicia quando o administrador do sistema tem a necessidade de
excluir o usurio cadastrado.
2. O administrador loga no sistema.
3. O administrador escolher o do usurio que ser excludo.
4. O administrador excluir os dados do cadastro do usurio.
5. O caso de uso se encerra.
74
Processo: O cadastro ser includo no banco de dados.
Sada: Mensagem de confirmao bem sucedido do cadastro caso tenha sido efetuado
com sucesso, seno, mensagem de erro.
Ps-Condio: No h ps-condio.
Fluxo Principal
1. O caso de uso se inicia quando o administrador do sistema tem a necessidade de
efetuar o cadastro de uma secretaria.
2. O administrador logar no sistema.
3. O administrador insere o nome da secretaria no campo.
4. O administrador confirma o dado do cadastro.
5. O caso de uso se encerra.
Ator: Administrador
Descrio do caso de uso: Este caso de uso permite excluir secretarias cadastradas no
sistema.
Entradas: O administrador acessa o sistema com seu login e senha e excluir a secretaria cadastrada.
Pr-condies: Somente o administrador do sistema poder excluir a secretaria cadastrada.
Processo: O cadastro ser excludo no banco de dados.
Sada: Mensagem de confirmao bem sucedido da alterao do cadastro caso tenha
sido efetuado com sucesso, seno, mensagem de erro.
Ps-Condio: No h ps-condio.
Fluxo Principal
1. O caso de uso se inicia quando o administrador do sistema tem a necessidade de
excluir a secretaria cadastrada.
2. O administrador logar no sistema.
3. O administrador escolher a secretaria que ser excluda.
4. O administrador excluir a secretaria cadastrada.
5. O caso de uso se encerra.
75
Ator: Usurio.
Descrio do caso de uso: Este caso de uso permite enviar documentos para setores
da estrutura interna da mesma.
Entradas: Deve receber como entrada o nome do setor para onde ser enviado o documento, juntamente com o nome do assunto do que o documento se trata e o documento
anexado [RF007].
Pr-condies: O usurio deve t logado no sistema.
Sada: Mensagem de confirmao bem sucedido do envio do documento, caso tenha
sido efetuado com sucesso, seno, mensagem de erro.
Ps-Condio: No h ps-condio.
Fluxo Principal
1. O caso de uso se inicia quando o usurio tem a necessidade de enviar documentos
oficiais.
2. O sistema exibir uma tela contendo a opo documentos.
3. O usurio escolher a opo novo documento, o sistema redirecionara para uma tela de envio de documentos.
4. O usurio entrada o nome do setor para onde ser enviado o documento, juntamente com o nome do assunto do que se trata o documento.
5. O usurio anexar o documento para enviar [RF007].
6. O usurio confirma os dados e envia o documento.
7. O caso de uso se encerra.
Ator: Usurio.
Descrio do caso de uso: Este caso de uso permite anexar documentos oficiais para
que sejam enviados.
Entradas e pr-condies: Deve receber como entrada o caminho absoluto para anexar um documento no sistema.
Sadas e ps-condio: Documento anexado.
Fluxo Principal
76
1. O caso de uso se inicia quando o usurio precisa anexar um documento.
2. O sistema exibe na tela a opo para anexar documentos.
3. O usurio escolhe o documento que ser anexado.
4. O caso de uso se encerra.
Ator: Usurio.
Descrio do caso de uso: Este caso de uso permite que usurios recebam documentos oficiais que foram enviados dos setores da estrutura interna da mesma.
Pr-condies: Documentos enviados.
Ps-condio: Documentos recebidos.
Fluxo Principal
1. O caso de uso se inicia quando o usurio envia um documento para uma dos setores cadastrados [RF006].
2. O sistema exibe na tela os documentos recebidos.
3. O usurio poder baixar ou excluir os documentos [RF009], [RF010].
4. O caso de uso se encerra.
Ator: Usurio.
Descrio do caso de uso: Este caso de uso permite que usurios faa download dos
documentos oficiais que foram recebidos dos setores da estrutura interna da mesma.
Pr-condies: Documentos enviados.
Ps-condio: Documentos recebidos.
Sada: Download realizado com sucesso.
Fluxo Principal
1. O caso de uso se inicia quando o usurio deseja fazer download do documento
oficial.
2. O usurio escolher o documento.
3. O usurio faz o download do documento.
4. O caso de uso se encerra.
77
Ator: Usurio.
Descrio do caso de uso: Este caso de uso permite que usurios excluam documentos oficiais que foram recebidos dos setores da estrutura interna da mesma.
Pr-condies: Documentos enviados.
Ps-condio: Documentos recebidos.
Sada: Documento excludo com sucesso.
Fluxo Principal
1. O caso de uso se inicia quando o usurio deseja exclui um documento oficial.
2. O usurio escolher o documento.
3. O usurio excluir o documento.
4. O caso de uso se encerra.
Ator: Usurio.
Descrio do caso de uso: Este caso de uso permite que o usurio liste todos os documentos oficiais que foram recebidos dos setores da estrutura interna da mesma.
Pr-condies: Documentos enviados.
Ps-condio: Documentos recebidos.
Sada: Documentos listados.
Fluxo Principal
1. O caso de uso se inicia quando o usurio deseja listar os documentos oficiais.
2. O usurio escolher em documento a opo lista.
3. O sistema listar os documentos e mostrar na tela.
4. O caso de uso se encerra.
Ator: Administrador.
78
Descrio do caso de uso: Este caso de uso permite que o administrador do sistema
liste todos os usurios cadastrados no mesmo.
Pr-condies: No h ps-condio.
Ps-condio: No h ps-condio.
Sada: Usurios listados.
Fluxo Principal
1. O caso de uso se inicia quando o administrador do sistema deseja listar todos os
usuarios cadastrados no mesmo.
2. O administrado escolher em usurio a opo lista.
3. O sistema listar os usurios e mostrar na tela.
4. O caso de uso se encerra.
Ator: Administrador.
Descrio do caso de uso: Este caso de uso permite que o administrador do sistema
liste todas as secretarias cadastradas no mesmo.
Pr-condies: No h ps-condio.
Ps-condio: No h ps-condio.
Sada: Secretarias listadas.
Fluxo Principal
1. O caso de uso se inicia quando o administrador do sistema deseja listar todas as
secretarias cadastradas no mesmo.
2. O administrado escolher em secretaria a opo lista.
3. O sistema listar as secretarias e mostrar na tela.
4. O caso de uso se encerra.
79
1.5 Identificao das Entidades e Atributos do Sistema
1.6 Identificao das Classes DAO e seus mtodos para acesso ao Banco de Dados
80