Desenvolvimento - Java

CRUD com JSP

CRUD é o acrônimo da expressão do idioma Inglës, Create (Criação), Retrieve (Consulta), Update (Atualização) e Delete (Destruição). Este acrônimo é comumente utilizado definir as quatro operações básicas usadas em Banco de Dados Relacionais.

por Everton Coimbra de Araújo



Este é mais um artigo que submeto ao Linha de Código, dando sequência a uma série de material, resultado obtido através de pesquisas e laboratórios com meus alunos da UTFPR, campus Medianeira. Reforço o empenho e dedicação destes alunos, que foi extremamente comprometido com a pesquisa e aprendizado durante os semestres que mantivemos contato próximo nas disciplinas que a eles eu ministrava. Isso me motivou muito a fazer com que o resultado dos trabalhos deles aparecesse para o mundo e, nada melhor do que o Linha de Código para isso.

Neste artigo apresento o Rodrigo Baron, que pode ser contactado pelo email baron.rodrigo0@gmail.com. O Rodrigo foi meu aluno em algumas disciplinas de sua graduação e tem experiência  na Linguagem Java para desenvolvimento de aplicacoes distribuidas Desktop (JSE) e aplicacoes WEB (JEE), sendo este ultimo o de maior conhecimento e interesse. Desta forma, estejam a vontade em solicitar o curriculum dele.

Quando trabalho a disciplina de desenvolvimento web, fazendo uso de JSP, sempre apresento aos alunos algumas técnicas relacionadas à persistência de dados. Algumas destas técnicas não devem nunca serem utilizadas em um ambiente de produção, mas ajudam em muito aos alunos na introdução e prática ao desenvolvimento web. Este artigo é um destes casos. O Rodrigo trabalhou aqui a criação de um CRUD em páginas JSP, porém, não foram trabalhadas situações de reusabilidade ou uso de patterns, desta forma, o apresentado neste material não deve ser utilizado em produção, pois seu objetivo é apenas didático.

O que é CRUD?

CRUD é o acrônimo da expressão do idioma Inglës, Create (Criação), Retrieve (Consulta), Update (Atualização) e Delete (Destruição). Este acrônimo é comumente utilizado definir as quatro operações básicas usadas em Banco de Dados Relacionais.

A Figura 1 apresenta uma ilustração que representa o comportamento de uma aplicação web após uma requisição do usuário para alguma operação CRUD.

Figura 1: Execução de uma requisição CRUD

Iniciando o projeto

No Eclipse, crie um projeto WEB (WEB Dynamic Project). Neste novo projeto, na pasta WebContent crie um arquivo JSP com o nome de index.jsp, que será a pagina inicial da aplicação. Esta página inicial terá a responsabilidade de listar os dados existentes em uma tabela de uma base de dados, neste exemplo, usuários. Nesta listagem, cada coluna da tabela referencia um campo e cada linha referencia um registro da tabela, mas para a interface com o usuário, para este exemplo, é utilizada mais algumas colunas, que serão as operações para determinado registro. Essas operações serão para Atualizar ou Remover um determinado registro. Para disparar estas operações serão criados links, que quando o usuário clicar neles a operação específica seja disparada. Abaixo da tabela, que representa a listagem, é apresentado também um link para cadastrar novos usuários, como pode ser visto pela Figura 2.

Figura 2: Listagem de dados armazenados em uma tabela

Operação de Retrieve do CRUD

A Figura 3 traz a primeira parte da implementação da página, responsável pela geração da listagem exibida pela Figura 2. Note que neste início de arquivo é feito uso apenas de tags HTML. Estas tags são responsáveis pela criação da tabela e o cabeçalho das colunas.

Figura 3: Primeira parte da página geradora da listagem

Uma vez que se faz uso neste artigo apenas de recursos disponíveis para uma página JSP, serão utilizados scriptlets para criar a conexão com o banco e leitura dos dados, como pode ser verificado através da Figura 4.

Figura 4: Conexão e acesso aos dados

Com os atributos populados basta exibir. Note que o while que promove a leitura dos dados obtidos não contém o fechamento do bloco (a “chave” (})).

Na Figura 5, mais abaixo, a continuidade da tabela é apresentada entre as linhas 41 e 49. É possível verificar que é criada uma linha para a tabela para cada registro da tabela do banco de dados. Existe uma coluna além das dos dados, a última, que traz um link para outra página, a qual permitirá a edição/alteração dos dados da linha em questão. Note no link que são passados como parâmetros os dados que serão a chave para realizar as operações. As linhas 50 a 54 fecham o while e em seguida os recursos relacionados à conexão com o banco. As linhas após a 54 tratam do fechamento da tabela HTML e criação de um link para a página “adicionarUsuarios.jsp” e então o fechamento do HTML.

Figura 5: Conexão e acesso aos dados

Operação de Create do CRUD

É possível verificar que poderá ocorrer uma redundância de código se todas as ações forem realizadas como a ação retrieve, pois seria criada sempre uma nova conexão. Para não haver essa redundância, é possível criar uma pagina JSP que será responsável por realizar algumas tarefas. Mas antes, vamos a página “adicionarUsuario.jsp”.

Figura 6: Formulário para inserção de usuários

A Figura 6 apresenta o código para a página que monta o layout a ser apresentado ao usuário, que pode ser visualizado pela Figura 7. Além das colunas relacionadas à entrada de dados foi inserido um campo oculto (hidden– linha 21), um botão de “submit” e um link de cancelar.

Figura 7: Formulário para inserção de usuários

O campo oculto, apresentado na Figura 6, (type=”hidden”) serve apenas, neste caso, para a passagem da ação (value=”adicionar”), que será capturada pela página de Action. Esta página de action é a que recebe a submissão de um formulário HTML e tem sua implementação apresentada na Figura 8, com o nome usuarioAction.jsp.

Figura 8: Implementação da action que processará a requisição de inserção

O arquivo representado pela Figura 8 foi criado apenas com scriptlets, que importa as funcionalidades do “java.sql”. Foi criada uma conexão, uma string “sql” que será a instrução SQL enviada ao banco e um PreparedStatement  que é o responsável pela execução da instrução SQL no banco. É feita uma verificação em relação ao parâmetro chamado “ac", para verificar se o valor do mesmo é adicionar e, caso positivo todo o processamento para a inserção é realizado. Caso o parâmetro não for adicionar deverão ser testadas outras ações.

Operação de Update do CRUD

Figura 8: Implementação da action que processará a requisição de inserção

Na pagina “editarUsuario.jsp” (Figura 8), foi implementado um formulário da mesma forma que na pagina “adicionarUsuario.jsp”,mas cada input vai conter o valor pego na “index.jsp”. Observe que no link editar na index são passados estes valores aqui capturados e por fim, é criado campo oculto passando a ação “atualizar”.

Figura 9: Formulário de alteração de dados

Vamos tratar essa ação no “usuarioAction.jsp”, que é apresentado pela Figura 10.

Figura 10: Action para alteração

Da mesma forma que foi feito para inserir o usuário, foi feito para atualizá-lo, ou seja, é testado o valor do campo oculto e se o valor for “atualizar”, faz-se uso da conexão criada, utilizam-se os parâmetros que vieram da página na instrução SQL para update.

Operação de Delete do CRUD

E por fim o delete. Você já deve ter percebido que no link delete na página index.jsp (Figura 17), foi utilizado o “id” e criado um parâmetro “ac” com o valor “rm” direto no usuarioAction.

Figura 11: Link para remoção

O tratamento para esta operação é implementado e demonstrado pela Figura 12.

Figura 12: Action para remoção

Caso o valor do parâmetro “ac” seja “rm”, o id e utilizado na instrução DELETE .

Conclusão

Através do apresentado neste trabalho pôde ser verificado que é possível realizar operações com banco de dados fazendo uso apenas de paginas JSP. É importante ressaltar que o aqui apresentado tem objetivos acadêmicos, não sendo recomendado para situações de produção, pois com o surgimento de frameworks, como o JSF, esta técnica torna-se improdutivo.

REFERÊNCIAS

http://pt.wikipedia.org/wiki/CRUD

Acessado em 04 de fevereiro de 2010.

http://www.linhadecodigo.com.br/Artigo.aspx?id=853&pag=2

Acessado 05 de fevereiro de 2010.

Everton Coimbra de Araújo

Everton Coimbra de Araújo - Desde 1987 atua na área de treinamento e desenvolvimento. Como Mestre em Ciência da Computação, é professor da UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ, Campus Medianeira, onde leciona disciplinas relacionadas ao desenvolvimento de aplicações web, com Java e .NET.

É autor dos livros Desenvolvimento para WEB com Java, Orientação a Objetos com Java - Simples, Fácil e Eficiente, Algoritmo - Fundamento e Prática em sua terceira edição e dos livros Delphi - Implementação e Técnicas para Ambientes Virtuais e C++ Builder - Implementação e Técnicas para Ambientes Virtuais. Todos pela VisualBooks. Pode ser contactado através do e-mail everton@utfpr.edu.br ou evertoncoimbra@gmail.com.