PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

Tamanho: px
Começar a partir da página:

Download "PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO"

Transcrição

1 FACULDADE DE TECNOLOGIA SENAC GOIÁS PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO - MÓDULO V - GOIÂNIA - JUNHO 2015

2 ELABORAÇÃO Coordenador do Projeto: Natália Batuta Participantes Lusana Sousa Tatiane Rocha

3 SUMÁRIO 1. APRESENTAÇÃO INFORMAÇÕES GERAIS SOBRE AS TECNOLOGIAS JAVASERVER FACES HIBERNATE PRIMEFACES SRING SECURITY MAVEN APACHE TOMCAT DESCRIÇÃO DO PROCESSO DE DESENVOLVIMENTO INTRODUÇÃO VISÃO GERAL DA APLICAÇÃO DESENVOLVIMENTO DO APLICATIVO FINANCEIROWEB CONCLUSÃO SOBRE O DESENVOLVIMENTO DO APLICATIVO FINANCEIROWEB REFERÊNCIAS BIBLIOGRÁFICAS...41

4 1. APRESENTAÇÃO Este trabalho possui o objetivo de demonstrar o processo de desenvolvimento da aplicação FinanceiroWeb, desenvolvida no livro Programação Java para Web 01, onde os autores explicam a integração entre as tecnologias JavaServer Faces, Hibernate, Primefaces, Spring Security entre outras. 2. INFORMAÇÕES GERAIS SOBRE AS TECNOLOGIAS As informações a seguir servem de orientação às pessoas que desejam saber um pouco mais sobre as tecnologias utilizadas JavaServer Faces Java Server Faces (JSF) é uma tecnologia que incorpora características de um framework Model-viewcontroller (MVC) para WEB e de um modelo de interfaces gráficas baseado em eventos. Por basear-se no padrão de projeto MVC, uma de suas melhores vantagens é a clara separação entre a visualização e regras de negócio (modelo). A ideia do padrão MVC é dividir uma aplicação em três camadas: modelo, visualização e controle. O modelo é responsável por representar os objetos de negócio, manter o estado da aplicação e fornecer ao controlador o acesso aos dados. A visualização representa a interface com o usuário, sendo responsável por definir a forma como os dados serão apresentados e encaminhar as ações dos usuários para o controlador. Já a camada de controle é responsável por fazer a ligação entre o modelo e a visualização, além de interpretar as ações do usuário e as traduzir para uma operação sobre o modelo, onde são realizadas mudanças e, então, gerar uma visualização apropriada Hibernate O Hibernate é um framework para o mapeamento objeto-relacional escrito na linguagem Java. Este framework facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso de arquivos (XML) ou anotações Java. O objetivo do Hibernate é diminuir a complexidade entre os programas Java, baseado no modelo orientado a objeto, que precisam trabalhar com um banco de dados do modelo relacional (presente na maioria dos SGBDs). Em especial, no desenvolvimento de consultas e atualizações dos dados. Sua principal característica é a transformação das classes em Java para tabelas de dados (e dos tipos de dados Java para os da SQL). O Hibernate gera as chamadas SQL e libera o desenvolvedor do trabalho manual da conversão dos dados resultante, mantendo o programa portável para quaisquer bancos de dados SQL, porém causando um pequeno aumento no tempo de execução. 1/2015 1

5 2.3 PrimeFaces O PrimeFaces é uma das várias bibliotecas de componentes disponíveis para construção de sistemas web. Ele oferece vários conjuntos de componentes, com versões estáveis e referências de uso. O PrimeFaces é uma tecnologia para construção de interfaces a sua biblioteca é composta por cerca de 90 componentes de interface web personalizados e de código aberto que implementam as tecnologias de AJAX, gráficos animados e JavaScript. A utilização de PrimeFaces fornece uma gama de possibilidades para a criação de layout de aplicações web e temas gráficos. O PrimeFaces permite que sejam adicionados componentes ao conjunto mínimo por meio de uma especificação Java Server Faces (JSF). Ele está organizado em três módulos: UI Componentes, Optimus e Faces Trace. Facilita o desenvolvimento de interfaces ricas em recursos, leves e intuitivas, outro ponto a ressaltar é uma menor demanda de tempo para atingir um estágio maduro no desenvolvimento de uma aplicação web que outras combinações de tecnologias. 2.4 Spring Security Spring Security é um framework para Java ou JavaEE que provê autenticação, autorização e diversas outras funcionalidades para aplicações corporativas. Iniciado em 2003 por Ben Alex o Spring Security é distribuído sob a licença Apache Licence. Ele oferece diversos recursos que permitem muitas práticas comuns de segurança serem declaradas ou configuradas de uma forma direta. O Spring Security foi criado com o intuito de preencher uma grande lacuna que existia nas bibliotecas de segurança do Java. As bibliotecas para segurança mais conhecidas para Java, tais como Java Authentication and Authorization Service (JAAS) ou Java EE Security, são excelentes bibliotecas que oferecem funções de autorização e autenticação. No entanto, Spring Security empacota tudo numa única solução. Além disso, o Spring Security pode ser integrado com diferentes soluções corporativas. O Spring Security previne tipos de ataques comuns que manipulam ou roubam sessões do usuário, Aplica regras de autorização à todos os níveis da arquitetura da aplicação, Atribui níveis de autorização à papéis de usuário, Segmenta os usuários do sistema em classes de usuário, Aplica regras de autenticação globais para recursos de aplicação Maven Maven é uma ferramenta de automação de compilação utilizada primariamente em projetos Java. Também é utilizada para construir e gerenciar projetos escritos em C#, Ruby, Scala e outras linguagens. O projeto Maven é hospedado pela Apache Software Foundation. O Maven utiliza um arquivo XML (POM) para descrever o projeto de software sendo construídas, suas dependências sobre módulos e componentes externos, a ordem de compilação, diretórios e plug-ins necessários. Ele vem com objetivos pré-definidos para realizar certas tarefas bem definidas como compilação de código e seu empacotamento. 1/2015 2

6 Ele baixa bibliotecas Java e seus plug-ins dinamicamente de um ou mais repositórios e armazena-os em uma área de cache local. Este cache local de artefatos baixados pode também ser atualizado com artefatos criados por projetos locais. O Maven é construído utilizando uma arquitetura baseada em plugin, que permite que ele faça uso de qualquer aplicação controlável através da entrada padrão. Teoricamente, isto permitiria qualquer um escrever plugins para fazer interface com ferramentas de construção (compiladores, ferramentas de teste de unidade, etc.) para qualquer outra linguagem. De fato, o suporte e uso para linguagens diferentes de Java tem sido mínimas Apache Tomcat O Apache Tomcat é um software desenvolvido pela Fundação Apache, permite a execução de aplicações para web. Sua principal característica técnica é estar centrada na linguagem de programação Java, mais especificamente nas tecnologias de Servlets e de Java Server Pages (JSP). O Tomcat está escrito em Java e, por isso, necessita que a versão Java 2 Standard Edition (J2SE) esteja instalada no mesmo computador onde ele será executado. No entanto, não basta ter a versão runtime de Java instalada, pois o Tomcat necessita compilar (e não apenas executar) programas escritos em Java. O projeto Jakarta da Fundação Apache, do qual o subprojeto Tomcat é o representante mais ilustre, tem como objetivo o desenvolvimento de soluções código aberto baseadas na plataforma Java. O Tomcat pode ser usado isoladamente, assumindo o papel de um servidor web, ou em conjunto com outro servidor (como o Apache). Neste caso, o Apache atende a requisições de páginas estáticas enquanto que o Tomcat atende a requisições de páginas dinâmicas.o desenvolvimento de uma típica aplicação web a ser executada pelo Tomcat implica no domínio das seguintes linguagens Java, Html e Xml. 3. Descrição do processo de desenvolvimento Introdução Nesta sessão iremos descrever o processo de desenvolvimento do FinanceiroWeb, usando o Ambiente de Desenvolvimento Integrado Eclipse em um projeto do tipo Maven Visão geral da aplicação A aplicação, em sua versão final, tem por objetivo o cadastro de usuários, de contas e categorias. Somente os usuários que tem permissões a mais, como por exemplo, o usuário administrador ou o usuário vip, podem fazer alterações nas informações dos usuários já cadastrados ou excluí-los. 1/2015 3

7 Ao se cadastrar, o novo usuário deverá, obrigatoriamente, informar uma conta e o valor contido nela. Após isso, poderá fazer no login no sistema, e, se desejar, fazer alterações em suas contas. As categorias são criadas por padrão no momento do cadastro, mas também podem sofrer alterações. Tecnologias como o Hibernate, Spring Security, Primefaces foram utilizadas para o desenvolvimento desse projeto. Também foi utilizado o CSS para estilizar as páginas Desenvolvimento do aplicativo FinanceiroWeb Para começar o desenvolvimento da aplicação, baseada no livro Programação Java Web, criaremos um Maven Project na IDE Eclipse. Siga os passos a seguir. Figura 01: Maven Project Figura 02: Maven Project configurações 1/2015 4

8 Definiremos br.com.financeiro como GroupId, FinanceiroWeb como ArtifactId e war como tipo de Packaging, conforme a figura 03. Figura 03: Maven Project configurações Agora, vamos configurar o arquivo pom.xml para adicionar suporte a caracteres UTF-8, e suporte a versão 3.0 do plugin maven. Figura 04: Arquivo pom.xml 1/2015 5

9 Figura 01: Listagem pom.xml 01. <project xmlns=" 02. xmlns:xsi=" 03. xsi:schemalocation=" <modelversion>4.0.0</modelversion> 06. <groupid>br.com.financeiro</groupid> 07. <artifactid>financeiroweb</artifactid> 08. <version>0.0.1-snapshot</version> 09. <packaging>war</packaging> 10. <properties> 11. <project.build.sourceencoding> 12. UTF </project.build.sourceencoding> 14. </properties> 15. <build> 16. <plugins> 17. <plugin> 18. <artifactid>maven-compiler-plugin</artifactid> 19. <version>3.0</version> 20. <configuration> 21. <source>1.8</source> 22. <target>1.8</target> 23. </configuration> 24. </plugin> 25. </plugins> 26. </build> Após salvar o projeto, um erro aparecerá. Para resolvê-lo, faça o seguinte. Figura 05: Update Project 1/2015 6

10 Após selecionar Update Project, marque a opção Force Update of Snapshots/Releases. E clique em ok. Figura 06: Update Maven Project Agora configuraremos o suporte ao JSF, para isso, vá em Properties. Figura 07: Properties 1/2015 7

11 Na opção Project Facets, marque a opção JavaServerFaces. Após isso aparecerá o seguinte aviso Further configuration available... clique nele e configure dessa forma. Figura 08: Project Facets Figura 09: JSF Capabilities 1/2015 8

12 Agora, no arquivo web.xml faremos algumas alterações. Figura 10: web.xml Mudaremos a versão do descritor de 2.5 para 3.0 Listagem 02: web.xml 01. <?xml version="1.0" encoding="utf-8"?> 02. <web-app xmlns:xsi=" 03. xmlns=" 04. xsi:schemalocation=" version="3.0"> 07. <display-name>financeiroweb</display-name> 08. <servlet> 09. <servlet-name>faces Servlet</servlet-name> 10. <servlet-class>javax.faces.webapp.facesservlet</servlet-class> 11. <load-on-startup>1</load-on-startup> 12. </servlet> 13. <servlet-mapping> 14. <servlet-name>faces Servlet</servlet-name> 15. <url-pattern>*.xhtml</url-pattern> 16. </servlet-mapping> Após isso adicione, no arquivo pom.xml, suporte ao JSF, ao hibernate-core, hibernate-entity, e ao driver do PostreSQL, conforme a listagem 03. 1/2015 9

13 Listagem 03: Arquivo pom.xml 01. <dependencies> 02. <dependency> 03. <groupid>com.sun.faces</groupid> 04. <artifactid>jsf-api</artifactid> 05. <version>2.2.10</version> 06. </dependency> <dependency> 09. <groupid>com.sun.faces</groupid> 10. <artifactid>jsf-impl</artifactid> 11. <version>2.2.10</version> 12. </dependency> <dependency> 15. <groupid>org.hibernate</groupid> 16. <artifactid>hibernate-core</artifactid> 17. <version>4.3.8.final</version> 18. </dependency> <dependency> 21. <groupid>org.hibernate</groupid> 22. <artifactid>hibernate-entitymanager</artifactid> 23. <version>4.3.8.final</version> 24. </dependency> <dependency> 27. <groupid>postgresql</groupid> 28. <artifactid>postgresql</artifactid> 29. <version> jdbc4</version> 30. </dependency> Também utilizaremos outros JARs propostos pelo livro, para isso, adicione outras dependências no pom.xml. Colocaremos suporte ao JSTL e aos arquivos Apache Commons, DOM4J, etc. 1/

14 Listagem 04: pom.xml 01. <dependency> 02. <groupid>commons-collections</groupid> 03. <artifactid>commons-collections</artifactid> 04. <version>3.2.1</version> 05. </dependency> 06. <dependency> 07. <groupid>javax.servlet</groupid> 08. <artifactid>jstl</artifactid> 09. <version>1.2</version> 10. </dependency> 11. <dependency> 12. <groupid>commons-digester</groupid> 13. <artifactid>commons-digester</artifactid> 14 <version>2.1</version> 15. </dependency> 16. <dependency> 17. <groupid>commons-logging</groupid> 18. <artifactid>commons-logging</artifactid> 19. <version>1.2</version> 20. </dependency> 21. <dependency> 22. <groupid>commons-beanutils</groupid> 23. <artifactid>commons-beanutils</artifactid> 24. <version>1.9.2</version> 25. </dependency> 26. <dependency> 27. <groupid>javax.servlet</groupid> 28. <artifactid>servlet-api</artifactid> 29. <version>2.5</version> 30. </dependency> 31. <dependency> 32. <groupid>antlr</groupid> 33. <artifactid>antlr</artifactid> 34. <version>2.7.7</version> 35. </dependency> 36. <dependency> 37. <groupid>dom4j</groupid> 38. <artifactid>dom4j</artifactid> 39. <version>1.6.1</version> 40. </dependency> 41. <dependency> 42. <groupid>org.javassist</groupid> 43. <artifactid>javassist</artifactid> 44. <version> ga</version> 45. </dependency> 1/

15 46. <dependency> 47. <groupid>javax.transaction</groupid> 48. <artifactid>jta</artifactid> 49. <version>1.1</version> 50. </dependency> 51. <dependency> 52. <groupid>org.slf4j</groupid> 53. <artifactid>slf4j-api</artifactid> 54. <version>1.7.10</version> 55. </dependency> 56. <dependency> 57. <groupid>org.slf4j</groupid> 58. <artifactid>slf4j-simple</artifactid> 59. <version>1.7.10</version> 60. </dependency> Agora criaremos os nossos pacotes, para isso, faça conforme as figuras 11 e 12. Figura 11: Pacotes Figura 12: Criação de pacotes 1/

16 Repita o mesmo processo para os seguintes pacotes: br.com.financeiro.usuario br.com.financeiro.web Criaremos agora as classes Exception padrão para o sistema. Elas têm por objetivo padronizar a exceção que será lançada pelas camadas de acesso a dados e regra de negócio. Essas classes ficarão no pacote br.com.financeiro.util. Para criar as classes siga as figuras 13 e 14. Figura 13: Criação da classe. Figura 14: Criação da classe 1/

17 A classe ficará de acordo com a listagem a seguir. Listagem 05: Classe DAOException 01. public class DAOException extends Exception { private static final long serialversionuid = L; public DAOException() { 06. // TODO Auto-generated constructor stub 07. } public DAOException(String message) { 10. super(message); 11. // TODO Auto-generated constructor stub 12. } public DAOException(Throwable cause) { 15. super(cause); 16. // TODO Auto-generated constructor stub 17. } public DAOException(String message, Throwable cause) { 20. super(message, cause); 21. // TODO Auto-generated constructor stub 22. } public DAOException(String message, Throwable cause, 24. boolean enablesuppression, boolean writablestacktrace) { 25. super(message, cause, enablesuppression, writablestacktrace); 26. // TODO Auto-generated constructor stub 27. } } Repita o mesmo processo para as classes RNException e UtilException. Para fazer a ponte entre o arquivo de configuração e a conexão com o banco, crie a classe HibernateUtil dentro do pacote br.com.financeiro.util. Deixe-a conforme a listagem a seguir. Listagem 06: Classe HibernateUtil 01. package br.com.financeiro.util; import org.hibernate.sessionfactory; 04. import org.hibernate.cfg.configuration; public class HibernateUtil { private static final SessionFactory sessionfactory = buildsessionfactory(); ("deprecation" 10. private static SessionFactory buildsessionfactory() { 11. try { 12. Configuration cfg = new Configuration(); 13. cfg.configure("hibernate.cfg.xml"); 14. return cfg.buildsessionfactory(); 1/

18 15. }catch (Throwable e) { 16. System.out.println("Criacao inicial do objeto SessionFactory 17. falhou. Erro: " +e); 18. throw new ExceptionInInitializerError(e); 19. } 20. } public static SessionFactory getsessionfactory() { 23. return sessionfactory; 24. } } Criaremos o banco de dados. Para isso vamos utilizar o PostgreSLQ. 01. CREATE DATABASE bd_financeiro; Listagem 07: Criação do banco Agora, criaremos a classe Usuario, no pacote br.com.financeiro.usuario. Essa classe será uma representação fiel da tabela usuário que criaremos no banco de dados. Essa classe também será utilizada como classe entidade do Hibernate e propriedade da classe UsuarioBean. Crie a classe normalmente e declare as seguinte propriedades. Listagem 08: Classe Usuario 02. public class Usuario implements Serializable { private static final long serialversionuid = L; 07. private Integer codigo; 08. private String nome; 09. private String ; 11. private String login; 12. private String senha; 13. private Date nascimento; 14. private String celular; 15. private String idioma; 16. private boolean ativo; A é obrigatória e indica a tabela correspondente ao banco. Também indicaremos o campo chave e auto numerado na tabela por meio das A define a propriedade login como um índice único. Não se esqueça de gerar os gets e sets, além do HashCode e equals. 1/

19 Criaremos a tabela correspondente a essa classe no banco de dados. Execute a SQL a seguir no PostgreSQL. Listagem 09: Criação da tabela usuario 1. CREATE TABLE usuario ( 2. codigo SERIAL, 3. nome VARCHAR(50) NOT NULL, 4. login VARCHAR(15) UNIQUE NOT NULL, 5. VARCHAR(100) NOT NULL, 6. senha VARCHAR(10) NOT NULL, 7. nascimento DATE NOT NULL, 8. celular VARCHAR(25), 9. idioma VARCHAR(5) NOT NULL, 10. ativo BOOLEAN NOT NULL, 11. PRIMARY KEY (codigo) 12. ); Agora criaremos a interfaces UsuarioDAO, ela conterá apenas as assinaturas de todos os métodos referentes ás operações em banco de dados que queremos fazer para o usuário. Ela ficará no pacote br.com.financeito.usuario. Deixe-a conforme a listagem abaixo: Listagem 10: Interface UsuarioDAO 01. package br.com.financeiro.usuario; import java.util.list; public interface UsuarioDAO { public void salvar(usuario usuario); public void atualizar(usuario usuario); public void excluir(usuario usuario); public Usuario carregar(integer codigo); public Usuario buscarporlogin(string login); public List<Usuario> listar(); } 1/

20 Também criaremos a classe UsuarioDAOHibernate, também no pacote br.com.financeiro.usuario. Essa classe implementará a interfaces UsuarioDAO. Não esqueça de selecionar a opção Inherited abstract methods. Figura 15: New Java Class Deixe-a conforme a listagem a seguir: 1/

21 Listagem 11: Classe UsuarioDAOHibernate 01. package br.com.financeiro.usuario; 02. import java.util.list; 03. import org.hibernate.query; 04. import org.hibernate.session; 05. public class UsuarioDAOHibernate implements UsuarioDAO{ 06. private Session session; 07. public void setsession(session session) { 08. this.session = session; 09. } 11. public void salvar(usuario usuario) { 12. this.session.save(usuario); 13. } 15. public void atualizar(usuario usuario) { 16. this.session.update(usuario); 17. } 20. public void excluir(usuario usuario) { 21. this.session.delete(usuario); 22. } 1/

22 24. public Usuario carregar(integer codigo) { 25. return (Usuario) this.session.get(usuario.class, codigo); 26. } public Usuario buscarporlogin(string login) { 30. String hql = "SELECT u FROM Usuario u WHERE u.login = :login"; 31. Query consulta = this.session.createquery(hql); 32. consulta.setstring("login", login); 33. return (Usuario) consulta.uniqueresult(); } public List<Usuario> listar() { 41. return this.session.createcriteria(usuario.class).list(); } } Pelo padrão setsession será injetada a Session do Hibernate na classe UsuarioDAOHibernate. No método salvar realizamos o INSERT no banco de dados, cadastrando um novo usuário. No método realizamos o UPDATE do usuario no banco de dados, para modificar as informações do usuario. No método excluir realizamos o DELETE do usuario no banco de dados, para excluir um usuario. No método carregar realizamos um SELECT no banco de dados para carregar todos os dados de usuario recebidos no parâmetro. No método listar, consultamos todos os usuários do banco. No método buscarporlogin, realizamos uma consulta usando HQL(Hibernate Query Language), retornando apenas um usuario, já que o login é um índice único. Criaremos agora a classe DAOFactory. Ela vais ser o Construtor de DAOs. Essa classe deve estar no pacote br.com.financeiro.util. Deixe com a seguinte estrutura. Listagem 12: Classe DAOFactory 01. public class DAOFactory { public static UsuarioDAO criarusuariodao() { 04. UsuarioDAOHibernate usuariodao = new UsuarioDAOHibernate(); 05. usuariodao.setsession(hibernateutil.getsessionfactory() 06..getCurrentSession()); 07. return usuariodao; 08. } 1/

23 Agora, criaremos a classe ConexaoHibernateFilter, que implementará a técnica Open Session in View. Essa técnica define que a sessão do Hibernate será aberta no inicio do processamento da requisição e finalizada no final do processamento. Para isso, precisaremos interceptar toda requisição que chegar ao servidor. Isso será possível utilizando os Filters do JavaEE, disponíveis por meio da interfaces javax.servlet.filter. Precisaremos criar um novo pacote chamado br.com.financeiro.filter. Dentro dele criaremos a classe ConexaoHibernateFilter. Ele deve seguir o seguinte modelo. Listagem 13: Classe ConexaoHibernateFilter 01. public class ConexaoHibernateFilter implements Filter { 02. private SessionFactory sf; 03. public void init(filterconfig config) throws ServletException { 04. this.sf = HibernateUtil.getSessionFactory(); 05. } 06. public void dofilter(servletrequest request, 07. ServletResponse response, FilterChain chain) 08. throws IOException, ServletException { 09. try { 10. this.sf.getcurrentsession().begintransaction(); 11. chain.dofilter(request, response); 12. this.sf.getcurrentsession().gettransaction().commit(); 13. this.sf.getcurrentsession().close(); 14. } catch (Throwable ex) { 15. try { 17. if (this.sf.getcurrentsession().gettransaction().isactive()) { 18. this.sf.getcurrentsession().gettransaction().rollback(); 19. } 20. } catch (Throwable t) { 21. t.printstacktrace(); 22. } 23. throw new ServletException(ex); 24. } 1/

24 25. } public void destroy() { 29. // TODO Auto-generated method stub } 32. } A interface Filter exige a implementação de três métodos, que são init, dofilter e destroy. O método init é executado somente quando o aplicativo web é colocado em questão é colocado no ar. Já o método destroy é executado destroy é executado quando o aplicativo web é desativado ou o servidor é tirado do ar. O método dofilter é onde a requisição web pode ser interceptada. A configuração da classe ConexaoHibernateFilter é realizada no arquivo web.xml, por isso altere o arquivo: Listagem 14: web.xml 01. <?xml version="1.0" encoding="utf-8"?> 02. <web-app xmlns:xsi=" 03. xmlns=" 04. xsi:schemalocation=" version="3.0"> 07. <display-name>financeiroweb</display-name> 08. <welcome-file-list> 09. <welcome-file>index.xhtml</welcome-file> 10. <welcome-file>index.html</welcome-file> 11. </welcome-file-list> 12. <servlet> 13. <servlet-name>faces Servlet</servlet-name> 14. <servlet-class>javax.faces.webapp.facesservlet</servlet-class> 15. <load-on-startup>1</load-on-startup> 16. </servlet> <servlet-mapping> 19. <servlet-name>faces Servlet</servlet-name> 20. <url-pattern>*.xhtml</url-pattern> 21. </servlet-mapping> 22. <filter> 23. <display-name>conexaofilter</display-name> 24. <filter-name>conexaofilter</filter-name> 25. <filter-class>br.com.financeiro.web.filter.conexaohibernatefilter</filter-class> 26. </filter> 27. <filter-mapping> 28. <filter-name>conexaofilter</filter-name> 29. <url-pattern>*.xhtml</url-pattern> 30. </filter-mapping> 1/

25 Crie o arquivo hibernate.cfg.xml na raiz de src. Figura 16: Arquivo hibernate.cfg.xml Configure-o desta forma: Listagem 15: Arquivo hibernate.cfg.xml 01. <?xml version='1.0' encoding='utf-8'?> 02. <!DOCTYPE hibernate-configuration PUBLIC 03. "-//Hibernate/Hibernate Configuration DTD//EN" 04. " 05. <hibernate-configuration> 06. <session-factory> 07. <property name="dialect">org.hibernate.dialect.postgresql9dialect</property> 08. <property name="connection.datasource">java:/comp/env/jdbc/financeirodb</property> 09. <property name="current_session_context_class">thread</property> 10. <property name="hibernate.hbm2ddl.auto">update</property> 11. <mapping class="br.com.financeiro.usuario.usuario"/> 12. <mapping class="br.com.financeiro.conta.conta"/> 13. <mapping class="br.com.financeiro.categoria.categoria"/> 14. </session-factory> </hibernate-configuration> Criaremos agora a classe UsuarioRN que ficará no pacote br.com.financeiro.usuario. Essa classe conterá as regras de negocio para o usuário e faz parte da única camada que poderá se comunicar com a camada de banco de dados. 1/

26 Listagem 16: Classe UsuarioRN 01. public class UsuarioRN { 02. private UsuarioDAO usuariodao; 03. public UsuarioRN() { 04. this.usuariodao = DAOFactory.criarUsuarioDAO(); 05. } 06. public Usuario carregar(integer codigo) { 07. return this.usuariodao.carregar(codigo); 08. } 09. public Usuario buscarporlogin(string login) { 10. return this.usuariodao.buscarporlogin(login); 11. } 12. public void salvar(usuario usuario) { 13. Integer codigo = usuario.getcodigo(); 14. if (codigo == null codigo == 0) { 15. usuario.getpermissao().add("role_usuario"); 16. this.usuariodao.salvar(usuario); 17. CategoriaRN categoriarn = new CategoriaRN(); 18. categoriarn.salvaestruturapadrao(usuario); 19. } else 20. this.usuariodao.atualizar(usuario); 21. } 22. public void excluir(usuario usuario) { 23. CategoriaRN categoriarn = new CategoriaRN(); 24. categoriarn.excluir(usuario); 25. this.usuariodao.excluir(usuario); 26. } 27. public List<Usuario> listar() { return this.usuariodao.listar(); 28. } 29.} 1/

27 Criaremos agora a classe UsuarioBean, ela será backing bean do JavaServer Faces, ou seja, guardará todos os dados e funcionalidades para a tela do cadastro de usuários. Ela ficará no pacote br.com.financeiro.web e, por enquanto terá o seguinte código. Listagem 17: Classe UsuarioBean = "usuariobean") 03. public class UsuarioBean implements Serializable { private static final long serialversionuid = L; 06. private Usuario usuario = new Usuario(); 07. private String confirmarsenha; 08. public String getconfirmarsenha() { 09. return confirmarsenha; 10. } public void setconfirmarsenha(string confirmarsenha) { 13. this.confirmarsenha = confirmarsenha; 14. } public Usuario getusuario() { 17. return usuario; 18. } public void setusuario(usuario usuario) { 21. this.usuario = usuario; 22. } Criaremos agora a páina usuario.xhtml que ficará dentro da pata público. Figura 17: usuário.xhtml Deixe-a do seguinte modo: 1/

28 Listagem 18: arquivo usuário.xhtml 01. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 02. " <html xmlns=" 05. xmlns:ui=" 06. xmlns:h=" 07. xmlns:f=" 08. xmlns:p=" <ui:composition template="/templates/interna.xhtml"> 11. <ui:define name="titulo"> 12. Cadastro de Usuários 13. </ui:define> <ui:define name="corpo"> 16. <h:form id="cadastro"> 17. <p:messages /> 18. <h:inputhidden value="#{usuariobean.usuario.codigo}" /> 19. <h:inputhidden value="#{usuariobean.usuario.ativo}" /> 20. <h:inputhidden value="#{usuariobean.destinosalvar}" /> <h:panelgrid columns="2"> 23. <h:outputlabel value="nome:" for="nome" /> 24. <h:inputtext id="nome" label="nome" 25. value="#{usuariobean.usuario.nome}" size="30" maxlength="30" 26. required="true" requiredmessage="você não tem nome?"> 27. <f:validatelength minimum="10" maximum="30" /> 28. </h:inputtext> <h:outputlabel value="data Nascimento:" for="data" /> 31. <h:inputtext id="data" label="data Nascimento" 32. value="#{usuariobean.usuario.nascimento}" size="10" maxlength="10" 33. required="true"> 34. <f:convertdatetime datestyle="medium" /> 35. </h:inputtext> <h:outputlabel value="celular:" for="celular" /> 38. <h:inputtext id="celular" label="celular" 39. value="#{usuariobean.usuario.celular}" size="10" /> <h:outputlabel value=" " for=" " /> 42. <h:panelgroup> 43. <h:inputtext id=" " label=" " 44. value="#{usuariobean.usuario. }" size="50" maxlength="50" 45. required="true" validatormessage=" inválido!"> <f:validateregex /> 46. </h:inputtext> 47. <h:message for=" " /> 48. </h:panelgroup> 49. 1/

29 50. <h:outputlabel value="idioma:" for="idioma" /> 51. <h:selectonemenu id="idioma" value="#{usuariobean.usuario.idioma}"> 52. <f:selectitem itemvalue="pt_br" itemlabel="português" /> 53. <f:selectitem itemvalue="en_us" itemlabel="inglês" /> 54. <f:selectitem itemvalue="es_es" itemlabel="espanhol" /> 55. </h:selectonemenu> <h:outputlabel value="login:" for="login" /> 58. <h:inputtext id="login" label="login" 59. value="#{usuariobean.usuario.login}" size="15" maxlength="15" 60. required="true" validatormessage="login deve ter no mínimo 5 e no máximo 15 caracteres e só pode ter os símbolos '.' e '_'."> 61. <f:validateregex pattern="([a-z] [0-9] [.] [_]){5,15}" /> 62. </h:inputtext> <h:outputlabel value="senha:" for="senha" /> 65. <h:inputsecret id="senha" label="senha" 66. value="#{usuariobean.usuario.senha}" size="10" maxlength="10" 67. required="true" redisplay="true" /> <h:outputlabel value="confirmar Senha" for="confirmarsenha" /> 70. <h:inputsecret id="confirmarsenha" label="confirmar Senha" 71. value="#{usuariobean.confirmarsenha}" size="10" maxlength="10" 72. required="true" redisplay="true" /> 73. </h:panelgrid> <h:panelgroup rendered="#{empty contextobean.usuariologado}"> 76. <fieldset> 77. <legend>conta Inicial</legend> 78. <h:panelgrid columns="2"> 79. <h:outputlabel value="descrição: " for="descricao" /> 80. <h:inputtext id="descricao" label="descrição" value="#{usuariobean.conta.descricao}" required="true" maxlength="45" /> 81. <h:outputlabel value="saldo Inicial: " for="saldoinicial" /> 82. <h:inputtext id="saldoinicial" 83. value="#{usuariobean.conta.saldoinicial}" size="10"> 84. <f:convertnumber minfractiondigits="2" /> 85. </h:inputtext> 86. </h:panelgrid> 87. </fieldset> 88. </h:panelgroup> <h:commandbutton action="#{usuariobean.salvar}" value="salvar" /> 91. </h:form> 92. </ui:define> 93. </ui:composition> 94. </html> 1/

30 Acrescente os seguintes métodos na classe UsuarioBean: Listagem 19: Classe UsuarioBean 01. public String novo() { ]usuar 02. this.destinosalvar = "usuariosucesso"; 03. this.usuario = new Usuario(); 04. this.usuario.setativo(boolean.true); 05. return "usuario"; 06. } 07. public String salvar() { 08. FacesContext context = FacesContext.getCurrentInstance(); String senha = this.usuario.getsenha(); 11. if (!senha.equals(this.confirmarsenha)) { 12. FacesMessage facesmessage = new FacesMessage( 13. "A senha não foi confirmada corretamente!"); 14. context.addmessage(null, facesmessage); 15. return null; 16. } UsuarioRN usuariorn = new UsuarioRN(); 19. usuariorn.salvar(usuario); if (this.conta.getdescricao()!= null) { 22. this.conta.setusuario(this.usuario); 23. this.conta.setfavorita(true); 24. ContaRN contarn = new ContaRN(); 25. contarn.salvar(this.conta); 26. } return this.destinosalvar; 29. } Agora crie a pagina login.xhtml dentro da pasta publico. Deixe-a da seguinte forma: Listagem 20: login.xhtml 01. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 02. " <html xmlns=" 05. xmlns:ui=" 06. xmlns:h=" 07. xmlns:f=" <ui:composition template="/templates/principal.xhtml"> 10. <ui:define name="corpo"> <h:form> 13. <h:commandbutton action="#{usuariobean.novo}" value="registre- 14. se" /> 15. </h:form> <h:panelgroup rendered="#{!empty param.login_error}"> 18. <span style="font-color: red">erro ao efetuar o login.</span> 1/

31 19. <br /> 20. <br /> 21. Motivo: #{SPRING_SECURITY_LAST_EXCEPTION.message} 22. </h:panelgroup> <form id="login" method="post" 25. action="#{request.contextpath}/j_spring_security_check"> 26. <table> 27. <tr><td>login</td> 28. <td><input type='text' name='j_username'/></td> 29. </tr> 30. <tr><td>senha</td> 31. <td><input type='password' name="j_password" /></td> 32. </tr> 33. <tr><td align="right"><input type="checkbox" 34. name="_spring_security_remember_me"/></td> 35. <td>entrar automaticamente</td> 36. </tr> 37. <tr><td></td> 38. <td><input type="submit" value="entrar" /></td> 39. </tr> 40. </table> 41. <script> 42. document.getelementbyid("login").j_username.value = 43. "#{SPRING_SECURITY_LAST_USERNAME}"; 44. </script> 45. </form> 46. </ui:define> 47. </ui:composition> 48. </html> Também crie a pagina usuariosucesso.xhtml, dentro de público. Listagem 21: usuariosucesso.xhtml 01. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 02. " <html xmlns=" 05. xmlns:ui=" 06. xmlns:h=" 07. xmlns:f=" <ui:composition template="/templates/interna.xhtml"> 10. <ui:define name="titulo"> 11. Cadastro de usuarios 12. </ui:define> 13. <ui:define name="corpo"> 14. <h1> 15. <h:outputtext value="#{usuariobean.usuario.nome}" /> 16., seja Bem-vindo 17. </h1> 18. Não Seu cadastro foi realizado com sucesso. 19. <br /> 20. Clique <a href="login.xhtml">aqui</a> para efetuar o login. 21. </ui:define> 22. </ui:composition> 23.</html> 1/

32 Não se esqueça da index.html dentro de webapp. Listagem 22: index.html 01. <META HTTP-EQUIV="Refresh" CONTENT="0;URL=restrito/principal.xhtml"> Acrescente no web.xml o welcome-file-list. Listagem 23: web.xml 01. <display-name>financeiroweb</display-name> 02. <welcome-file-list> 03. <welcome-file>index.xhtml</welcome-file> 04. <welcome-file>index.html</welcome-file> 05. </welcome-file-list> Cuidaremos agora da parte administrativa, para isso, crie uma pasta admin. A parte administrativa terá como objetivo permitir uma visão geral de todos os usuários cadastrados, além da realização das operações de exclusão, edição e ativação/desativação. Figura 17: pasta admin Crie dentro de admin a pagina principal.xhtml Listagem 24: principal.xhtml 01. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 02. " <html xmlns=" 05. xmlns:ui=" 06. xmlns:h=" 07. xmlns:f=" <ui:composition template="/templates/interna.xhtml"> 10. <ui:define name="titulo"> 11. Cadastro de Usuários 12. </ui:define> 13. <ui:define name="corpo"> 14. <h:form> 15. <h:messages /> 16. <h:datatable value="#{usuariobean.lista}" var="usuario" 17. rules="rows" 18. cellpadding="5"> 19. <f:facet name="caption"> 20. A listagem a seguir exibe a relação de todos os 21. usuários do sistema. Você poderá realizar 22. ativação e desativação, edição e exclusão de 23. usuários. 24. </f:facet> 1/

33 25. <f:facet name="header">listagem de Usuários</f:facet> 26. <f:facet name="footer">final da listagem</f:facet> 27. <h:column> 28. <h:commandlink action="#{usuariobean.ativar}"> 29. <h:graphicimage library="imagens" 30. name="usuario_ativo_#{usuario.ativo}.png" 31.style="border:0" /> 32. <f:setpropertyactionlistener value="#{usuario}" 33. target="#{usuariobean.usuario}" /> 34. </h:commandlink> 35. </h:column> 36. <h:column> 37. <f:facet name="header">código</f:facet> 38. #{usuario.codigo} 39. </h:column> 40. <h:column> 41. <h:graphicimage library="imagens" 42. name="bandeira_#{usuario.idioma}.png" /> 43. </h:column> 44. <h:column> 45. <f:facet name="header">nome</f:facet> 46. #{usuario.nome} 47. </h:column> 48. <h:column> 49. <f:facet name="header"> </f:facet> 51. <a href="mailto:#{usuario. }">#{usuario. }</a> 52. </h:column> 53. <h:column> 54. <f:facet name="header">permissões</f:facet> 55. <h:commandlink 56. action="#{usuariobean.atribuipermissao(usuario, 57.'ROLE_ADMINISTRADOR')}" 58. title="permissão Administrador"> 59. <h:graphicimage library="imagens" name="role_administrador_#{usuario.permissao.contains('role_administrador')}.png" 62. style="border:0" /> 63. </h:commandlink> 64. <h:commandlink 65. action="#{usuariobean.atribuipermissao(usuario, 66.'ROLE_USUARIO_VIP')}" 67. title="permissão Usuário VIP"> 68. <h:graphicimage library="imagens" name="role_usuario_vip_#{usuario.permissao.contains('role_usuario_vip')}.png" 71. style="border:0" /> 72. </h:commandlink> 73. </h:column> 74. <h:column> 75. <h:commandlink action="#{usuariobean.editar}"> 76. <h:graphicimage library="imagens" name="editar16.png" 77. style="border:0" /> 78. <f:setpropertyactionlistener value="#{usuario}" 79. target="#{usuariobean.usuario}" /> 80. <f:setpropertyactionlistener value="/admin/principal" 81. target="#{usuariobean.destinosalvar}" /> 82. </h:commandlink> 1/

34 83. <h:column> 84. <h:commandlink action="#{usuariobean.excluir}" 85. onclick="if (!confirm('confirma a exclusão do usuario 86. #{usuario.nome}?')) return false;"> 87. <h:graphicimage library="imagens" name="excluir16.png" 88. style="border:0" /> 89. <f:setpropertyactionlistener value="#{usuario}" 90. target="#{usuariobean.usuario}" /> 91. </h:commandlink> 92. </h:column> </h:datatable> 95. </h:form> 96. </ui:define> 97. </ui:composition> 98. </html> Crie também a pasta resources, e, dentro dela a pasta imagens. Adicione as imagens que usaremos, elas estão disponíveis no site do livro. Figura 18: pasta imagens Para atender completamente a listagem de usuários, a classe UsuarioBean precisa de algumas alterações. Deixe-a conforme a listagem a seguir: Listagem 25: classe UsuarioBean = "usuariobean") 03. public class UsuarioBean implements Serializable { private static final long serialversionuid = L; 06. private Usuario usuario = new Usuario(); 07. private String confirmarsenha; 08. private List<Usuario> lista; 09. private String destinosalvar; 10. private Conta conta = new Conta(); 1/

35 11. public String novo() { 12. this.destinosalvar = "usuariosucesso"; 13. this.usuario = new Usuario(); 14. this.usuario.setativo(boolean.true); 15. return "usuario"; 16. } public String editar() { 19. this.confirmarsenha = this.usuario.getsenha(); 20. return "/publico/usuario"; 21. } public String atribuipermissao(usuario usuario, String permissao) { 24. this.usuario = usuario; 25. java.util.set<string> permissoes = this.usuario.getpermissao(); 26. if (permissoes.contains(permissao)) { 27. permissoes.remove(permissao); 28. } else { 29. permissoes.add(permissao); 30. } 31. return null; 32. } public String salvar() { 35. FacesContext context = FacesContext.getCurrentInstance(); String senha = this.usuario.getsenha(); 38. if (!senha.equals(this.confirmarsenha)) { 39. FacesMessage facesmessage = new FacesMessage( 40. "A senha não foi confirmada corretamente!"); 41. context.addmessage(null, facesmessage); 42. return null; 43. } UsuarioRN usuariorn = new UsuarioRN(); 46. usuariorn.salvar(usuario); if (this.conta.getdescricao()!= null) { 49. this.conta.setusuario(this.usuario); 50. this.conta.setfavorita(true); 51. ContaRN contarn = new ContaRN(); 52. contarn.salvar(this.conta); 53. } return this.destinosalvar; 56. } public String excluir() { 59. UsuarioRN usuariorn = new UsuarioRN(); 60. usuariorn.excluir(this.usuario); 61. this.lista = null; 62. return null; 63. } 1/

36 64. public String ativar() { 65. if (this.usuario.isativo()) { 66. this.usuario.setativo(false); 67. } else { 68. this.usuario.setativo(true); 69. } UsuarioRN usuariorn = new UsuarioRN(); 72. usuariorn.salvar(this.usuario); 73. return null; } public List<Usuario> getlista() { 78. if (this.lista == null) { 79. UsuarioRN usuariorn = new UsuarioRN(); 80. this.lista = usuariorn.listar(); 81. } 82. return this.lista; 83. } public String getconfirmarsenha() { 86. return confirmarsenha; 87. } public void setconfirmarsenha(string confirmarsenha) { 90. this.confirmarsenha = confirmarsenha; 91. } public Usuario getusuario() { 94. return usuario; 95. } public void setusuario(usuario usuario) { 98. this.usuario = usuario; 99. } public String getdestinosalvar() { 103. return destinosalvar; 104. } public void setdestinosalvar(string destinosalvar) { 107. this.destinosalvar = destinosalvar; 108. } public Conta getconta() { 111. return conta; 112. } public void setconta(conta conta) { 115. this.conta = conta; 116. } } 1/

37 Precisaremos que o Spring se conecte ao banco de dados, para fazer tal configuração criaremos o arquivo contexto.xml dentro de META-INF, que também será criada dentro de webapp. Caso precise, mude a configuração de acordo com o seu banco de dados. Listagem 26: arquivo contexto.xml 01. <?xml version="1.0" encoding="utf-8"?> 02. <Context reloadable="true"> 03. <Resource 04. name="jdbc/financeirodb" 05. auth="container" 06. type="javax.sql.datasource" 07. maxactive="100" 08. maxidle="30" 09. maxwait="10000" 10. username="postgres" 11. password="root" 12. driverclassname="org.postgresql.driver" 13. url="jdbc:postgresql://localhost:5432/bd_financeiro" 14. /> 15. </Context> Agora é necessário adicionar uma referência para o DataSource JNDI criado. O arquivo web.xml deve ser alterado para adicionar o bloco de configuração seguinte. Listagem 27: web.xml 01. <resource-ref> 02. <description>datasource FinanceiroDB</description> 03. <res-ref-name>jdbc/financeirodb</res-ref-name> 04. <res-type>javax.sql.datasource</res-type> 05. <res-auth>container</res-auth> 06. </resource-ref> O arquivo context.xml contem as configurações do banco de dados, enquanto o hibernate.cgf.xml, já criado, aponta para o DataSource JNDI criado. Agora, para que o Spring Security possa interceptar todas as requisições realizadas e avaliar se quem está requisitando tem permissão ou não, o arquivo web.xml deverá ser alterado, acrescentando o seguinte: 1/

38 Listagem 28: arquivo web.xml 01. <!-- Spring Security --> 02. <context-param> 03. <param-name>contextconfiglocation</param-name> 04. <param-value> 05. /WEB-INF/applicationContext.xml 06. /WEB-INF/applicationContext-security.xml 07. </param-value> 08. </context-param> 09. <filter> 10. <filter-name>springsecurityfilterchain</filter-name> 11. <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class> 12. </filter> 13. <filter-mapping> 14. <filter-name>springsecurityfilterchain</filter-name> 15. <url-pattern>/*</url-pattern> 16. </filter-mapping> 17. <listener> 18. <listener-class>org.springframework.web.context.contextloaderlistener</listener- class> 19. </listener> Agora criaremos o arquivo applicationcontext.xml, dentro de WEB-INF, que conterá uma referência ao DataSource JNDI recém criado. Listagem 29: applicationcontext.xml 01. <?xml version="1.0" encoding="utf-8"?> 02. <beans xmlns=" 03. xmlns:xsi=" 04. xsi:schemalocation=" <bean id="financeirodatasource" 08. class="org.springframework.jndi.jndiobjectfactorybean"> 09. <property name="jndiname"> 10. <value>java:comp/env/jdbc/financeirodb</value> 11. </property> 12. </bean> 13. </beans> Crie também o arquivo applicationcontext-security.xml dentro de WEB-INF. Ele conterá configurações especificas do Spring Security, como as configurações de permissões para as pastas e configurações da origem dos dados dos usuários e permissões. 1/

39 Listagem 30: applicationcontext-security.xml 01. <?xml version="1.0" encoding="utf-8"?> 02. <b:beans xmlns=" 03. xmlns:b=" 04. xmlns:xsi=" 05. xsi:schemalocation=" <http> 11. <intercept-url pattern="/admin/**" access="role_administrador" /> 12. <intercept-url pattern="/restrito/**" access="role_usuario" /> 13. <form-login login-page="/publico/login.xhtml" 14. always-use-default-target="true" default-target- 15. url="/restrito/principal.xhtml" 16. authentication-failure-url="/publico/login.xhtml?login_error=1" /> 17. <logout /> 18. <remember-me /> 19. </http> 20. <authentication-manager> 21. <authentication-provider> 22. <!-- <password-encoder hash="md5"/> --> 23. <jdbc-user-service data-source-ref="financeirodatasource" 24. authorities-by-username-query="select u.login, p.permissao 25. FROM usuario u, usuario_permissao p WHERE u.codigo = p.usuario AND 26. u.login =? " 27. users-by-username-query="select login, senha, ativo FROM usuario 28. WHERE login =?" /> 29. </authentication-provider> 30. </authentication-manager> 31. </b:beans> Já configuramos a página /publico/login.xhtml com o uso do Spring Security anteriormente, agora, configuramos no applicationcontext-security.xml que a página login.xhtml seria utilizada com o Spring Security. Chegou o momento de criarmos a página principal dentro de restrito. Essa página irá exibir as principais informações do usuário, no que diz respeito ao contexto de segurança. Siga a listagem a seguir: 1/

40 Listagem 31: principal.xhtml 01. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 02. " <html xmlns=" 05. xmlns:ui=" 06. xmlns:h=" 07. xmlns:f=" 08. xmlns:sec=" <ui:composition template="/templates/principal.xhtml"> 11. <ui:define name="corpo"> 12. <! Usuário logado #{request.remoteuser} 14. <br /> 15. Nome do Usuário Logado #{contextobean.usuariologado.nome} 16. <br /> > 18. <h:form> 19. <h:commandbutton value="conta" action="conta" /> <h:selectonemenu value="#{contextobean.contaativa.conta}" 22. valuechangelistener="#{contextobean.setcontaativa}" 23. rendered="#{!empty contextobean}" onchange="submit()"> 24. <f:selectitems value="#{contabean.lista}" var="conta" 25. itemvalue="#{conta.conta}" 26. itemlabel="#{conta.descricao}" /> 27. </h:selectonemenu> <sec:ifanygranted roles="role_administrador"> 30. <h:commandbutton value="administração" 31. action="/admin/principal" /> 32. </sec:ifanygranted> <input type="button" value="logout" onclick="document.location='#{request.contextpath}/j_spring_security_logout'" /> </h:form> 40. </ui:define> 41. </ui:composition> 42. </html> A informação do usuário conectado está disponível pela expressão #{request.remoteuser}, que retorna o login do usuário em questão. A tag <sec:ifanygranted> Permite decidir para quais permissões seu conteúdo será exibido. No nosso caso, exibimos o link de acesso à área administrativa somente para os usuários administradores. 1/

41 Agora, criaremos as classe de persistência relacionadas à permissões, para que o sistema possa gerenciar as permissões do usuario, ou seja, incluir e excluir permissões. Para isso, precisaremos mapear a tabela de permissões de usuários no Hibernate, alterar a regra de negócio do usuário para que receba as permissões padrão no momento do cadastro e altera a listagem de usuários para que seja possível atribuir permissões aos usuários. Primeiramente, vamos alterar a classe Usuario no pacote br.com.financeiro.usuario do seguinte modo: Listagem 32: Classe Usuario = String.class) 03. name="usuario_permissao", 04. uniqueconstraints = {@UniqueConstraint(columnNames = {"usuario", 05. "permissao"})}, 06. joincolumns = "usuario")) = "permissao", length=50) 08. private Set<String> permissao = new HashSet<String>(); A declara qual tipo da classe que será carregada no conjunto (Set) de valores. A configuração name descreve o nome da tabela no lado de muitos desse relacionamento. A configuração de uniqueconstraints criará um índice único na tabela usuario_permissao entre os campos usuário e permissão. A configuração joincolumns informa a qual coluna da tabela Filho a tabela Pai irá se ligar. A dirá qual qual será o name da coluna de permissão na nova tabela usuário_permissao. E, por fim, utilizamos o java.util.set para guardar as permissões. Agora altere o método atualizar da classe UsuarioDAOHibernate do pacote br.com.finaneiro.usuario, conforme a seguir: Listagem 33: Classe UsuarioDAOHibernate 02. public void atualizar(usuario usuario) { 03. if(usuario.getpermissao() == null usuario.getpermissao().size() == 0) { 04. Usuario usuariopermissao = this.carregar(usuario.getcodigo()); 05. usuario.setpermissao(usuariopermissao.getpermissao()); 06. this.session.evict(usuariopermissao); 07. } 08. this.session.update(usuario); } A primeira ação do método atualizar é testar se o usuário em questão tem alguma permissão. Caso seu conjunto de permissões esteja vazio, vamos carrega-las no banco de dados jogando esse objeto em uma referência a usuariopermissao. Depois, transferimos as permissões originais para o objeto usuário a ser salvo. Daí, chamamos o método session.evict() para retirar do contexto persistente esse objeto. No método salvar da classe UsuarioRN, já criada, quando o usuário é cadastrado ele já recebe a permissão padrão, ROLE_USUARIO, ao Set de permissão. 1/

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges Versão 1.0 TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges Data: 01/12/2014 SUMÁRIO 1. INTRODUÇÃO... 2 2. O QUE É SPRING SECURITY?...

Leia mais

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada

Leia mais

JSF - Controle de Acesso FERNANDO FREITAS COSTA

JSF - Controle de Acesso FERNANDO FREITAS COSTA JSF - Controle de Acesso FERNANDO FREITAS COSTA ESPECIALISTA EM GESTÃO E DOCÊNCIA UNIVERSITÁRIA JSF Controle de Acesso Antes de iniciarmos este assunto, é importante conhecermos a definição de autenticação

Leia mais

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com Persistência de dados com JPA Hélder Antero Amaral Nunes haanunes@gmail.com O que é persistência? A persistência de dados é o fato de pegar um dado e torná-lo persistente, ou seja, salvar em algum banco

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

Autenticação e Autorização

Autenticação e Autorização Autenticação e Autorização Introdução A segurança em aplicações corporativas está relacionada a diversos aspectos, tais como: autenticação, autorização e auditoria. A autenticação identifica quem acessa

Leia mais

PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO FACULDADE DE TECNOLOGIA SENAC GOIÁS PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO - MÓDULO V - GOIÂNIA - ABRIL 2015 ELABORAÇÃO Coordenador do Projeto: Douglas de Souza

Leia mais

Java para WEB. Servlets

Java para WEB. Servlets Servlets Servlets são classes Java que são instanciadas e executadas em associação com servidores Web, atendendo requisições realizadas por meio do protocolo HTTP. Servlets é a segunda forma que veremos

Leia mais

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1 Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC)

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

FACULDADE DE TECNOLOGIA SENAC GOIÁS CONTROLE DE ACESSO USANDO O FRAMEWORK RICHFACES. 5º PERÍODO Gestão da Tecnologia da Informação

FACULDADE DE TECNOLOGIA SENAC GOIÁS CONTROLE DE ACESSO USANDO O FRAMEWORK RICHFACES. 5º PERÍODO Gestão da Tecnologia da Informação FACULDADE DE TECNOLOGIA SENAC GOIÁS CONTROLE DE ACESSO USANDO O FRAMEWORK RICHFACES 5º PERÍODO Gestão da Tecnologia da Informação Alunos: Alessandro Aparecido André Alexandre Bruno Santiago Thiago Castilho

Leia mais

!" # # # $ %!" " & ' ( 2

! # # # $ %!  & ' ( 2 !"# # #$ %!" "& ' ( 2 ) *+, - 3 . / 4 !" 0( # "!#. %! $""! # " #.- $ 111.&( ( 5 # # 0. " % * $(, 2 % $.& " 6 # #$ %% Modelo (Encapsula o estado da aplicação) Implementado como JavaBeans Responde a consulta

Leia mais

PROJETO INTEGRADOR. Documentação. Aplicação de Controle de Acesso FACULDADE DE TECNOLOGIA SENAC GOIÁS. Programação com Frameworks

PROJETO INTEGRADOR. Documentação. Aplicação de Controle de Acesso FACULDADE DE TECNOLOGIA SENAC GOIÁS. Programação com Frameworks PROJETO INTEGRADOR FACULDADE DE TECNOLOGIA SENAC GOIÁS Programação com Frameworks Documentação Aplicação de Controle de Acesso Gestão em Tecnologia da Informação 5º Módulo Noturno Professor: Fabricio Leonard

Leia mais

Criação de um novo projeto no Eclipse utilizando Maven

Criação de um novo projeto no Eclipse utilizando Maven 1. Faça o download da versão mais atual do Eclipse IDE for Java EE Developers em https://www.eclipse.org/downloads/. 2. No Eclipse, crie um novo projeto Maven, em File >> New >> Maven Project 3. Marque

Leia mais

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

TUTORIAL SISTEMA DE CONTROLE DE ACESSO FACULDADE DE TECNOLOGIA SENAC GOIÁS GESTÃO EM TECNOLOGIA DA INFORMAÇÃO WISLIY LOPES JULIANO PIROZZELLI TULIO TSURUDA LUIZ GUILHERME MENDES TUTORIAL SISTEMA DE CONTROLE DE ACESSO GOIÂNIA JUNHO DE 2014 Sumário

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS Edi Carlos Siniciato ¹, William Magalhães¹ ¹ Universidade Paranaense (Unipar) Paranavaí PR Brasil edysiniciato@gmail.com,

Leia mais

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

Leia mais

FACULDADE DE TECNOLOGIA SENAC GOIÁS PROGRAMAÇÃO PARA INTERNET TUTORIAL DE APLICAÇÃO JSF DESENVOLVIDO COM A FERRAMENTA ECLIPSE LUNA

FACULDADE DE TECNOLOGIA SENAC GOIÁS PROGRAMAÇÃO PARA INTERNET TUTORIAL DE APLICAÇÃO JSF DESENVOLVIDO COM A FERRAMENTA ECLIPSE LUNA FACULDADE DE TECNOLOGIA SENAC GOIÁS PROGRAMAÇÃO PARA INTERNET TUTORIAL DE APLICAÇÃO JSF DESENVOLVIDO COM A FERRAMENTA ECLIPSE LUNA NOME DO PROJETO: CadastroWeb ALUNOS: Fabio Henrique, Murillo Victor TUTORIAL

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

Aplicativos JavaEE 6 modularizados com Web Fragments

Aplicativos JavaEE 6 modularizados com Web Fragments Aplicativos JavaEE 6 modularizados com Web Fragments Kleber Xavier Instrutor e Arquiteto de Software Vinicius Senger Instrutor e Arquiteto De Software Agenda Introdução Componentização com JavaEE 6 Plugabilidade

Leia mais

Demoiselle Tutorial Módulo 1 Arquitetura

Demoiselle Tutorial Módulo 1 Arquitetura Demoiselle Tutorial Módulo 1 Arquitetura Vanderson Botelho da Silva (SERPRO/SUPST/STCTA) Emerson Sachio Saito (SERPRO/CETEC/CTCTA) Flávio Gomes da Silva Lisboa (SERPRO/CETEC/CTCTA) Serge Normando Rehem

Leia mais

J550 Segurança e Controle de erros

J550 Segurança e Controle de erros J550 Segurança e Controle de erros Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Assuntos abordados Este módulo trata de dois assuntos Como mapear erros HTTP e exceções Java a servlets ou páginas

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

JavaServer Faces (JSF) Leonardo Murta (leomurta@ic.uff.br)

JavaServer Faces (JSF) Leonardo Murta (leomurta@ic.uff.br) JavaServer Faces (JSF) Leonardo Murta (leomurta@ic.uff.br) Especificação/IDE/Implementação Esse curso foi preparado em 03/2015 usando a seguinte especificação, IDE e implementação Especificação JavaServer

Leia mais

Leonardo Gresta Paulino Murta leomurta@gmail.com

Leonardo Gresta Paulino Murta leomurta@gmail.com Leonardo Gresta Paulino Murta leomurta@gmail.com O Que é JDBC? API de acesso a banco de dados relacional do Java Faz uso do driver provido pelo banco de dados Roda SQL (create, insert, update, etc.) no

Leia mais

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha Desenvolvimento WEB II Professora: Kelly de Paula Cunha O Java EE (Java Enterprise Edition): série de especificações detalhadas, dando uma receita de como deve ser implementado um software que utiliza

Leia mais

DWR DIRECTED WEB REMOTING

DWR DIRECTED WEB REMOTING DWR DIRECTED WEB REMOTING Vamos ver nesse artigo um pouco sobre o Frameworks Ajax para Java, o DWR. Vamos ver seus conceitos, utilidades, vantagens, algumas práticas e fazer o passo a passo para baixar,

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Juarez Bachmann Orientador: Alexander Roberto Valdameri Roteiro Introdução Objetivos Fundamentação teórica Desenvolvimento

Leia mais

Manual do sistema SMARsa Web

Manual do sistema SMARsa Web Manual do sistema SMARsa Web Módulo Gestão de atividades RS/OS Requisição de serviço/ordem de serviço 1 Sumário INTRODUÇÃO...3 OBJETIVO...3 Bem-vindo ao sistema SMARsa WEB: Módulo gestão de atividades...4

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

GERENCIADOR DE CONTEÚDO

GERENCIADOR DE CONTEÚDO 1/1313 MANUAL DO USUÁRIO GERENCIADOR DE CONTEÚDO CRISTAL 2/13 ÍNDICE 1. OBJETIVO......3 2. OPERAÇÃO DOS MÓDULOS......3 2.1 GERENCIADOR DE CONTEÚDO......3 2.2 ADMINISTRAÇÃO......4 Perfil de Acesso:... 4

Leia mais

PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO FACULDADE DE TECNOLOGIA SENAC GOIÁS PROJETO FINANCEIROWEB GRADUAÇÃO TECNOLÓGICA EM GESTÃO DA TECNOLOGIA DA INFORMAÇÃO PROFº.: FABRICIO LEONARD PROGRAMAÇÃO COM FRAMEWORKS - MÓDULO V - GOIÂNIA - JUNHO ELABORAÇÃO

Leia mais

Manual Captura S_Line

Manual Captura S_Line Sumário 1. Introdução... 2 2. Configuração Inicial... 2 2.1. Requisitos... 2 2.2. Downloads... 2 2.3. Instalação/Abrir... 3 3. Sistema... 4 3.1. Abrir Usuário... 4 3.2. Nova Senha... 4 3.3. Propriedades

Leia mais

ANDROID APPLICATION PROJECT

ANDROID APPLICATION PROJECT Criando um programa Abrindo o programa Eclipse, clique na opção [FILE], depois em [NEW], selecione a opção [PROJECT], uma janela de opção do tipo de projeto irá se abrir, escolha [ANDROID] logo depois

Leia mais

MANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal

MANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal MANUAL DO ADMINISTRADOR LOCAL Entidade Municipal Abril / 2011 ÍNDICE Objetivos do Sistema de Registro de Integrado - REGIN... 3 Principais Módulos do Sistema... 4 Módulo Controle de Acesso... 5 Módulo

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCE-557 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paraná PR Brasil luisgustavo@live.co.uk,

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Servidor de Aplicações WEB Tomcat Servidor Tomcat Foi desenvolvido

Leia mais

Introdução. <facelets> Templates. Configurações. Componentes. Prof. Enzo Seraphim

Introdução. <facelets> Templates. Configurações. Componentes. Prof. Enzo Seraphim Introdução Templates Configurações Componentes Prof. Enzo Seraphim Definição Linguagem de descrição de páginas (PDL Page Description Language) criada para JSF. Estabelece templates que suportam

Leia mais

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser A1Criando um módulo de negócio Capítulo 27 Aplicação dividida em módulos - Introdução Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser compreendido como uma solução de

Leia mais

Programação Java para a Web Décio Heinzelmann Luckow Alexandre Altair de Melo

Programação Java para a Web Décio Heinzelmann Luckow Alexandre Altair de Melo Programação Java para a Web Décio Heinzelmann Luckow Alexandre Altair de Melo Novatec Copyright 2010 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida

Leia mais

Rational Requirements Composer Treinamento aos Analistas de Qualidade e Gestor das Áreas de Projeto

Rational Requirements Composer Treinamento aos Analistas de Qualidade e Gestor das Áreas de Projeto Rational Requirements Composer Treinamento aos Analistas de Qualidade e Gestor das Áreas de Projeto Objetivos do Treinamento Apresentar as principais funcionalidades do Rational Requirements Composer relacionadas

Leia mais

Tutorial Módulo 01 Arquitetura Anexo I. Tutorial Módulo 01 Arquitetura Anexo I. LABORATÓRIO 01 Arquitetura e Configuração

Tutorial Módulo 01 Arquitetura Anexo I. Tutorial Módulo 01 Arquitetura Anexo I. LABORATÓRIO 01 Arquitetura e Configuração Tutorial Módulo 01 Arquitetura Anexo I LABORATÓRIO 01 Arquitetura e Configuração Este documento tem por objetivo a orientação para a configuração do ambiente, utilizando a IDE Eclipse, e a criação de um

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

Atualizado em 9 de outubro de 2007

Atualizado em 9 de outubro de 2007 2 Nettion R Copyright 2007 by Nettion Information Security. Este material pode ser livremente reproduzido, desde que mantidas as notas de copyright e o seu conteúdo original. Envie críticas e sugestões

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

INSTALAÇÃO DO SISTEMA CONTROLGÁS

INSTALAÇÃO DO SISTEMA CONTROLGÁS INSTALAÇÃO DO SISTEMA CONTROLGÁS 1) Clique duas vezes no arquivo ControlGasSetup.exe. Será exibida a tela de boas vindas do instalador: 2) Clique em avançar e aparecerá a tela a seguir: Manual de Instalação

Leia mais

MULTIACERVO - VERSÃO 17.*

MULTIACERVO - VERSÃO 17.* MULTIACERVO - VERSÃO 17.* MANUAL PARA CONVERSÃO DA VERSÃO 16.* PARA 17.* CONTEÚDO: A) Procedimentos comuns para todas as arquiteturas B) Procedimentos exclusivos arquitetura Cliente/Servidor MS-SQL-SERVER

Leia mais

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Aula 4. Objetivos. Conteúdo dinâmico na internet. Aula 4 Objetivos Conteúdo dinâmico na internet. Para uma solicitação da Web mais simples, um navegador solicita um documento HTML e o servidor Web encontra o arquivo correspondente e devolve. Se o documento

Leia mais

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS Emanuel M. Godoy 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil godoymanel@gmail.com,

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

Como funciona? SUMÁRIO

Como funciona? SUMÁRIO SUMÁRIO 1. Introdução... 2 2. Benefícios e Vantagens... 2 3. Como utilizar?... 2 3.1. Criar Chave / Senha de Usuário... 2 3.2. Recursos da Barra Superior... 2 3.2.1. Opções... 3 3.2.1.1. Mover Para...

Leia mais

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha http://www.materialdeaula.com.br

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha http://www.materialdeaula.com.br Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha http://www.materialdeaula.com.br JSP (Java Server Pages) - JavaServer Pages (JSP) - Tecnologia de programação serverside - Permite

Leia mais

Manual Integra S_Line

Manual Integra S_Line 1 Introdução O é uma ferramenta que permite a transmissão Eletrônica de Resultado de Exames, possibilitando aos Prestadores de Serviços (Rede Credenciada), integrarem seus sistemas com os das Operadoras

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Agenda 1. 2. Web Container TomCat 2 3 J2EE permite criar aplicações Web dinâmicas (com conteúdo dinâmico)

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

TUTORIAL DE INTRODUÇÃO AO CEWOLF

TUTORIAL DE INTRODUÇÃO AO CEWOLF 1 TUTORIAL DE INTRODUÇÃO AO CEWOLF CRIANDO GRÁFICOS COM JSP, CEWOLF/JFREECHART E MYSQL 1. Introdução O Cewolf (http://cewolf.sourceforge.net/) é uma biblioteca que facilita a criação de gráficos dinâmicos

Leia mais

Prática Sobre Servlets e JSP

Prática Sobre Servlets e JSP Prática Sobre Servlets e JSP 1. Localize a pasta do Tomcat (TOMCAT_HOME); 2. Acesse a pasta bin e execute tomcat5w.exe; 3. Abra o Navegador e acesse http://localhost:8080 (A apresentação de uma página

Leia mais

Tutorial Jogo da Velha WEB

Tutorial Jogo da Velha WEB Tutorial Jogo da Velha WEB Criação do Projeto 1- Inicie o Eclipse 2- Crie um novo projeto Web dinâmico. 3- Na tela seguinte, digite o nome do projeto e caso no campo Target Runtime não estiver aparecendo

Leia mais

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho Banco de Dados de Músicas Andre Lima Rocha Campos Osório Pereira Carvalho Definição Aplicação Web que oferece ao usuário um serviço de busca de músicas e informações relacionadas, como compositor, interprete,

Leia mais

Manual do usuário. v1.0

Manual do usuário. v1.0 Manual do usuário v1.0 1 Iniciando com o Vivo Gestão 1. como fazer login a. 1º acesso b. como recuperar a senha c. escolher uma conta ou grupo (hierarquia de contas) 2. como consultar... de uma linha a.

Leia mais

Anotações e Navegação no JSF 2.0

Anotações e Navegação no JSF 2.0 1/16 Anotações e Navegação no JSF 2.0 Simplifique a navegação e a configuração XML com o JSF 2.0 Aprenda a utilizar anotações e navegações implícita e condicional em suas aplicações JSF 2.0 MARCEL TOKARSKI

Leia mais

JSF Facelets. Como Facelets muda a forma de desenvolver com JSF

JSF Facelets. Como Facelets muda a forma de desenvolver com JSF JSF Facelets Como Facelets muda a forma de desenvolver com JSF Agenda JSF 1.x JSF e JSP Facelets JSF 2.0 JSF Framework MVC Eventos (Observadores) Manter o estado da View Uma árvore de componete JSF JSF

Leia mais

Documento de Análise e Projeto VideoSystem

Documento de Análise e Projeto VideoSystem Documento de Análise e Projeto VideoSystem Versão Data Versão Descrição Autor 20/10/2009 1.0 21/10/2009 1.0 05/11/2009 1.1 Definição inicial do documento de análise e projeto Revisão do documento

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

Criando uma agenda simples com NetBeans 6.5

Criando uma agenda simples com NetBeans 6.5 Criando uma agenda simples com NetBeans 6.5 (Swing application framework e Beansbinding) Já faz algum tempo que escrevi uma agenda simples usando o Eclipse com o Visual Class Editor. Demorei em torno de

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Por quê JSP? Com Servlets é fácil Ler dados de um formulário Recuperar dados de uma requisição Gerar informação de resposta Fazer gerenciamento

Leia mais

GUIA INTEGRA SERVICES E STATUS MONITOR

GUIA INTEGRA SERVICES E STATUS MONITOR GUIA INTEGRA SERVICES E STATUS MONITOR 1 - Integra Services Atenção: o Integra Services está disponível a partir da versão 2.0 do software Urano Integra. O Integra Services é um aplicativo que faz parte

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

JavaServer Faces JSF

JavaServer Faces JSF JavaServer Faces JSF Fernando Freitas Costa Bacharel em Sistemas de Informação Especialista em Gestão e Docência Universitária blog.fimes.edu.br/fernando nando@fimes.edu.br JavaServer Faces e Banco de

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

Minha primeira aplicação utilizando Java Server Faces + Glassfish

Minha primeira aplicação utilizando Java Server Faces + Glassfish Minha primeira aplicação utilizando Java Server Faces + Glassfish Este tutorial apresenta de forma simples, como iniciar no desenvolvimento com o framework Java Server faces 1.2, utilizando-se o servidor

Leia mais

WebApps em Java com uso de Frameworks

WebApps em Java com uso de Frameworks WebApps em Java com uso de Frameworks Fred Lopes Índice O que são frameworks? Arquitetura em camadas Arquitetura de sistemas WEB (WebApps) Listagem resumida de frameworks Java Hibernate O que são frameworks?

Leia mais

Anote aqui as informações necessárias:

Anote aqui as informações necessárias: banco de mídias Anote aqui as informações necessárias: URL E-mail Senha Sumário Instruções de uso Cadastro Login Página principal Abrir arquivos Área de trabalho Refine sua pesquisa Menu superior Fazer

Leia mais

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

Manipulação de Banco de Dados com Java 1. Objetivos

Manipulação de Banco de Dados com Java 1. Objetivos Manipulação de Banco de Dados com Java 1. Objetivos Demonstrar os fundamentos básicos para a manipulação de banco de dados com Java; Apresentar a sintaxe de comandos SQL usados em Java. 2. Definições A

Leia mais

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. 16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto

Leia mais

Tutorial para envio de comunicados e SMS

Tutorial para envio de comunicados e SMS Tutorial para envio de comunicados e SMS Conteúdo 1. Enviando comunicado para os alunos... 1 2. Verificando a situação do envio dos e-mails para os alunos... 5 3. Enviando comunicado para colaboradores

Leia mais