PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS - HTML 5: ARMAZENAMENTO (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc. http://about.me/TilFrozza DE DADOS ROTEIRO Introdução Compatibilidade Principais características Web SQL Storage Web Storage Verificação de suporte INTRODUÇÃO O HTML 5 prevê duas APIs para armazenamento de dados no lado do cliente: Web Storage Web SQL Storage Diretrizes para implementação dessas funcionalidades: Iniciadas pelo WHATWG (Grupo de Trabalho para HTML5); Posteriormente, foram repassadas ao W3C; INTRODUÇÃO A API Web Storage é suportada pelos navegadores modernos, inclusive IE 8; A API Web SQL Storage não é suportada pelos navegadores Mozilla, que implementam em seu lugar outra tecnologia similar, denominada IndexedDB; COMPATIBILIDADE PRINCIPAIS CARACTERÍSTICAS Web SQL Storage Esta especificação não está mais em manutenção ativa e o Web Applications Working Group não tem a intenção de mantê-la; No lugar dela, está sendo desenvolvida a especificação Indexed Database API, sugerida pela fundação Mozilla. PRINCIPAIS CARACTERÍSTICAS Web Storage É uma API destinada ao armazenamento de dados em clientes web Por exemplo, um navegador Essa funcionalidade foi criada com a finalidade de corrigir a forma conceitual e precária do funcionamento de cookies e de sessões; Cookie – mecanismo capaz de armazenar pequenas porções de dados gravadas em um arquivo texto no computador do usuário; Um cookie é criado e apagado em uma página web com uso da linguagem de programação no lado do servidor ou com JavaScript (no lado cliente); Cookies apresentam limitações que vão desde a reduzida capacidade de armazenagem (4kb) até severas falhas de segurança; PRINCIPAIS CARACTERÍSTICAS sessionStorage Mecanismo projetado com a finalidade de armazenar dados para transação em um documento HTML i.e., para cada novo documento HTML é criada uma área de armazenamento de dados independente; Assim é possível coexistirem múltiplas transações em diferentes janelas ou abas do navegador ao mesmo tempo, cada uma com seus conjuntos de dados independentes; Os dados pertencentes a um documento são excluídos quando o usuário fecha a janela ou a aba do navegador e não são transmitidos e nem se comunicam com outras janelas ou abas. PRINCIPAIS CARACTERÍSTICAS localStorage Mecanismo projetado com a finalidade de armazenar dados que persistem em diferentes janelas ou abas do navegador Permite que uma transação compartilhe em diferentes janelas ou abas do navegador o mesmo conjunto de dados; Os dados são excluídos quando o usuário fecha o navegador e são transmitidos e se comunicam com outras janelas ou abas enquanto o navegador estiver aberto; PRINCIPAIS CARACTERÍSTICAS sessionStorage e localStorage Os objetos sessionStorage e localStorage admitem métodos destinados a gravar um par chave-valor para um dado, recuperar o valor de um dado, remover o valor de um dado, remover todos os dados gravados anteriormente e recuperar o nome de um dado: setItem() getItem() removeItem() clear() key() Também contem a propriedade length; PRINCIPAIS CARACTERÍSTICAS Armazenagem com JSON Por padrão, o tipo de dado armazenado localmente é string Então, deve-se prestar atenção, pois números deverão ser devidamente convertidos no momento de recuperar um dado; JSON permite que se use texto para representar objetos JavaScript; Também permite armazenar localmente objetos complexos e recuperá-los posteriormente com o uso dos métodos JSON.stringify() JSON.parse() PRINCIPAIS CARACTERÍSTICAS Evento storage O evento storage ocorre sempre que há uma alteração na área de armazenamento de dados definida pelo método localStorage; As propriedades do evento storage são: key – string com o nome do dado que foi modificado, adicionado ou removido oldValue – valor de um dado que tenha sido modificado ou null se o dado foi adicionado pela primeira vez newValue – valor adicionado para um dado ou null se o valor foi removido storageArea – retorna o objeto localStorage url – endereço da página na qual se encontra o método que provocou o evento VERIFICAÇÃO DE SUPORTE Outra forma de verificar se o navegador possui suporte a Web Storage: if(typeof(Storage)!=="undefined") { //o browser suporta HTML 5 Web Storage } else { //o browser não suporta HTML 5 Web Storage } VERIFICAÇÃO DE SUPORTE Uma forma de verificar se o navegador que está sendo usado possui suporte a Web Storage é através do uso da biblioteca Modernizr if (!Modernizr.sessionstorage) { // código alternativo para sessionStorage } if (!Modernizr.localstorage) { // código alternativo para localStorage } if (!Modernizr.indexeddb) { // código alternativo para indexedDB } GERENCIANDO O STORAGE PELO BROWSER Alguns dos browsers mais atuais oferecem ferramentas de auxílio ao desenvolvedor Por exemplo, o Google Chrome permite visualizar os dados armazenados do web storage, bem como editá-los e removêlos. GERENCIANDO O STORAGE PELO BROWSER Com a página aberta no Chrome Pressione F12 Na parte inferior da janela abre uma aba com algumas opções Clique na opção “Resources” Em seguida, na estrutura de árvore da esquerda, clique na opção “Local Storage” e no subitem “Local Files” Os dados armazenados no web storage são apresentados do lado direito EXERCÍCIO PARA FIXAÇÃO Desenvolva uma aplicação web que tenha um formulário para coleta de dados Use programação em 3 (três) camadas: GUI – Responsável pela interface com o usuário e botões: incluir, alterar, excluir, consultar (*.html) Classes de negócio – definem o objeto (propriedades = dados do formulário; métodos set e get) (*.js) DAO – classe que contém os métodos para manipulação do BD (storage) (*.js) Pode usar localStorage Use JSON para serializar os dados em um par chave-valor EXERCÍCIO PARA FIXAÇÃO Referências Além das referências citadas no slide, procure tutoriais HTML 5 no Google Palavras-chave HTML5 localStorage HTML5 localStorage com JSON REFERÊNCIAS SILVA, M. S. jQuery Mobile: desenvolva aplicações web para dispositivos móveis com HTML 5, CSS3, Ajax, jQuery e jQuery UI. São Paulo: Novatec, 2012. Trabalhando com HTML5 Web Storage http://www.linhadecodigo.com.br/artigo/3537/trabalhando-com-html5-web-storage.aspx