CRUD GERAL E LOGIN Sumário CRUD ............................................................................................................................................................................. 2 O que é CRUD? .......................................................................................................................................................... 2 Criando as classes que fazem parte do CRUD ........................................................................................................... 2 Busca Dados Geral ...................................................................................................... Erro! Indicador não definido. Insert Geral................................................................................................................................................................ 3 Update Geral ............................................................................................................... Erro! Indicador não definido. Delete Geral .............................................................................................................................................................. 6 Recuperar ID do último registro inserido.................................................................... Erro! Indicador não definido. Lista Geral.................................................................................................................... Erro! Indicador não definido. Construindo um arquivo de CRUD, exemplo crudnoticia.JSP ......................................... Erro! Indicador não definido. 1 CRUD GERAL E LOGIN CRUD Uma área administrativa compreende em áreas para gerenciar conteúdos que existem no banco de dados, no nosso projeto temos duas tabelas no banco de dados, TEXTOS e NOTICIAS. Então iremos criar nesse capítulo um CRUD que atenda a todas as áreas administrativas internas, com isso, você sozinho conseguirá fazer o da tabela de usuários que terá acesso a esse site. O que é CRUD? Mas falamos de CRUD, o que seria um CRUD? Consiste numa única aplicação que LISTE, INSERA, ALTERE e EXCLUA registros no banco de dados. A abreviação CRUD mapeada para o padrão ISO/SQL é: Create INSERT Retrieve (Read) SELECT Update UPDATE Destroy (Delete) DELETE Ou seja, nessa aplicação teremos as seguintes instruções SQL: SELECT, INSERT, UPDATE e DELETE. Sendo assim, o SELECT será a listagem dos registros paginados, algo que já fizemos anteriormente. O INSERT será inserção de registros no banco de dados através de um formulário. O UPDATE será alteração desses registros no banco de dados também através de um formulário. E o DELETE será a exclusão desse registro no banco de dados. Criando as páginas que fazem parte do CRUD Crie uma pasta que irá abrigar o CRUD da tabela que for trabalhar. Exemplo notícias. Dentro dela tem que ter 4 arquivos. Index.jsp = responsável por listar os registros da tabela e dar acesso para o cadastro, alteração e exclusão do registro. Cadastra.jsp = responsável por cadastrar no banco de dados altera.jsp = responsável por alterar o registro no banco de dados excluir.jsp = responsável por excluir o registro no banco de dados 2 CRUD GERAL E LOGIN I NDEX.JSP Nesse arquivo iremos listar os registros para alteração e exclusão e também teremos o botão incluir. Segue abaixo o script detalhado String content = "";//cria variável contente que ira armazenar a lista content = "<h2>Notícias</h2>"; content += "<div align=\"center\"><input type=\"button\" class=\"botoes\" value=\"Cadastrar\" onclick=\"location.href='cadastra.jsp'\" /></div>"; //codigo acima referente ao botão de incluir registros ele aponta para o arquivo de inserção de dados content += "<table width=\"100%\" border=\"0\">"; content += "<tr>"; content += "<th>Titulo</th>"; content += "<th></th>"; content += "<th></th>"; content += "</tr>"; //código acima cria a estrutura da tabela rs = statement.executeQuery("SELECT * FROM noticia order by not_id DESC"); //código acima é uma string do banco de dados String zebra = "zebra1"; while (rs.next()) { if(zebra == "zebra1"){ zebra = "zebra2"; }else{ zebra = "zebra1"; } // esse script acima, visa listar os dados zebrado 3 CRUD GERAL E LOGIN content += "<tr>"; content += "<td class=\""+zebra+"\">" + rs.getString("not_titulo")+ "</td>"; content += "<td class=\""+zebra+"\"><a href=\"altera.jsp?not_id=" + rs.getInt("not_id")+ "\">Alterar</a></td>"; content += "<td class=\""+zebra+"\"><a href=\"excluir.jsp?not_id=" + rs.getInt("not_id")+ "\">Excluir</a></td>"; content += "</tr>"; //esse trecho é responsável por listar os registros e criar o link para o arquivo de alteração e exclusão } //saio do loop e fecho a tabela content += "</table>"; rs.close(); %> <%@ include file="/template/admin.html" %> //incluo o template CADASTRA.JSP Nesse arquivo iremos construir dois trechos de script, a primeira parte onde o tem o formulário e depois a inserção no banco de dados. Ao clicar no botão de cadastrar irá para o formulário abaixo. Esse formulário estará dentro da pasta templates, e terá variáveis no value de cada campo que no cadastro serão vazias e na alteração virão preenchidas. Portanto é necessário declarar variável por variável tanto no cadastra quanto no altera. Segue o código comentado: <%@ include file="/inc/conecta.jsp" %> <% //abaixo declaramos variaveis por variaveis do banco de dados String content = ""; String not_titulo = ""; String not_subtit = ""; 4 CRUD GERAL E LOGIN String not_data = ""; String not_texto = ""; String not_fonte = ""; String not_key = ""; String cod = "cadastra";//atribuo valor ao cod que fará formulário funcionar tanto para inserir quanto alterar int not_id = 0; if(request.getParameter("cod")!=null ) { /*verifico se a variavel cod foi passada na URL, se sim Crio a string sql que irá inserir os registros no banco de dados Depois preparo a string para inserção no banco através de prepareStatement e executeUpdate() */ String sql = "insert into noticia (not_titulo,not_subtit,not_data,not_texto,not_fonte,not_key) VALUES ('"+request.getParameter("not_titulo")+"','"+request.getParameter("not_subt it")+"','"+request.getParameter("not_data")+"','"+request.getParameter("not _texto")+"','"+request.getParameter("not_fonte")+"','"+request.getParameter ("not_key")+"')"; PreparedStatement st = connection.prepareStatement(sql); st.executeUpdate(); //as linhas abaixo sao para redirecionar para a lista String site = new String("index.jsp"); response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site); statement.close(); } %> //inclui template de formulário <%@ include file="/template/cadnoticia.html" %> ALTERA.JSP Assim que clicar em alterar na lista entrará no formulário já preenchido com os dados do banco de dados, como mostra a figura abaixo. 5 CRUD GERAL E LOGIN Assim como o arquivo de inserção iremos construir dois trechos de script, a primeira parte onde o tem o formulário e depois a alteraçãono banco de dados. Ao clicar no botão de cadastrar irá para o formulário abaixo. Repare que o script abaixo é bem similar ao script da inserção, porém construindo a instrução updade no banco de dados. Veja abaixo como são os mesmos princípios com pequenas alterações. String content = ""; String not_titulo = ""; String not_subtit = ""; String not_data = ""; String not_texto = ""; String not_fonte = ""; String not_key = ""; String cod = ""; int not_id = 0; if(request.getParameter("cod")!=null ) { //até aqui os scripts são indenticos, somente abaixo a query de update String sql = "UPDATE noticia SET not_titulo='"+request.getParameter("not_titulo")+"',not_subtit='"+request.g etParameter("not_subtit")+"',not_data='"+request.getParameter("not_data")+" ',not_texto='"+request.getParameter("not_texto")+"',not_fonte='"+request.ge tParameter("not_fonte")+"',not_key='"+request.getParameter("not_key")+"' WHERE not_id='"+request.getParameter("not_id")+"'"; PreparedStatement st = connection.prepareStatement(sql); st.executeUpdate(); String site = new String("index.jsp"); response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site); statement.close(); //nesse script temos o else }else{ 6 CRUD GERAL E LOGIN //que ira criar variaveis com a consulta abaixo do banco de dados, por isso o formulário vem preenchido rs = statement.executeQuery("SELECT * FROM noticia where not_id='"+request.getParameter("not_id")+"'"); rs.next(); not_titulo = rs.getString("not_titulo"); not_subtit = rs.getString("not_subtit"); not_data = rs.getString("not_data"); not_texto = rs.getString("not_texto"); not_fonte = rs.getString("not_fonte"); not_key = rs.getString("not_key"); not_id = rs.getInt("not_id"); cod = "altera"; } %> <%@ include file="/template/cadnoticia.html" %> Formulário de Inserção e Alteração Num único formulário dá para fazer a inserção e alteração segue abaixo o script explicado. A variável COD irá definir se será alteração ou cadastro. Todos os campos tem VALUE preenchido com as variáveis declaradas, dessa maneira se o formulário for de cadastro as variáveis vem vazias, alteração preenchidas. E um último campo do tipo HIDDEN com o ID do registro a ser alterado e caso seja inserção virá com o valor 0. <form action="<%= cod %>.jsp?cod=<%= cod %>" method="post"> <fieldset> <label>Título:</label> <input type="text" id="not_titulo" name="not_titulo" value="<%=not_titulo%>" size="50" class="campos" /><br /> <label>Sub-titulo:</label> <input type="text" id="not_subtit" name="not_subtit" value="<%=not_subtit%>" class="campos" size="50" /><br /> <label>Data:</label> <input type="text" id="not_data" name="not_data" size="12" value="<%=not_data%>" mexlength="12" /> <br /> <label>Texto:</label> <textarea name="not_texto" id="not_texto" cols="50" rows="5" class="campos"><%=not_titulo%></textarea><br /> <label>Fonte:</label> <input type="text" id="not_fonte" name="not_fonte" class="campos" value="<%=not_fonte%>" size="50" /><br /> <label>Palavras-Chaves:</label> <input type="text" id="not_key" name="not_key" value="<%=not_key%>" class="campos" size="50" /><br /> <input type="hidden" name="not_id" value="<%=not_id%>" /> <label></label> <input type="submit" value="Enviar" class="botoes" /> </fieldset> 7 CRUD GERAL E LOGIN </form> DELETE.JSP Ele é muito parecido com os scripts de inserir e alterar, porém não tem a parte do formulário. Veja o script abaixo: int not_id; //string sql de exclusão do registro no banco de dados String sql = "delete from noticia WHERE not_id='"+request.getParameter("not_id")+"'"; out.println(sql); PreparedStatement st = connection.prepareStatement(sql); st.executeUpdate(); String site = new String("index.jsp"); response.setStatus(response.SC_MOVED_TEMPORARILY); response.setHeader("Location", site); statement.close(); Pronto com esses 4 passos teremos um CRUD da tabela notícias. 8