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újoEste é 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.