Arquivo para categoria ‘Educação’.

Licenciamento de software

As licenças de software e sua forma de aplicação são tópicos a serem abordados ao discutir licenciamento de software.

Formas (Opções de Licenciamento)

  • Licença perpétua de aquisição
  • Licença de uso
  • Licença de manutenção
  • Licença em conjunto
  • Aluguel (ASP)
  • Serviço (SaaS)
  • Autofinanciamento
  • Co-source

Licenças

  • Proprietária
  • Software Livre (GPL)
  • Open Source
  • BSD
  • MIT
  • Domínio Público
  • Freeware
  • Shareware
  • Adware
  • Postalware
  • Socialware
  • Trial
  • Demo

Referências Bibliográficas

SALGUEIRO, V. As nove diferentes opções de licenciamento de software. Disponível em <http://www.vicksao.com/INS/windowsXP/aula02.pdf>. Acesso em 18 Fev. 2010

Boas práticas em instalação de aplicativos ou softwares

Ao instalar aplicativos devemos atentar para algumas práticas que podem trazer bons resultados. Isto é especialmente importante no ambiente corporativo ou ao realizar atividades de suporte

Vamos a elas:

  • Seguir os preceitos da Lei do Software
  • Criar normas para instalação, configuração e atualização de software
  • Documentar os procedimentos de instalação, configuração e atualização de software
  • Realizar cópias de segurança preventivas
  • Usar pontos de restauração em sistemas operacionais com suporte a isso
  • Utilizar clonagem, quando possível
  • Criar normas de permissão de acesso a softwares
  • Criar rotinas de teste

Autor: Vicente Salgueiro

Avanços na Educação com iniciativa e tecnologia brasileira

Será lançada, em janeiro de 2010, uma novidade tecnológica genuinamente brasileira que promete avanços no processo de ensino-aprendizagem do país e, possivelmente, do mundo. Trata-se de um novo ambiente virtual, chamado Com8s – uma alusão à palavra inglesa “comates”, que significa colegas – que centraliza diversos aplicativos web em um único lugar, melhorando a comunicação e interação entre professores e alunos.

Com8s - Tecnologia brasileira à serviço da Educação

Com8s - Tecnologia brasileira à serviço da Educação

A ferramenta, que também pode ser utilizada por qualquer usuário da Internet, é voltada para o segmento educacional e permite que professores e alunos compartilhem e editem conteúdos, criem grupos de estudo e fóruns, realizem provas, pesquisas, enquetes e videoconferências em tempo real, a qualquer momento, fora da sala aula. Desta forma, estudantes e docentes podem intensificar seus relacionamentos, visto que a maioria dos jovens passa boa parte do tempo navegando na Internet.

Interface do Com8s

Interface do Com8s

A novidade é um salto ousado no âmbito tecnológico e educacional do país, pois, sendo gratuita, incentiva a democratização do acesso aos serviços web de qualidade, além de aproximar os alunos dos seus mestres. Atualmente é possível cadastrar-se no site do Com8s, no entanto, somente no final de janeiro ele estará disponível para utilização, já em diversos idiomas.

Plugins jQuery

É possível extender as funcionalidades jQuery com o uso de milhares de plugins disponíveis para este framework.

Em minha série de artigos sobre Ajax e jQuery, você pode acompanhar como se utiliza jQuery. Os usos mais comuns desta biblioteca podem ser implementados com o uso do jQuery UI.

Se você deseja algo mais específico, pode desenvolver scripts com jQuery para os mais diversos fins. Mas muitas de suas implementações já podem ter sido realizadas por alguém há algum tempo. E muitos dos desenvolvedores jQuery escrevem suas implementações de forma a poderem ser utilizadas por terceiros, na forma de plugins. E você pode obtê-los na página de plugins do jQuery.

A forma de aplicar estes plugins não é uniforme e depende da leitura da documentação fornecida por cada desenvolvedor. Você também deve tomar cuidado com a compatibilidade entre diferentes plugins e entre os plugins e sua versão de jQuery.

Você pode encontrar plugins em diversas categorias. Entre os compatíveis com a versão atual (1.3.x) nós temos:

  • Ajax (históricos, upload de múltiplos arquivos, requisições a outros domínios)
  • Animação e efeitos
  • Arrastar-e-soltar
  • Dados (JSON e XML, principalmente)
  • DOM
  • Eventos
  • Extensões jQuery (alterações do funcionamento padrão)
  • Formulários (como validações)
  • Integração com outras linguagens (como Perl e PHP)
  • Interface (cantos arredondados, degradês)
  • Janelas (Popups, caixas de diálogo, janelas flutuantes, lightboxes)
  • Javascript (facilidades para Orientação a Objetos, Strings e vetores)
  • Leiaute (manipulação de tamanho de fontes e outros elementos)
  • Menus
  • Mídias (Flash, galerias de imagens, áudio, mapas)
  • Navegação (abas, sumários)
  • Otimização de navegadores (geralmente correções de bugs do Internet Explorer)
  • Tabelas (Ordenação, filtros, procura)
  • Widgets (componentes em geral)

Visite a página de plugins do jQuery e conheça alguns destes plugins para ter noção de quais funcionalidades podem ser implementadas com eles. Se desejar, cadastra-se como desenvolvedor e crie seus próprios plugins.

jQuery UI: Interface de usuários com jQuery

O jQuery UI é formado por um conjunto de scripts que permite abstrair aspectos de interação com usuário, animações e efeitos, utilizando recursos padronizados.

Você deve ter acompanhado meus artigos sobre jQuery e Ajax, tendo visto que ele fornece recursos diversos para seleção de elementos, manipulação de elementos e de atributos, tratamento de CSS e de eventos, além da produção de efeitos e operações assíncronas de Ajax.

As operações mais comuns que são criadas com jQuery para enriquecer a experiência com o usuário são

  • Arrastar-e-soltar
  • Redimensionamento
  • Seleção
  • Ordenação

O jQuery também é utilizado para criar certos recursos visuais como

  • Efeitos sanfona
  • Seleções de data
  • Caixas de diálogo
  • Barras de progresso
  • Controles deslizantes
  • Abas

Outros efeitos em geral completam a cesta de usos mais comuns de jQuery na criação de interface com o usuário.

Felizmente é possível criar estes efeitos e recursos de forma ainda mais simplificada ao utilizar o jQuery UI.

Para utilizá-lo, você deve começar por fazer o download do jQuery UI no seu website específico. Selecione a versão corrente do jQuery UI e as interações, componentes e efeitos desejados, customizando assim o download para seu projeto. Selecione à direita o tema CSS desejado. Os componentes desta ferramenta são acompanhados por diversas opções de CSS à sua escolha. Você pode consultar a galeria de temas jQuery UI ou mesmo modificar estes temas. Se desejar trabalhar de forma mais prática você também pode utilizar a API AJAX de bibliotecas do Google para inserir o jQuery UI standard em seu projeto.

Para começar, faça o download com um tema à sua escolha e descompacte-o. Você encontrará um arquivo HTML de demonstração, além dos arquivos necessários para uso de jQuery UI com o tema selecionado.

Maiores detalhes de como utilizar esta ferramenta pode ser obtida no website. Veja como utilizar

Você ainda pode seguir o @jqueryui no Twitter.

EducaRede lança portal global

O EducaRede é o principal programa de responsabilidade social do Grupo Telefônica na área de educação, com diversas ações e projetos que visam contribuir para a melhoria da qualidade da educação por meio do uso das Tecnologias de Informação e Comunicação (TICs).

O portal EducaRede foi criado há sete anos no Brasil e hoje conta com cerca de 200 mil usuários cadastrados no país, entre educadores, pais e alunos. A cada ano, o portal recebe, em média, 2,3 milhões de visitas. Nos oito países que integram o programa, o programa EducaRede reúne mais de 32 milhões de participantes. São aproximadamente 267 mil pessoas registradas em 79 comunidades virtuais, que desenvolvem ações de natureza colaborativa.

Unificação

Os portais EducaRede de oito países da América ibérica foram unificados e criam uma rede de conhecimento e aprendizagem em nível global. A iniciativa abre novas fronteiras para a interação social e o uso das Tecnologias de Informação e Comunicação (TICs) em favor da educação.

A partir de 26 de novembro de 2009, os cerca de 200 mil educadores, pais e alunos brasileiros cadastrados no portal EducaRede poderão vivenciar uma experiência global em educação e tecnologia. A Fundação Telefônica começa a unificar seus portais nos oito países da Iberoamérica onde o programa é mantido – Argentina, Brasil, Chile, Colômbia, Espanha, México, Peru e Venezuela –, criando uma única plataforma global. O lançamento no Portal Global EducaRede foi feito em Madri pelo vice?presidente executivo da Fundação Telefônica na Espanha, Javier Nadal, durante o V Congresso Internacional EducaRede. A iniciativa permitirá que mais de 32 milhões de pessoas, participantes do programa nesses países, possam trocar informações e conhecer diferentes projetos educacionais, compartilhar novidades pedagógicas e tecnológicas, aprender e interagir com professores, pais e estudantes de diferentes nacionalidades, abrindo novas perspectivas na construção do conhecimento por meio da colaboração.

O Portal Global é a concretização de mais de dois anos de estudos, testes e debates entre os países envolvidos, colocando o EducaRede em sintonia com os mais avançados conceitos de formação de redes virtuais de conhecimento e aprendizagem, nas quais conhecimento, ideias e tecnologia são compartilhadas livremente na web, com o objetivo de melhorar a qualidade da educação.

O que vai mudar?

O acesso ao Portal Global EducaRede continua acessível pela mesma URL do programa até o dia 15 de dezembro. Neste período o internauta ainda irá visualizar a home page do Brasil, na qual haverá indicações e links para os conteúdos do Portal Global. A partir dessa data, o usuário entrará diretamente na página inicial do Portal Global e, ao acessar o site, será identificado pelo IP e direcionado automaticamente ao idioma português. O Portal Global EducaRede será bilíngue e terá conteúdos em português e espanhol. Por enquanto, talvez você encontre conteúdos apenas em um ou outro idioma, mas, com o tempo, todos os conteúdos disponíveis estarão publicados nas duas línguas, especialmente aqueles correspondentes a projetos desenvolvidos em conjunto pelo Brasil e pelos países de língua espanhola.

Algumas funções estarão em período de adaptação, mas a previsão é de que toda a migração seja concluída até março. Um dos principais projetos em andamento no Brasil, a comunidade Minha Terra, passará a ter caráter global. Nesse caso, o usuário brasileiro terá a oportunidade de conhecer não apenas a realidade regional brasileira, mas a de outros países também. O contrário também ocorrerá, ou seja, projetos argentinos ou chilenos, por exemplo, poderão ser desenvolvidos no Brasil.

Se desejar, siga a @EducaRede no Twitter.

Requisições Ajax com jQuery

Qualquer bom projeto de website na atualidade deve levar em consideração a possibilidade de uso de requisições assíncronas, ou seja, Ajax. Para escrever estas requisições, o ideal é utilizar um framework como jQuery. Vejamos o que jQuery disponibiliza para tratamento deste tipo de requisições

Requisições Ajax

  • jQuery.ajax(opções):XMLHttpRequest. Carrega uma página remota utilizando uma requisição HTTP.
  • load(url, dados, callback):jQuery. Carrega conteúdo de um arquivo remoto e o injeta no DOM.
  • jQuery.get(url, dados, callback, tipo):XMLHttpRequest. Carrega uma página remota utilizando uma requisição HTTP com método GET.
  • jQuery.getJSON(url, dados, callback):XMLHttpRequest. Carrega um objeto JSON utilizando uma requisição HTTP.
  • jQuery.getScript(url, callback):XMLHttpRequest. Carrega e executa um script em Javascript utilizando uma requisição HTTP com método GET.
  • jQuery.post(url, dados, callback, tipo):XMLHttpRequest. Carrega uma página remota utilizando uma requisição HTTP com método POST.

Eventos Ajax

  • ajaxComplete(callback):jQuery. Define uma função a ser executada quando uma requisição Ajax é completada.
  • ajaxError(callback):jQuery. Define uma função a ser executada quando uma requisição Ajax falha.
  • ajaxSend(callback):jQuery. Define uma função a ser executada antes de uma requisição Ajax ser enviada.
  • ajaxStart(callback):jQuery. Define uma função a ser executada quando uma requisição Ajax é iniciada.
  • ajaxStop(callback):jQuery. Define uma função a ser executada quando todas requisições Ajax tiverem terminado.
  • ajaxSuccess(callback):jQuery. Define uma função a ser executada quando uma requisição Ajax é completada com sucesso.

Miscelânea

  • jQuery.ajaxSetup(opções). Define configurações globais para as requisições Ajax.
  • serialize():String. Cria uma string com um conjunto de valores de campos de formulário.
  • serializeArray():Array<Objeto>. Semelhante ao serialize, mas retorna um objeto JSON.

Nota: A estrutura JSON retornada é um objeto, não uma string. É necessário utilizar um plugin ou biblioteca de terceiros para tratá-lo.

Veja alguns exemplos de utilização na página de Ajax na documentação do jQuery.

Tratamento de eventos com jQuery

Este artigo trata das funções do jQuery relacionadas com tratamento de eventos. Estas funções, conjuntamente com as funções jQuery de seleção, são as mais importantes para desenvolvimento de interfaces de aplicações web. Veja os outros artigos sobre jQuery.

Carga da página

  • ready(função):jQuery. Define uma função a ser executada quado o DOM estiver pronto para ser navegado e manipulado. Pode ser interpretado como o momento no qual a página foi carregada, sendo utilizada como equivalente ao evento onLoad.

Controle de eventos

  • bind(tipo, [dados], função):jQuery. Relaciona uma função a um ou mais eventos para cada elemento selecionado. É admissível o uso dos eventos blur, focus, load, resize, scroll, unload, beforeunload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error e ready.
  • one(tipo, [dados], função):jQuery. Relaciona uma função a um ou mais eventos para cada elemento selecionado. Entretanto esta função será executada somente uma vez.
  • trigger(evento, [dados]):jQuery. Dispara um evento em cada elemento selecionado.
  • triggerHandler(evento, [dados]):Object. Dispara os eventos associados a um elemento. Contudo, as ações-padrão do nevegador não são executadas.
  • unbind([tipo], [função]):jQuery. Oposto ao bind.

Eventos em ação

  • live(tipo, função):jQuery. Relaciona uma função a um evento para todos os elementos selecionados, tanto atuais como futuros.
  • die(tipo, função):jQuery. Oposto ao live.

Auxiliares de Interação

  • hover(over, out):jQuery. Tratamento do evento de passagem do mouse sobre um elemento.
  • toggle(função, função2, função3,função4,…):jQuery. Troca entre duas ou mais funções chamadas para um elemento.

Auxiliares de eventos

  • blur():jQuery. Dispara o evento blur (perda de foco) para cada elemento selecionado.
  • blur(função):jQuery. Associa uma função ao evento blur (perda de foco) para cada elemento selecionado.
  • change():jQuery. Dispara o evento change (alteração) para cada elemento selecionado.
  • change(função):jQuery. Associa uma função ao evento change (alteração) para cada elemento selecionado.
  • click():jQuery. Dispara o evento click (clique) para cada elemento selecionado.
  • click(função):jQuery. Associa uma função ao evento click (clique) para cada elemento selecionado.
  • dblclick():jQuery. Dispara o evento dblclick (duplo clique) para cada elemento selecionado.
  • dblclick(função):jQuery. Associa uma função ao evento dblclick (duplo clique) para cada elemento selecionado.
  • error():jQuery. Dispara o evento error (erro) para cada elemento selecionado.
  • error(função):jQuery. Associa uma função ao evento error (erro) para cada elemento selecionado.
  • focus():jQuery. Dispara o evento focus (foco) para cada elemento selecionado.
  • focus(função):jQuery. Associa uma função ao evento focus (foco) para cada elemento selecionado.
  • keydown():jQuery. Dispara o evento keydown (pressão sobre uma tecla) para cada elemento selecionado.
  • keydown(função):jQuery. Associa uma função ao evento keydown (pressão sobre uma tecla) para cada elemento selecionado.
  • keypress():jQuery. Dispara o evento keypress (pressão sobre uma tecla e sua liberação) para cada elemento selecionado.
  • keypress(função):jQuery. Associa uma função ao evento keypress (pressão sobre uma tecla e sua liberação) para cada elemento selecionado.
  • keyup():jQuery. Dispara o evento keyup (liberação de tecla) para cada elemento selecionado.
  • keyup(função):jQuery. Associa uma função ao evento keyup (liberação de tecla) para cada elemento selecionado.
  • load(função):jQuery. Associa uma função ao evento load (carregamento) para cada elemento selecionado.
  • mousedown(função):jQuery. Associa uma função ao evento mousedown (pressão do botão do mouse) para cada elemento selecionado.
  • mouseenter(função):jQuery. Associa uma função ao evento mouseenter (mouse passa a estar sobre um elemento) para cada elemento selecionado.
  • mouseleave(função):jQuery. Associa uma função ao evento mouseleave (mouse deixa de estar sobre um elemento) para cada elemento selecionado.
  • mousemove(função):jQuery. Associa uma função ao evento mousemove (movimentação do mouse) para cada elemento selecionado.
  • mouseout(função):jQuery. Associa uma função ao evento mouseout (mouse deixa de estar sobre um elemento) para cada elemento selecionado. Mouseout dispara quando o ponteiro do mouse “entra” ou “sai” de um elemento-filho, enquanto o mouseleave não.
  • mouseover(função):jQuery. Associa uma função ao evento mouseover (mouse passa a estar sobre um elemento) para cada elemento selecionado. Mouseover dispara quando o ponteiro do mouse “entra” ou “sai” de um elemento-filho, enquanto o mouseenter não.
  • mouseup(função):jQuery. Associa uma função ao evento mouseup (liberação do botão do mouse) para cada elemento selecionado.
  • resize(função):jQuery. Associa uma função ao evento resize (redimensionamento) para cada elemento selecionado.
  • scroll(função):jQuery. Associa uma função ao evento scroll (rolagem) para cada elemento selecionado.
  • select():jQuery. Dispara o evento select (seleção) para cada elemento selecionado.
  • select(função):jQuery. Associa uma função ao evento select (seleção) para cada elemento selecionado.
  • submit():jQuery. Dispara o evento submit (envio de dados de formulário) para cada elemento selecionado.
  • submit(função):jQuery. Associa uma função ao evento submit (envio de dados de formulário) para cada elemento selecionado.
  • unload(função):jQuery. Associa uma função ao evento unload (descarregamento) para cada elemento selecionado.

Exemplos de uso destas funções podem ser encontrados na página de eventos da documentação do jQuery.

jQuery e CSS

Daremos continuidade à série de artigos sobre jQuery tratando de sua forma de manipulação de CSS.

Anteriormente vimos os artigos

Vejamos portanto os métodos voltados ao uso de  CSS:

CSS em geral

  • css(nome):String. Retorna a propriedade do estilo do primeiro elemento selecionado.
  • css(propriedades):jQuery. Define pares de chaves e valores de propriedades de estilo para todos elementos selecionados
  • css(nome, valor):jQuery. Define um par de chave e valor de propriedade de estilo para todos elementos selecionados.

Posicionamento

  • offset():Object{top,left}. Retorna um objeto com o offset (distâncias) do primeiro elemento selecionado relativo ao documento, em píxeis.
  • offsetParent():jQuery. Não será abordado neste artigo.
  • position():Object{top,left}. Retorna as posições de topo e esquerda de um elemento em relação ao elemento-pai.
  • scrollTop():Integer. Obtém a posição do scrool (relativo à barra de rolagem vertical) do primeiro elemento selecionado.
  • scrollTop(valor):jQuery. Define a posição do scrool (relativo à barra de rolagem vertical) do primeiro elemento selecionado.
  • scrollLeft():Integer. Obtém a posição do scrool (relativo à barra de rolagem horizontal) do primeiro elemento selecionado.
  • scrollLeft(valor):jQuery. Define a posição do scrool (relativo à barra de rolagem horizontal) do primeiro elemento selecionado.

Altura e Largura

  • height():Integer. Obtém a altura do primeiro elemento selecionado.
  • height(valor):jQuery. Define a altura do primeiro elemento selecionado.
  • width():Integer. Obtém a largura do primeiro elemento selecionado.
  • width(valor):jQuery. Define a largura do primeiro elemento selecionado.
  • innerHeight():Integer. Obtém a altura interna (excluindo a borda e incluindo o padding) do primeiro elemento selecionado.
  • innerWidth():Integer. Obtém a largura interna (excluindo a borda e incluindo o padding) do primeiro elemento selecionado.
  • outerHeight(boolean):Integer. Obtém a altura externa (incluindo a borda e o padding, por padrão) do primeiro elemento selecionado. Não serão incluídas outras medidas se for utilizado o parâmetro false.
  • outerWidth(boolean):Integer. Obtém a largura externa (incluindo a borda e o padding, por padrão) do primeiro elemento selecionado. Não serão incluídas outras medidas se for utilizado o parâmetro false.

Os exemplos destas funções podem ser consultados na página de documentação de CSS em jQuery.

Acesso a bancos de dados com JSP

Neste artigo veremos como trabalhar com bancos de dados e JSP.

Esta aplicação poderia ser um exemplo de uma aplicação simples baseada em uso exclusivo de páginas JSP. Mas isto significaria não aproveitar os recursos de orientação a objetos proporcionada pelo Java.

Vamos então fazer um aplicativo com uma arquitetura MVC (Model-View-Controller). O NetBeans será utilizado como IDE para este desenvolvimento e o SGBDR será o Java DB.

Funcionalidades

Nosso aplicativo de exemplo é uma mera agenda de contatos

Diagrama de Caso de Uso

Diagrama de Caso de Uso

O usuário pode consultar sua lista de amigos, incluir novos, alterar ou excluir os cadastrados

Arquitetura

O desenvolvimento desta aplicação é dividido em três partes

  • Modelo: Classes utilizadas para representação dos dados
  • Controle: Classe que contém as regras da aplicação
  • Visão: Páginas JSP com a interface da aplicação

Banco de Dados

Comecemos por criar um banco de dados. Vá à aba de serviços do NetBeans, clique com o botão direito do mouse no ícone do Java DB e selecione “Criar Banco de Dados”. Selecione um nome como “amigos”, o nome do usuário administrativo do banco e sua senha. Clique com o botão direito do mouse sobre o ícone do banco de dados recém-criado e selecione “Conectar”. Expanda o nó deste banco de dados, clique com o botão direito do mouse sobre “Tabelas” e selecione “Criar tabela”. Crie uma tabela com campos de identificação (numérico), prenome, sobrenome, telefone (este três são campos de texto) e data de nascimento (com formato de data).

Modelo

Pacote modelo

Pacote modelo

O modelo será composto por quatro elementos

  • Conexao: Classe que tem apenas um método denominado “obterConexao” que retorna um java.sql.Connection referente à conexão com o banco de dados criado anteriormente
  • Contato: Um JavaBeans que representará os registros da tabela de contatos. Além do necessário para configurar um JavaBeans, teremos o método “valido” para indicar se os dados são consistentes com o que se espera e um método para retornar a data de nascimento convertida para String. Foi adicionado também um atributo “mensagem” para armazenar mensagens de erro caso os valores não sejam válidos.
  • DAO: Uma interface com assinatura dos métodos para atualizar, incluir e excluir registros na tabela, além de retornar um contato ou uma lista com todos os contatos.
  • ContatoDAOImp: Uma classe que implementa DAO e um método “novoID” para calcular o valor da chave da primária antes de incluir um novo contato na tabela. As instruções SQL são construídas com PreparedStatement para facilitar a formatação dos dados e reduzir a possibilidade de ataques do tipo SQL Injection.

Controle

pacote Controle

pacote Controle

O pacote de controle tem uma classe chamada “Controle“. Esta classe é um Servlet.

Escreveremos nela um método para converter uma String de uma data em um objeto java.util.Date.

No processamento da requisição (método “processRequest”) iremos examinar um parâmetro que denominaremos “acao”. Este parâmetro indicará o que desejamos fazer no momento. Sempre que possível este processamento irá criar um objeto “Contato” com os dados recebidos nos outros parâmetros. Dependendo do parâmetro “acao”, o processamento pode tomar distintos caminhos. Vejamos as possibilidades

  • Inserção. Se os dados do objeto Contato forem válidos, ele invocará o método de inserção do “ContatoDAOImp” e recuperará uma lista de contatos armazenados. Se houver ao menos um registro na tabela será chamado o arquivo “listagem.jsp” ou, caso contrário, o arquivo “insercao.jsp”. Se os dados não forem válidos, será invocada a página “erro.jsp”
  • Exclusão. Ele invocará o método de remoção de registro do ”ContatoDAOImp” e seguirá os mesmos passos realizados após uma inserção.
  • Solicitação de alteração. Um objeto “Contato” é passado para “atualizar.jsp” para que possa ser criado um formulário HTML para obtenção dos dados a alterar.
  • Alteração. Segue o mesmo princípio da inserção, apenas invocando o método de alteração no lugar do da inserção.
  • Padrão. A ação padrão consiste em recuperar a lista de contatos e exibir “listagem.jsp” ou “insercao.jsp”.

Ao invocar “listagem.jsp”, faz-se necessário obter um java.util.List com todos os contatos, definí-lo como atributo da requisição (método “request.setAttribute”). Usamos os métodos “request.getRequestDispatcher” para definir a página de destino e “forward” em um objeto RequestDispatcher para desviar a execução para a página selecionada.

O desvio para a página de erro ou com o formulário de atualização cria um objeto com a interface HttpSession para atribuir um objeto “Contato” à sessão e transfere a execução para a página desejada.

Visão

A interface da aplicação é baseada em arquivos JSP. São eles

  • index. Página inicial da aplicação e que contém apenas um link para o servlet “Controle”
  • listagem. Exibe uma tabela com os contatos armazenados e um formulário para inclusão de novos contatos. Para reduzir a quantidade de código, utilizou-se JSTL. JSTL é uma biblioteca de tags e seu uso facilita a produção de páginas JSP.
  • insercao. Este arquivo contém o formulário para inserção de contatos e é utilizado quando não há contatos no banco de dados.
  • atualizar. Exibe um formulário com os dados de um contato para sua alteração. Para utilizar os atributos de um objeto “Contato”, é feita referência a um JavaBeans.
  • erro. Utiliza o mesmo recurso da página “atualizar” para exibir a mensagem de erro produzida quando os dados do contato não são válidos.

Além dos cinco arquivos JSP citados foi utilizado um arquivo CSS e um arquivo com o formulário de inclusão que é incorporado às páginas “insercao.jsp” e “listagem.jsp”.

Obtenha as apresentações deste artigo. Você pode fazer o download da apresentação sobre JSP e banco de dados para exibição e a apresentação sobre JSP e banco de dados com notas.