Projeto CRUD com JSP (Scriptlets)

Projeto CRUD com JSP

Este artido descreve um projeto JavaWe CRUD criado com JSP e Scriptlets. Um exemplo utilizando o padrão DAO e sem o padrão MVC. Toda a lógica do CRUD (inserir, deletar, excluir e atualizar) foi feita nas paginas jsps, utilizando scriptlet.

O scriptlet corresponde em atribuir código Java entre <% %> nas paginas jsp’s. Nesse exemplo é utilizado o JSTL (JSP Standard Tag Library) que é uma coleção de bibliotecas em Java que permite substituir o scriplet na pagina JSP por tags JSTLs. Porque cada tag tem uma finalidade bem definida sendo equivalente a programação Java nas paginas JSPs.

A Estrutura do Projeto

Criar o Script do MySql - Banco de dados

drop database if exists aula;

create database aula;

use aula;

create table funcionario(
	idFuncionario int primary key auto_increment,
	nome varchar(35),
	salario float
);    

Classe Dao

package persistence;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Dao {
	
	Connection con;
	PreparedStatement stmt;
	ResultSet rs;
	
	public void open() throws Exception{
		
		Class.forName("com.mysql.jdbc.Driver");
		con = DriverManager.getConnection("jdbc:mysql://localhost:3306/aula", "usuario","senha");		
	}
	
	public void close() throws Exception{
		con.close();
	}
}    

Classe FuncionarioDao

package persistence;

import java.util.ArrayList;
import java.util.List;

import entity.Funcionario;

public class FuncionarioDao extends Dao {
	
	
	public void create(Funcionario f) throws Exception{		
		open();
			stmt = con.prepareStatement("insert into funcionario values(null,?,?)");
			stmt.setString(1, f.getNome());
			stmt.setDouble(2, f.getSalario());
			stmt.execute();
			stmt.close();
		close();		
	}

	public void delete(int cod) throws Exception{		
		open();
			stmt = con.prepareStatement("delete from funcionario where idFuncionario = ?");
			stmt.setInt(1, cod);
			stmt.execute();
			stmt.close();
		close();		
	}

	public void update(Funcionario f) throws Exception{		
		open();
			stmt = con.prepareStatement("update funcionario set nome = ? , salario = ? where idFuncionario = ?");
			stmt.setString(1, f.getNome());
			stmt.setDouble(2, f.getSalario());
			stmt.setInt(3, f.getIdFuncionario());
			stmt.execute();
			stmt.close();
		close();		
	}
	
	public List findAll() throws Exception{		
		open();
			stmt = con.prepareStatement("select * from funcionario");
			rs = stmt.executeQuery();
				List lista = new ArrayList();
			while(rs.next()){
				Funcionario funcionario = new Funcionario();
				funcionario.setIdFuncionario(rs.getInt(1));
				funcionario.setNome(rs.getString(2));
				funcionario.setSalario(rs.getDouble(3));
				lista.add(funcionario);
			}
			stmt.close();
		close();
		return lista;
	}
	
	public Funcionario findByCode(int cod) throws Exception{		
		open();
			stmt = con.prepareStatement("select * from Funcionario where idFuncionario = ?");
			stmt.setInt(1, cod);	
			rs = stmt.executeQuery();
				Funcionario funcionario	= null;			
			if(rs.next()){
				funcionario = new Funcionario();
				funcionario.setIdFuncionario(rs.getInt(1));
				funcionario.setNome(rs.getString(2));
				funcionario.setSalario(rs.getDouble(3));
				
			}
			stmt.close();
		close();
		return funcionario;
	}	
}    

Classe Funcionario

package entity;

public class Funcionario {
	
	private Integer idFuncionario;	
	private String nome;	
	private Double salario;
	
	public Funcionario() {
		// TODO Auto-generated constructor stub
	}

	public Funcionario(Integer idFuncionario, String nome, Double salario) {
		super();
		this.idFuncionario = idFuncionario;
		this.nome = nome;
		this.salario = salario;
	}

	@Override
	public String toString() {
		return "Funcionario [idFuncionario=" + idFuncionario + ", nome=" + nome
				+ ", salario=" + salario + "]";
	}

	public Integer getIdFuncionario() {
		return idFuncionario;
	}
	public void setIdFuncionario(Integer idFuncionario) {
		this.idFuncionario = idFuncionario;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Double getSalario() {
		return salario;
	}
	public void setSalario(Double salario) {
		this.salario = salario;
	}		
}    

ManagerBean serve para controlar as consultas do banco.

package manager;

import java.util.ArrayList;
import java.util.List;
import persistence.FuncionarioDao;
import entity.Funcionario;

public class ManagerBean {
	
	private List lista;

	public List getLista() {
		
		try {			
			lista = new ArrayList<>();
			lista = new FuncionarioDao().findAll();
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		
		return lista;
	}

	public void setLista(List lista) {
		this.lista = lista;
	}	
}    

Página index.jsp

<h2> Sistema de Cadastro de Funcionario - CRUD Completo - JSP sem Servlet </h2>

<p/>
<a href="sistema.jsp">Cadastrar Funcionario</a>

<p/>
<a href="lista.jsp">Lista Funcionario</a>       

Página Sistema.jsp

<h2> Cadastro de Funcionario </h2>

<form method="post" action="respCadastro.jsp">

	Nome <p/>
	<input type="text" name="nome" size="35">
	<br/>
	Salario <p/>
	<input type="text" name="salario" size="35">
	<br/>
	<input type="submit" value="Cadastrar"/>

</form>

<br/>
<a href="lista.jsp">Listagem dos Funcionarios</a>
<br/>
<a href="index.jsp"> Voltar ao Sistema Principal </a>    

Página respCadastro.jsp

    <%@ page import="entity.*, persistence.*" %>

<%

	String nome = request.getParameter("nome");
	Double salario = new Double(request.getParameter("salario"));
	Funcionario f = new Funcionario();
	try{
		
		f.setNome(nome);
		f.setSalario(salario);
		
		new FuncionarioDao().create(f);
		
		out.print("<br/> Dados Gravados");	
		
	}catch(Exception e){
		out.print("<br/> Error" + e.getMessage());
	}
%>

<br/>
<a href="sistema.jsp"> Cadastro </a>
<br/>
<a href="lista.jsp"> Listar Funcionario</a>
<br/>
<a href="index.jsp"> Voltar ao Sistema Principal </a>

Página lista.jsp

<%@ page import="entity.*, persistence.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="mb" class="manager.ManagerBean" scope="request"/>

<table border="1">

	<tr>
		<th> Codigo </th>
		<th> Nome </th>
		<th> Salario </th>
		<th> Alterar </th>
		<th> Excluir </th>
	</tr>

<c:forEach items="${mb.lista}" var="linha">
	
	<tr>
		<td> ${linha.idFuncionario} </td>
		<td> ${linha.nome} </td>
		<td> ${linha.salario} </td>
		<td> <a href="excluir.jsp?codigo=${ linha.idFuncionario}"> Excluir </a> </td>
		<td> <a href="alterar.jsp?codigo=${ linha.idFuncionario}"> Alterar </a> </td>
	</tr>

</c:forEach>


</table>

<br/>
<a href="sistema.jsp"> Cadastro </a>
<br/>
<a href="index.jsp"> Voltar ao Sistema Principal </a>    

Página excluir.jsp

<%@ page import="entity.*, persistence.*" %>

<%

	Integer codigo = new Integer(request.getParameter("codigo"));
	Funcionario f = new Funcionario();
	try{
		f = new FuncionarioDao().findByCode(codigo);
		
		new FuncionarioDao().delete(f.getIdFuncionario());
		
		out.print("<br/> Dados Excluídos");	
		
	}catch(Exception e){
		out.print("<br/> Error" + e.getMessage());
	}
%>

<br/>
<a href="sistema.jsp"> Cadastro </a>
<br/>
<a href="lista.jsp"> Listar Funcionario </a>
<br/>
<a href="index.jsp"> Voltar ao Sistema Principal </a>    

Página alterar.jsp

<%@ page import="entity.*, persistence.*" %>

<%

	Integer codigo = new Integer(request.getParameter("codigo"));
	Funcionario f = new Funcionario();
	try{
		f = new FuncionarioDao().findByCode(codigo);
		
%>			




	<form method="post" action="alterar2.jsp">
	
		Codigo <p/>
		<input type="text" readonly="readonly" name="codigo" value="<%= f.getIdFuncionario() %>" size="10">
		<br/>	
		Nome <p/>
		<input type="text" name="nome" value="<%= f.getNome() %>" size="35">
		<br/>
		Salario <p/>
		<input type="text" name="salario" value="<%= f.getSalario() %>" size="35">
		<br/>
		<input type="submit" value="Alterar"/>
		
	</form>	
<%				
	}	
	catch(Exception e){
		out.print("<br/> Error" + e.getMessage());
	}
%>

<br/>
<a href="sistema.jsp"> Cadastro </a>
<br/>
<a href="lista.jsp"> Listar Funcionario</a>
<br/>
<a href="index.jsp"> Voltar ao Sistema Principal </a>    

Página alterar2.jsp

<%@ page import="entity.*, persistence.*" %>

<%
	Integer cod = new Integer(request.getParameter("codigo"));
	String nome = request.getParameter("nome");
	Double salario = new Double(request.getParameter("salario"));
	Funcionario f = new Funcionario();
	try{
		
		f.setIdFuncionario(cod);
		f.setNome(nome);
		f.setSalario(salario);
		
		new FuncionarioDao().update(f);
		
		out.print("<br/> Dados Alterados");	
		
	}catch(Exception e){
		out.print("<br/> Error" + e.getMessage());
	}
%>

<br/>
<a href="sistema.jsp"> Cadastro </a>
<br/>
<a href="lista.jsp"> Listar Funcionario </a>
<br/>
<a href="index.jsp"> Voltar ao Sistema Principal </a>