SlideShare uma empresa Scribd logo
1 de 33
WebSiViU
Sumário
1. Introdução
2. Meus Objetivos no Projeto
3. Especificação dos requisitos
4. Arquitetura MVC
5. JSF (Java Server Faces)
6. Hibernate
7. RichFaces
8. Modificações do antigo projeto
9. Dúvidas e conflitos
Introdução
• Web + SiViU (Sistema de Informação sobre
Violência Urbana), ou seja, o SiViU na Web;
• É um SIG (Sistema de Informação Geográfica)
que tem como objetivo realizar a coleta, o
estudo e a análise de dados relativas às
mortes violentas ocorridas em municípios de
médio porte;
Meus objetivos no Projeto
• Permitir o acesso e cadastros de Boletins de
Ocorrência em uma plataforma Web usando
aplicações RIA, garantindo desempenho e
portabilidade;
• Utilizar um framework para fazer o Mapeamento
Objeto-Relacional do banco de dados, de forma a
melhorar a manutenibilidade e aumentar a
portabilidade da aplicação;
• Garantir a segurança das informações disponibilizadas,
utilizando criptografia e conceitos de segurança na
Web;
Especificação dos requisitos (O que o
sistema deve ser capaz de fazer?):
• Disponibilizar um local comum para cadastros de Boletins de
Ocorrência;
• Disponibilizar um local para consultar pessoas, fatos e Boletins de
Ocorrência;
• Disponibilizar um local para remover os dados (pessoas, fatos,
Boletins de Ocorrência);
• Disponibilizar um local para cadastrar, consultar e alterar usuários;
• Disponibilizar um local para gerenciar os usuários já cadastrados;
• Registrar os processos de utilização do sistema (log);
• Controle de autenticação do usuário, verifica o que o
usuário pode ou não fazer;
• Possibilitar alteração dos dados, para alguns usuários;
• Compartilhar os dados cadastrados entre os usuários,
visando reutilização dos dados;
• Possibilitar que cadastro do usuário seja aprovado;
O que vai ficar faltando?
• Disponibilizar a visualização estatística
(tabelas, gráficos, entre outros);
• A visualização do Mapa do Crime;
• Arquitetura Orientada a Serviços;
Arquitetura MVC
JSF (Java Server Faces)
• MVC para aplicações Web;
• se tornou um padrão;
• "fácil" de usar;
• componentes extensíveis;
• boa demanda do mecado e
conseqüentemente dos desenvolvedores;
• código aberto
O que tenho que saber para começar a
discutir e implementar?
• Orientação a Objetos e Java básico;
• Regras de navegação;
• Beans;
Regras de Navegação
• é o mecanismo que permite unir algum tipo de processamento
com seqüência de páginas a serem mostradas;
• quando um botão ao um link é clicado, o componente
associado gera um ActionEvent que é lançado para os seus
listeners;
•o receptor desse evento é o que chamamos de Backbean (Bean
comum), um action method nessa classe vai ser executada e o
resultado disso vai ser uma String que deve se encaixar na regra
de navegação;
Exemplo
<navigation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>sucesso</from-outcome>
<to-view-id>/main.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>falha</from-outcome>
<to-view-id>/erro.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
O que é um Bean?
• são classes simples, não herdão de ninguém nem são
obrigados a implementar nenhuma interface;
• possuem nossos famosos getter e setters;
• “armazenarão” os dados que serão mostrados no
browser;
Exemplo
package beans;
public class exemploBean {
private String usuario;
public void setUsuario (String usuario) {
this.usuario = usuario;
}
public String getUsuario() {
return usuario;
}
//pode ter outros métodos
}
Beans no arquivo de configuração
<managed-bean>
<managed-bean-name>b</managed-bean-name>
<managed-bean-class>beans.exemploBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Um exemplo mais completo
• em nossa index.jsp temos:
<h:inputText value = "#{b.usuario}“/>
<h:commandButton value=“OK” action="#{b.ok}“/>
• e tivessemos um método chamado “ok” na nossa classe exemploBean:
public String ok() { //sem argumentos e String
if (usuario.equals(“João Sávio”)
return “sucesso”;
else
return “falha”;
}
Outras considerações
• em aplicações MVC costuma-se separar os
beans (model) dos ManagedBeans
(controller);
• no exemplo anterior aquele “método ok” seria
um ManagedBean e usaríamos um objeto de
referência para “exemploBean”;
Utilização correta de beans no MVC
package controller.managedBeans;
//imports
public class exemploManagedBean{
private ExemploBean exBean;
public exemploManagedBean() {
exBean = new ExemploBean(); //não esquecer de instanciar
}
public String ok() {
if (usuario.equals(“João Sávio”)
return “sucesso”;
else
return “falha”;
}
//respectivos sets e gets de ExemploBean
}
Estrutura de uma aplicação JSF
Hibernate – framework de
mapeamento objeto-relacional
• o mapeamento objeto-relacional refere-se à técnica
de mapear os registro do banco de dados em objetos
e persistir as informações contidas nos objetos em
forma de linhas e colunas;
• assim, pode-se manipular objetos (inserir, atualizar,
consultar, remover), evitando ter que fazer queries
gigantes;
Vantagens
• aumento da portabilidade da aplicação;
• melhoria na manutenibilidade de código;
• redução no tamanho de código médio;
• o trabalho do desenvolvedor se torna
facilitado e reduzido;
Hibernate no WebSiViU
public class DAOFactory {
protected final Session session;
private Transaction transaction;
public DAOFactory() { session = HibernateUtil.getSession(); } //construtor
public Session getSession() {...}
public void beginTransaction() {...}
public void commit() {...}
public boolean hasTransaction() {...}
public void rollback() {...}
public void clear() {...}
public void close() {...}
O DAO Genérico
public class GenericDAO<T> extends DAOFactory {
private final Class classe;
public GenericDAO(Class classe) {this.classe = classe;}
public void adiciona(T u) {...}
public void remove(T u) {...}
public void atualiza(T u) {...}
public List<T> listaTudo() {...}
public List<T> lista(int inicio, int tam) {...}
public T buscaId(int id) {...}
DAOs implementados
• UsuarioDAO;
• LoginDAO;
• PessoaDAO;
• FatoDAO;
• EnvolvimentoDAO;
Vantagens dessa abordagem
• extrema facilidade de expansão do sistema;
• se tivéssemos que implementar uma nova
classe por exemplo, se nossa aplicação
também fosse manipular dados de escolas,
teríamos uma classe chamada “EscolaDAO”,
que controlaria a inserção, atualização,
consulta e remoção de uma classe bean
EscolaVO:
public class EscolaDAO extends GenericDAO<EscolaVO> {
public EscolaDAO() {
super(EscolaVO.class);
}
...//métodos herdados + outros definidos pelo programador
}
• pronto, agora podemos fazer uma inserção no banco de dados
apenas fazendo isso:
EscolaDAO escolaDAO = new EscolaDAO();
escolaDAO.adiciona(escolaVO);
//supondo que já temos um objeto escolaVO
Outras considerações
• menor código fonte à custa de uma
complexidade maior;
• utilização de herança, classes genéricas e
conjuntos;
RichFaces
• é uma biblioteca de componentes ricas para o JSF;
• padrões W3C;
• um avançado framework para integrar facilmente as
capacidade do AJAX no desenvolvimento de aplicações
comerciais;
• riqueza;
• rapidez;
Outras considerações
• sintaxe muito parecida com as tags JSF;
• fácil de aprender;
• open source;
Arquitetura RIA
Modificações do antigo projeto
• três tipos de usuários: user, superUser e
admin;
• controle de sessão;
• cadastro de usuários;
Dúvidas e conflitos
• valores null geram problemas na consulta do
hibernate;
• Dúvidas em relação ao banco de dados;
WebSiviu - Sistema de Informação sobre Violência Urbana.

Mais conteúdo relacionado

Semelhante a WebSiviu - Sistema de Informação sobre Violência Urbana.

Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
Eduardo Mendes
 
Minicurso Java Server Faces
Minicurso Java Server FacesMinicurso Java Server Faces
Minicurso Java Server Faces
João Longo
 
[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2
Felipe Pimentel
 

Semelhante a WebSiviu - Sistema de Informação sobre Violência Urbana. (20)

Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Minicurso Java Server Faces
Minicurso Java Server FacesMinicurso Java Server Faces
Minicurso Java Server Faces
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview
 
Jsf
JsfJsf
Jsf
 
Spring MVC - QConSP
Spring MVC - QConSPSpring MVC - QConSP
Spring MVC - QConSP
 
[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Workshop05
Workshop05Workshop05
Workshop05
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Manual Pentaho 3.5
Manual Pentaho 3.5Manual Pentaho 3.5
Manual Pentaho 3.5
 
GUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EEGUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EE
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JS
 

Mais de Gabriel Mariano

Mais de Gabriel Mariano (7)

Apresentação e-Gov Governança Eletrônica
Apresentação e-Gov Governança EletrônicaApresentação e-Gov Governança Eletrônica
Apresentação e-Gov Governança Eletrônica
 
10 questões sobre mídias sociais
10 questões sobre mídias sociais10 questões sobre mídias sociais
10 questões sobre mídias sociais
 
Google dicas de pesquisa
Google   dicas de pesquisaGoogle   dicas de pesquisa
Google dicas de pesquisa
 
Dropbox - Conceitos gerais
Dropbox -  Conceitos geraisDropbox -  Conceitos gerais
Dropbox - Conceitos gerais
 
Redes sociais uma visão geral sobre o linked in
Redes sociais   uma visão geral sobre o linked inRedes sociais   uma visão geral sobre o linked in
Redes sociais uma visão geral sobre o linked in
 
Redes sociais Uma boa utilização do Facebook na vida pessoal e corporativa
Redes sociais   Uma boa utilização do Facebook na vida pessoal e corporativaRedes sociais   Uma boa utilização do Facebook na vida pessoal e corporativa
Redes sociais Uma boa utilização do Facebook na vida pessoal e corporativa
 
Rio Claro na internet
Rio Claro na internetRio Claro na internet
Rio Claro na internet
 

WebSiviu - Sistema de Informação sobre Violência Urbana.

  • 2. Sumário 1. Introdução 2. Meus Objetivos no Projeto 3. Especificação dos requisitos 4. Arquitetura MVC 5. JSF (Java Server Faces) 6. Hibernate 7. RichFaces 8. Modificações do antigo projeto 9. Dúvidas e conflitos
  • 3. Introdução • Web + SiViU (Sistema de Informação sobre Violência Urbana), ou seja, o SiViU na Web; • É um SIG (Sistema de Informação Geográfica) que tem como objetivo realizar a coleta, o estudo e a análise de dados relativas às mortes violentas ocorridas em municípios de médio porte;
  • 4. Meus objetivos no Projeto • Permitir o acesso e cadastros de Boletins de Ocorrência em uma plataforma Web usando aplicações RIA, garantindo desempenho e portabilidade; • Utilizar um framework para fazer o Mapeamento Objeto-Relacional do banco de dados, de forma a melhorar a manutenibilidade e aumentar a portabilidade da aplicação; • Garantir a segurança das informações disponibilizadas, utilizando criptografia e conceitos de segurança na Web;
  • 5. Especificação dos requisitos (O que o sistema deve ser capaz de fazer?): • Disponibilizar um local comum para cadastros de Boletins de Ocorrência; • Disponibilizar um local para consultar pessoas, fatos e Boletins de Ocorrência; • Disponibilizar um local para remover os dados (pessoas, fatos, Boletins de Ocorrência); • Disponibilizar um local para cadastrar, consultar e alterar usuários; • Disponibilizar um local para gerenciar os usuários já cadastrados;
  • 6. • Registrar os processos de utilização do sistema (log); • Controle de autenticação do usuário, verifica o que o usuário pode ou não fazer; • Possibilitar alteração dos dados, para alguns usuários; • Compartilhar os dados cadastrados entre os usuários, visando reutilização dos dados; • Possibilitar que cadastro do usuário seja aprovado;
  • 7. O que vai ficar faltando? • Disponibilizar a visualização estatística (tabelas, gráficos, entre outros); • A visualização do Mapa do Crime; • Arquitetura Orientada a Serviços;
  • 9. JSF (Java Server Faces) • MVC para aplicações Web; • se tornou um padrão; • "fácil" de usar; • componentes extensíveis; • boa demanda do mecado e conseqüentemente dos desenvolvedores; • código aberto
  • 10. O que tenho que saber para começar a discutir e implementar? • Orientação a Objetos e Java básico; • Regras de navegação; • Beans;
  • 11. Regras de Navegação • é o mecanismo que permite unir algum tipo de processamento com seqüência de páginas a serem mostradas; • quando um botão ao um link é clicado, o componente associado gera um ActionEvent que é lançado para os seus listeners; •o receptor desse evento é o que chamamos de Backbean (Bean comum), um action method nessa classe vai ser executada e o resultado disso vai ser uma String que deve se encaixar na regra de navegação;
  • 13. O que é um Bean? • são classes simples, não herdão de ninguém nem são obrigados a implementar nenhuma interface; • possuem nossos famosos getter e setters; • “armazenarão” os dados que serão mostrados no browser;
  • 14. Exemplo package beans; public class exemploBean { private String usuario; public void setUsuario (String usuario) { this.usuario = usuario; } public String getUsuario() { return usuario; } //pode ter outros métodos }
  • 15. Beans no arquivo de configuração <managed-bean> <managed-bean-name>b</managed-bean-name> <managed-bean-class>beans.exemploBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
  • 16. Um exemplo mais completo • em nossa index.jsp temos: <h:inputText value = "#{b.usuario}“/> <h:commandButton value=“OK” action="#{b.ok}“/> • e tivessemos um método chamado “ok” na nossa classe exemploBean: public String ok() { //sem argumentos e String if (usuario.equals(“João Sávio”) return “sucesso”; else return “falha”; }
  • 17. Outras considerações • em aplicações MVC costuma-se separar os beans (model) dos ManagedBeans (controller); • no exemplo anterior aquele “método ok” seria um ManagedBean e usaríamos um objeto de referência para “exemploBean”;
  • 18. Utilização correta de beans no MVC package controller.managedBeans; //imports public class exemploManagedBean{ private ExemploBean exBean; public exemploManagedBean() { exBean = new ExemploBean(); //não esquecer de instanciar } public String ok() { if (usuario.equals(“João Sávio”) return “sucesso”; else return “falha”; } //respectivos sets e gets de ExemploBean }
  • 19. Estrutura de uma aplicação JSF
  • 20. Hibernate – framework de mapeamento objeto-relacional • o mapeamento objeto-relacional refere-se à técnica de mapear os registro do banco de dados em objetos e persistir as informações contidas nos objetos em forma de linhas e colunas; • assim, pode-se manipular objetos (inserir, atualizar, consultar, remover), evitando ter que fazer queries gigantes;
  • 21. Vantagens • aumento da portabilidade da aplicação; • melhoria na manutenibilidade de código; • redução no tamanho de código médio; • o trabalho do desenvolvedor se torna facilitado e reduzido;
  • 22. Hibernate no WebSiViU public class DAOFactory { protected final Session session; private Transaction transaction; public DAOFactory() { session = HibernateUtil.getSession(); } //construtor public Session getSession() {...} public void beginTransaction() {...} public void commit() {...} public boolean hasTransaction() {...} public void rollback() {...} public void clear() {...} public void close() {...}
  • 23. O DAO Genérico public class GenericDAO<T> extends DAOFactory { private final Class classe; public GenericDAO(Class classe) {this.classe = classe;} public void adiciona(T u) {...} public void remove(T u) {...} public void atualiza(T u) {...} public List<T> listaTudo() {...} public List<T> lista(int inicio, int tam) {...} public T buscaId(int id) {...}
  • 24. DAOs implementados • UsuarioDAO; • LoginDAO; • PessoaDAO; • FatoDAO; • EnvolvimentoDAO;
  • 25. Vantagens dessa abordagem • extrema facilidade de expansão do sistema; • se tivéssemos que implementar uma nova classe por exemplo, se nossa aplicação também fosse manipular dados de escolas, teríamos uma classe chamada “EscolaDAO”, que controlaria a inserção, atualização, consulta e remoção de uma classe bean EscolaVO:
  • 26. public class EscolaDAO extends GenericDAO<EscolaVO> { public EscolaDAO() { super(EscolaVO.class); } ...//métodos herdados + outros definidos pelo programador } • pronto, agora podemos fazer uma inserção no banco de dados apenas fazendo isso: EscolaDAO escolaDAO = new EscolaDAO(); escolaDAO.adiciona(escolaVO); //supondo que já temos um objeto escolaVO
  • 27. Outras considerações • menor código fonte à custa de uma complexidade maior; • utilização de herança, classes genéricas e conjuntos;
  • 28. RichFaces • é uma biblioteca de componentes ricas para o JSF; • padrões W3C; • um avançado framework para integrar facilmente as capacidade do AJAX no desenvolvimento de aplicações comerciais; • riqueza; • rapidez;
  • 29. Outras considerações • sintaxe muito parecida com as tags JSF; • fácil de aprender; • open source;
  • 31. Modificações do antigo projeto • três tipos de usuários: user, superUser e admin; • controle de sessão; • cadastro de usuários;
  • 32. Dúvidas e conflitos • valores null geram problemas na consulta do hibernate; • Dúvidas em relação ao banco de dados;