49
Extaido do Guia prático para a construção de aplicações Java Web (JSP & Servlets) Arquitectura MVC e Padrão DAO no Versão 1 Joaquim José Hangalo [email protected] Luanda, Setembro de 2009

CRUD Basico Com JSP Servlet MVC DAO

Embed Size (px)

DESCRIPTION

jsp

Citation preview

Page 1: CRUD Basico Com JSP Servlet MVC DAO

Extaido

do

Guia prático

para a construção de aplicações

Java Web (JSP & Servlets)

Arquitectura MVC e Padrão DAO

no

Versão 1

Joaquim José Hangalo

[email protected]

Luanda, Setembro de 2009

Page 2: CRUD Basico Com JSP Servlet MVC DAO

2

Overview sobre a Programação web lado server com java

O universo java compreende uma conjunto de infra-estruturas agrupadas em três

pilares. O Java SE (Java Standard Edition), o Java EE (Java Enterprise Edition), o Java ME (Java Micro Edition).

O Java EE (formalmente chamado J2EE) é um conjunto standard de tecnologias para a programação server-side com Java. O Java EE compreende as tecnologias de

Servlets, JavaServer Pages(JSP), JavaServer Faces (JSF), Enterprise JavaBeans (EJBs), JPA (Java Persitenc API), e o Java Messaging Service(JMS).

A tecnologia de base proposta pela Sun Microsystems, ainda no alvor da plataforma java, para o desenvolvimento de aplicações web lado server é a tecnologia dos

servlets. No presente guia, através de exemplos práticos serão exploradas as tecnologias

dos servlets e JavaServer Pages. A tecnologia JSP é uma solução derivada dos servlets.

A Plataforma Java EE (Java Enterprise Edition)

A plataforma Java EE é uma coleção de especificações que definem

uma infraestrutura para desenvolver aplicações distribuidas

multicamada (3-tier, n-tier).

A plataforma Java EE, facilita o desenvolvimento de aplicações

distribuídas em Java e disponibiliza uma padrão, uma serie de

convercções e um conjunto de serviços sobre os quais se desenvolvem

as aplicações multicamada.

O objectivo principla da plataforma Java EE é simplificar o

desenvolvimento de uma aplicação e permitir que o desenvolvedor

fique mais concentrado no desenho e na implementação do sistema,

delegadno as tarefas típicas de gestão e questões de mais baixo nível à

própria aplicação e à infraestrutura do servidor de aplicações Java EE.

Para a plataforma provê um conjunto fundamental de recurso para os

mais diversos componentes do sistema.

Page 3: CRUD Basico Com JSP Servlet MVC DAO

3

Modelo de aplicação Java EE

O modelo de aplicação do Java EE define uma arquitecura que

permite implementar os serviços como aplicações multicamada que

garantam escalabilidade, acessibilidade e de gestão distribuída. Este

modelo particiona as responsabilidades para a implementação de

serviços multicamanda nas seguintes partes:

A lógica de negócio e a lógica da apresentação a serem

implementadas pelo desenvolvedor.

O sistema padrão de serviços, provido pela plataforma Java EE.

Arquitectura das aplicações distribuída multicamada

A plataforma Java EE utiliza um modelo de aplicação distribuída

multicamada pala a implementação de aplicações enterprise.

A lógica da aplicação é dividada em componentes de acordo com a

função e os componentes da aplicação que definem uma aplicação

Java EE são instalados em várias máquinas dependendo da camada a

que o componente pertence dentro do universo de desenvolvimento

multicamanda Java EE.

Um aplicação Java EE em geral consiste em três ou em quatro

camadas conforme a figura a seguir.

Page 4: CRUD Basico Com JSP Servlet MVC DAO

4

As aplicações Java EE multicamadas, em geral, são consideradas como

sendoa aplicações tri-camadas poies elas são distribuídas em três áreas

ou locais: a máquina cliente, a maquia servidora Java EE, e maquina

servidora da base de dados ou uma maquinda de recursos legados,no

back-end.

As aplicações tri-camada que rodam desta maneira herdam o padrão

bi-camada do modelo cliente-servidor, adicionando um servidor de

aplicações multicamanda entre a aplicação cliente e o respositório de

dados, o back-end.

Page 5: CRUD Basico Com JSP Servlet MVC DAO

5

APIs do Java EE 6

TECNOLOGIA SERVLET

A tecnologia Servlet é a base do desenvolvimento de aplicativos web usando a linguagem de programação Java. Ela é uma das tecnologias Java mais importantes,

e é subjacente para outras tecnologias Java populares para o desenvolvimento de aplicativos, o JSP e O JSF.

Entender a tecnologia servlet e sua arquitectura é importante para um desenvolvedor Web.

Padrão de projecto MVC - Model-View-Controller

Existem diversos padrões que auxiliam o programador a suprir uma determinada

área do código, como os famosos Iterator, Observer, Singleton, Composite entre outros.

Todos esses são indicados para desenvolvimento orientado a objectos e para a

padronização da arquitectura das aplicações.

O padrão, ou pattern, como também pode ser encontrado na literatura, mais

utilizado para garantir uma arquitectura legível e maleável, é o MVC, do inglês,

Model-View-Controller, ou Modelo-Visão-Controle, em português, que consiste em

dividir em diversas camadas os módulos com os mais diversos serviços das

aplicações, resultando em maior flexibilidade e fácil reutilização.

Page 6: CRUD Basico Com JSP Servlet MVC DAO

6

O MVC define três camadas para a aplicação:

View (Visão)– Todas as classes que representam interface com o usuário, seja

utilizando Swing, AWT, SWT, XUL, JSP (em aplicações web) ou outros.

Controller – Classes utilizadas para validar regras de negócio, processar os dados,

e manter toda a lógica de negócio. Isso seria a engine da aplicação.

Model – Utilizando a nomenclatura adoptada pelos patterns orientados a objectos,

essa camada contem as classes catálogo (classes que persistem e recuperam um

tipo específico de objecto), classes de entidade (famosos java beans1, classes que

definem um tipo específico de dados com métodos gets e sets e um construtor sem

argumentos). Trata-se de objectos java utilizados para implementar o modelo do

domínio da aplicação.

1 Na nova especificação do Java EE os java beans são chamados POJO (Plain Old Object). Os POJO são utilizados para trafegar um conjunto de valores entre as camandas e classes da aplicação, permitindo assim eliminar o uso dos Transfer Objects(TO) ou Value Objects(VO), simplificando a aplicação e melhoradno a produtividade e manutenabilidade.

Page 7: CRUD Basico Com JSP Servlet MVC DAO

7

Arquitectura servlet-centric

A arquitectura MVC foi modificada ligeiramente e adaptada para o uso em aplicações WEB. A arquitectura resultante foi chamada, então, de arquitetura Model

2. As aplicações Model 2 têm tipicamente o seguinte esquema de funcionamento:

Um servlet Controller que fornece um ponto de acesso único ao restante da

aplicação. Este Controller é responsável por fornecer a gestão central do fluxo

da aplicação e dos serviços como a manipulação da segurança e a gestão do utilizador. Este tipo de controlador é frequentemente chamado de Front

Controller.

O servlet Controller usa tipicamente configurações XML ou Anotações para

determinar o fluxo da aplicação e o processamento do comando. Também

emprega, geralmente, os componentes de ajuda que servem como objectos Command. Isto significa que tais componentes de ajuda estão associados

com às acções do utilizador e são criados/chamados para gerir aquelas acções enquanto ocorrem, chamando os componentes da Model quando

necessário. Isto serve para desacoplar a servlet Controller da Model.

Page 8: CRUD Basico Com JSP Servlet MVC DAO

8

I.ª Parte

Criação do Projecto

Primeira Aplicação Exemplo Neste tutorial vamos implementar uma pequena aplicação com arquitectura MVC e

Padrão DAO2 utilizando o IDE NetBeans.

Vamos criar uma mini aplicação para registo de pessoal por departamento. A seguir o diagrama ER da mini aplicação que vamos criar.

Diagrama ER da aplicação

Base de Dados da Aplicação (Script)

No presente tutorial vamos trabalhar com um dos Sistema de gestão de Base de Dados da Oracle o MYQL. A seguir é apresentado o script da base de dados. Se

tiver alguma dúvida de como proceder, veja no apêndice do presente tutorial os

passos para criar uma base de dados no mysql.

Base de dados gpessoal

CREATE DATABASE IF NOT EXISTS gpessoal; USE gpessoal;

--

2 O padrão DAO (Data Access Object) é o padrão mais utilizado para aceder a dados numa base de dados. O padrão DAO fornece uma interface independente, na qual é possivel persistir objectos de dados. A Ideia é colocar todas as funcionalidades encontradas no desenvolvimento de acesso e trabalho com dados num só local, tornando simples a sua manutenção. Tipicamente um DAO inclui métodos para inserir, seleccionar, actualizar e eliminar objectos de uma base de dados. Dependendo de como se quer implementar o padrão DAO, pode-se ter um DAO para cada classe de objectos na aplicação ou um único DAO responsável por todos os objectos.

Page 9: CRUD Basico Com JSP Servlet MVC DAO

9

-- Definition of table `departamento`

--

DROP TABLE IF EXISTS `departamento`; CREATE TABLE `departamento` (

`codigoDepartamento` int(10) unsigned NOT NULL auto_increment,

`nomeDepartamento` varchar(45) NOT NULL, PRIMARY KEY (`codigoDepartamento`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Definition of table `funcionario`

DROP TABLE IF EXISTS `funcionario`;

CREATE TABLE `funcionario` ( `codigoFuncionario` int(10) unsigned NOT NULL auto_increment,

`nomeFuncionario` varchar(45) NOT NULL,

`sobrenomeFuncionario` varchar(45) NOT NULL, `dataNascimentoFuncionario` date NOT NULL,

`codigoDepartamento` int(10) unsigned NOT NULL, PRIMARY KEY (`codigoFuncionario`),

KEY `departamento_funcionario` (`codigoDepartamento`), CONSTRAINT `departamento_funcionario` FOREIGN KEY

(`codigoDepartamento`) REFERENCES `departamento` (`codigoDepartamento`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Criação de um novo Projecto (Java Web) no NetBeans

O NetBeans permite-nos criar projectos java de diversos tipos (Escritório, Web,

Moveis, Entreprise, etc). O NeteBeans também tem suporte para outras

linguagens {C/C++, PHP} e IDEs {Eclipse, JBuilder}.

1. Criar um projecto no NetBeans é muito simples, podemos faz-lo a apartir do

menu File New Project. Ou Seleccionando o icone na barra de

Ferramentas

... Menu para um Novo Projecto

Page 10: CRUD Basico Com JSP Servlet MVC DAO

10

A seguir deve-se escolher o tipo de projecto.

Para seguir o estudo, escolha Java Web em Categories e Web Aplication em

Projects. Já que se deseja criar um projecto web

Faça clique sobre o botão Next {Seguinte}

Page 11: CRUD Basico Com JSP Servlet MVC DAO

11

Na etapa Name and Location deve-se dar um nome ao projecto e definir uma

localização onde o projecto vai ficar guardado...

Para seguir o exemplo do tutorial dê à aplicação o nome de GestaoPessoal.

É conveniente marcar a opção User Dedicated Folder for Storing Labraries

para que as bibliotecas usas fiquem associadas à aplicação, no futuro.

…a seguir fazer clique sobre o botão Next {Seguinte}, para prosseguir.

...na etapa Server and Settings deve-se escolher o servidor ou contentor de

aplicações {web server}3 e a versão do Java EE. Actualmente a versão

disponivel para desevolvimento é a 5 {Java EE 5}. Utilize esta versão e o

contentor de aplicações Apache Tomcat.

3 O NetBeans por padrão embute o Tomcat e o GlassFish. Outros web servers podem ser adicionados.

Page 12: CRUD Basico Com JSP Servlet MVC DAO

12

Predente-se criar uma aplicação sem uso de num framework. Portanto na

etapa Frameworks, não marque nenhuma opção. E faça clique em FINISH

{Terminar}.

O IDE cria um modelo de projeto para o aplicativo inteiro, e abre uma

página JSP vazia (index.jsp) no editor de código-fonte. A estrutura lógica do

projeto é visivel na janela Projects {Projetos (Ctrl-1)}.

Expanda o nó Libraries {Bibliotecas} Apache Tomcat do projecto.

Observe que as bibliotecas necessárias à aplicação são adicionadas ao

classpath.

Expanda Configuration Files {Ficheiros de configuração} e observe que o

IDE criou um ficheiro web.xml, que controla o comportamento da aplicação

Web. O IDE também registrou a pagina index.jsp no descritor de

deployment, o ficheiro web.xml.

Page 13: CRUD Basico Com JSP Servlet MVC DAO

13

Para executar a aplicação faça clique sobre o botão Run na barra de

Ferramentas ou então prima a tecla F6.

Page 14: CRUD Basico Com JSP Servlet MVC DAO

14

2. ª Parte

Estruturação da camada de negócio A nossa aplicação vai ser estruturada segundo a arquitectura MVC e o Padrão DAO segundo as especificações, em uso na actualidade em ambientes de produção. Inicialmente vamos criar os seguintes pacotes.

A camada de visão será construída com as paginas JSP, as quais estão organizadas na pasta Web Pages da apliação.

Criação dos POJOS

Os pojos (Plain Old Java Objects) serão desenvolvidos para serem acedidos

pela aplicação. Eles receberão dos dados vindos da base de dados para

transmiti-los às paginas JSP. Das páginas JSP receberão os dados para

transmiti-los à base de dados. Eles funcionam como intermediários nas

transacções de dados.

À cada tabela da base de dados corresponderá um POJO, com os mesmos

atributos e relacionamentos.

Page 15: CRUD Basico Com JSP Servlet MVC DAO

15

Como criar um POJO

Para criar um POJO, navegue até a janela Projects {Projectos}, na estrutura

do projecto web, faça clique com o botão direito do mouse sobre o pacote

modelo, criado anteriormente, na pasta Source Packages, aponte para New e

faça clique em Java Class...

... e crie uma classe chamada Funcionario e outra chamada Departamento

public class Departamento

{

private Integer codigoDepartamento;

private String nomeDepartamento;

// construtores omitidos

// métodos de acesso e modificação também omitidos

}

public class Funcionario { private Integer codigoFuncionario; private String nomeFuncionario; private String sobrenomeFuncionario; private Date dataNasceimentoFuncionario; private Departamento departamento; private Double salarioFuncionario; // construtores omitidos // métodos de acesso e modificação também omitidos }

Como criar um contrutor da classe com o NetBeans IDE Faça clique com o botão direito do mouse no código (Editor), abaixo das variáveis de instância, e no menu de contexto que aparece, seleccione a opção Insert Code (ALT + Insert) e faça clique em Construtor.

Page 16: CRUD Basico Com JSP Servlet MVC DAO

16

Vamos criar dois construtores. Um com parámentros e outro sem parámetros Para criar um construtor com parámetros, na caixa de diálogo que aparece marque todos as variáveis de instância da classe e...

... faça clique em Generate. Para criar um construtor sem parámetros, repita todos os passos anteriores, mas na janela Generate Construtor, a ultima, não marque nenhuma variável de instância. E faça clique no botão Generate. Alternativamente pode criar os construtores fazendo a combinação CTRL + Barra de Espaço e Enter

Como criar os métodos de acesso e modificação {sets e gets}. com o NetBeans IDE

Faça clique com o botão direito do mouse no código (Editor), e no menu de contexto que aparece, aponte para Refactor e faça clique em Encapsulate Fields.

Page 17: CRUD Basico Com JSP Servlet MVC DAO

17

Na caixa de diálogo Encapsulate Fields aparecem todos os atributos para os quais serão gerados metodos getters e setters. A visibilidade dos atributos é mostrada em Fields Visibility e a visibilidade dos assessores em Acessors Visibility. Marque todos os Getters e Setters e...

... faça clique em Refactor

Page 18: CRUD Basico Com JSP Servlet MVC DAO

18

Alternativamente faça clique com o botão direito do mouse no editor de codigo,

logo abaixo do ultimo construtor e escolha a opção Insert code. Na caixa

Generate escolha Getter and Setter

... seleccione os campos e faça clique em Generate.

Criação da classe de Conexao com a base de dados

... Continuando, vamos criar uma classe para fazer a conexão com a base de dados.

Faça clique com o botão direito do mouse sobre o pacote útil, anteriormente

criado, aponte para New e faça clique Java Class. Dê à esta classe o nome de

Conexao.

Page 19: CRUD Basico Com JSP Servlet MVC DAO

19

Na listagem a seguir é mostrado o código da classe que vai permitir a ligação

entre a aplicação e a base de dados.

Classe Conexao

import java.sql.*; public class Conexao { private static String driver ="com.mysql.jdbc.Driver"; private static String url ="jdbc:mysql://localhost:3306/gpessoal"; private static String utilizador ="root"; private static String senha ="root"; public static Connection getConnection() throws Exception { try { Class.forName(driver); return DriverManager.getConnection( url, utilizador, senha); } catch (ClassNotFoundException notFoundException) { throw new Exception(notFoundException.getMessage()); } catch (SQLException sQLException) { throw new Exception(sQLException.getMessage()); }

Page 20: CRUD Basico Com JSP Servlet MVC DAO

20

} public static void closeConnection(Connection conn, Statement stmt, ResultSet rs) throws Exception { close(conn, stmt, rs); } public static void closeConnection(Connection conn, Statement stmt) throws Exception { close(conn, stmt, null); } public static void closeConnection(Connection conn) throws Exception { close(conn, null, null); } private static void close(Connection conn, Statement stmt, ResultSet rs) throws Exception { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (Exception e) { throw new Exception(e.getMessage()); } } }

Criação dos DAOs – Data Access Object

Para cada classe é necessário criar os métodos de persistência. É boa prática criar uma classe a parte cujo nome será o da classe com o sufixo DAO.

Por exemplo: DepartamentoDAO

Na listagem a seguir temos o conteúdo da classe FuncionarioDAO da aplicação que estamos a criar

public class DepartamentoDAO { private Connection con; public void guardarDepartamento(Departamento departamento) throws Exception { PreparedStatement ps = null; if (departamento == null) {

Page 21: CRUD Basico Com JSP Servlet MVC DAO

21

throw new Exception("O valor passado não pode ser nulo"); } try { String SQL = "INSERT INTO departamento(nomeDepartamento) values(?)"; con = Conexao.getConnection(); ps = con.prepareStatement(SQL); ps.setString(1, departamento.getNomeDepartamento()); ps.execute(); } catch (SQLException sqle) { throw new Exception("Erro ao inserir dados " + sqle); } finally { Conexao.closeConnection(con, ps); } } public void actualizarDepartamento(Departamento departamento) throws Exception { PreparedStatement ps = null; if (departamento == null) { throw new Exception("O valor passado não pode ser nulo"); } try { String SQL = "UPDATE departamento SET nomeDepartamento=? where codigoDepartamento=?"; con = Conexao.getConnection(); ps = con.prepareStatement(SQL); ps.setString(1, departamento.getNomeDepartamento()); ps.setInt(2, departamento.getCodigoDepartamento()); ps.executeUpdate(); ps.close(); } catch (SQLException sqle) { throw new Exception("Erro ao actualizar dados: " + sqle); } finally { Conexao.closeConnection(con); } } public void eliminarDepartamento(Departamento departamento) throws Exception { PreparedStatement ps = null; if (departamento == null) { throw new Exception("O valor passado não pode ser nulo"); } try { con = Conexao.getConnection(); ps = con.prepareStatement("delete from departamento where codigoDepartamento=?"); ps.setInt(1, departamento.getCodigoDepartamento()); ps.execute();

Page 22: CRUD Basico Com JSP Servlet MVC DAO

22

} catch (SQLException sqle) { throw new Exception("Erro ao excluir dados:" + sqle); } finally { Conexao.closeConnection(con); } } public Departamento procuraDepartamentoPorCodigo(Integer codigoDepartamento) throws Exception { PreparedStatement ps = null; ResultSet rs = null; try { con = Conexao.getConnection(); ps = con.prepareStatement( "select * from departamento where codigoDepartamento=?"); ps.setInt(1,codigoDepartamento); rs = ps.executeQuery(); if (!rs.next()) { throw new Exception("Não foi encontrado nenhum" + " registro com o Código: " + codigoDepartamento); } String departamentos = rs.getString(2); return new Departamento(codigoDepartamento, departamentos); } catch (SQLException sqle) { throw new Exception(sqle); } finally { Conexao.closeConnection(con, ps, rs); } } public List<Departamento> todosDepartamentos() throws Exception { List departamentosLista = new ArrayList(); Statement st = null; ResultSet rs = null; try { con = Conexao.getConnection(); st = con.createStatement(); rs = st.executeQuery("SELECT * FROM departamento"); while (rs.next()) { Integer codigoDepartamento = rs.getInt("codigoDepartamento"); String nomeDepartamento = rs.getString("nomeDepartamento"); Departamento departamento = new Departamento(codigoDepartamento, nomeDepartamento); departamentosLista.add(departamento); } } catch (Exception ex) { ex.printStackTrace(); }

Page 23: CRUD Basico Com JSP Servlet MVC DAO

23

return departamentosLista; } }

…e o conteúdo da classe FuncionarioDAO

public class FuncionarioDAO { private Connection conn; public void guardarFuncionario(Funcionario funcionario) throws Exception{ PreparedStatement ps = null; if (funcionario == null) throw new Exception("O valor passado não pode ser nulo"); String SQL = "insert into funcionario( nomeFuncionario, sobrenomeFuncionario," + "dataNascimentoFuncionario, codigoDepartamento, salarioFuncionario) " + "values(?,?,?,?,?)"; conn = Conexao.getConnection(); try { ps = conn.prepareStatement(SQL); // ps.setInt(1, funcionario.getCodigoFuncionario()); ps.setString(1,funcionario.getNomeFuncionario()); ps.setString(2,funcionario.getSobrenomeFuncionario()); ps.setDate(3, new java.sql.Date(funcionario.getDataNasceimentoFuncionario().getTime())); ps.setInt(4, funcionario.getDepartamento().getCodigoDepartamento()); ps.setDouble(5,funcionario.getSalarioFuncionario()); ps.execute( ); ps.close(); } catch (SQLException sqle) { throw new Exception("Erro ao inserir dados "+ sqle); } finally { Conexao.closeConnection(conn); } } public void actualizarFuncionario(Funcionario funcionario) throws Exception { PreparedStatement ps = null; if (funcionario == null) throw new Exception("O valor passado não pode ser nulo"); String SQL = "UPDATE funcionario SET nomeFuncionario=?,sobrenomeFuncionario=?," + "dataNascimentoFuncionario=?," + "codigoDepartamento=?,salarioFuncionario=? WHERE codigoFuncionario =?"; conn = Conexao.getConnection(); try { ps = conn.prepareStatement(SQL); ps = conn.prepareStatement(SQL);

Page 24: CRUD Basico Com JSP Servlet MVC DAO

24

ps.setString(1,funcionario.getNomeFuncionario()); ps.setString(2,funcionario.getSobrenomeFuncionario()); ps.setDate(3, new java.sql.Date(funcionario.getDataNasceimentoFuncionario().getTime())); ps.setInt(4, funcionario.getDepartamento().getCodigoDepartamento()); ps.setDouble(5,funcionario.getSalarioFuncionario()); ps.setInt(6, funcionario.getCodigoFuncionario()); ps.executeUpdate( ); ps.close(); } catch (SQLException sqle) { throw new Exception("Erro ao atualizar dados: "+ sqle); } finally { Conexao.closeConnection(conn); } } public void eliminarFuncionario(Funcionario funcionario) throws Exception { PreparedStatement ps = null; if (funcionario == null) throw new Exception("O valor passado não pode ser nulo"); try { conn = Conexao.getConnection(); ps = conn.prepareStatement("delete from funcionario where codigoFuncionario=?"); ps.setInt(1, funcionario.getCodigoFuncionario()); ps.execute( ); ps.close(); } catch (SQLException sqle) { throw new Exception("Erro ao excluir dados:" + sqle); } finally { Conexao.closeConnection(conn); } } public Funcionario procurarFuncionarioPorCodigo(Integer codigoFuncionarioBusca) throws Exception { PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT * from funcionario where codigoFuncionario =?"; try { conn = Conexao.getConnection(); ps = conn.prepareStatement(sql); ps.setInt(1, codigoFuncionarioBusca); rs = ps.executeQuery( ); if( !rs.next( ) ) { throw new Exception( "Não foi encontrado nenhum" + " registro com o ID: " + codigoFuncionarioBusca ); } Integer codigoFuncionario = rs.getInt(1); String nomeFuncionario = rs.getString(2); String sobrenomeFuncionario = rs.getString(3); Date dataNascimentoFuncionario = rs.getDate(4); Departamento departamento = new Departamento(); departamento.setNomeDepartamento(rs.getString(5));

Page 25: CRUD Basico Com JSP Servlet MVC DAO

25

Double salarioFuncionario = rs.getDouble(6); return new Funcionario(codigoFuncionario, nomeFuncionario, sobrenomeFuncionario, dataNascimentoFuncionario, departamento, salarioFuncionario); } catch (SQLException sqle) { throw new Exception(sqle); } finally { Conexao.closeConnection(conn, ps, rs); } } public List<Funcionario> buscaTodosFuncionarios() throws Exception { List funcionariosLista = new ArrayList(); Statement st = null; ResultSet rs = null; String Sql = "SELECT f.codigoFuncionario, f.nomeFuncionario, f.sobrenomeFuncionario," + " f.dataNascimentoFuncionario, d.nomeDepartamento, f.salarioFuncionario " + "FROM funcionario f, departamento d " + "WHERE f.codigoDepartamento = d.codigoDepartamento"; try { conn = Conexao.getConnection(); st = conn.createStatement(); rs = st.executeQuery(Sql); while (rs.next()) { Integer codigoFuncionario = rs.getInt("codigoFuncionario"); String nomeFuncionario = rs.getString("nomeFuncionario"); String sobrenomeFuncionario = rs.getString("sobrenomeFuncionario"); Date dataNascimentoFuncionario = rs.getDate("dataNascimentoFuncionario"); Departamento departamento = new Departamento(); departamento.setNomeDepartamento(rs.getString("nomeDepartamento")); Double salarioFuncionario = rs.getDouble("salarioFuncionario"); Funcionario funcionario = new Funcionario(codigoFuncionario, nomeFuncionario, sobrenomeFuncionario, dataNascimentoFuncionario, departamento, salarioFuncionario); funcionariosLista.add(funcionario); } } catch (Exception ex) { } return funcionariosLista; } }

Criação das classes de controlo

As classes de controlo têm a função de controlar o acesso aos dados já que o DAO tem como função principal trabalhar como intermediário que recebe os dados e persiste na base de dados, por um lado, e, por outro, recebe os dados e disponibiliza-os para a aplicação

Page 26: CRUD Basico Com JSP Servlet MVC DAO

26

Nas aplicações java o papel de controller é feito pelos servlets

Criação das Servlets e das Páginas JSP Para a interacção entre a camada de negócio e a camada de visão, as páginas, é boa prática utilizar Servlets. Entretanto nada obsta trabalhar apenas com páginas JSP. A seguir vamos criar os Servlets que vão permitir a manipulação os dados recebidos dos formulários JSP para a base de dados e os dados enviados da base de dados para as páginas JSP.

Como criar um servlet

Inicialmente será implementado um caso simples de interacção entre servlets e Páginas JSP. Num segundo momento serão apresentadas estruturas mais elaboradas. Mas o principio de interacção é o mesmo. Para criar um servlet, faça clique com o botão direito do mouse sobre o packate servlets, se ainda não tem crie-o, no nó Source Packages

… Dê o nome de DepartamentoServlet e faça clique em Next, para prosseguir. Na janela seguinte deixe marcada a opção Add information to deployment descriptor(Web.xml) e faça clique sobre o botão finish.

Page 27: CRUD Basico Com JSP Servlet MVC DAO

27

… A seguir edite o servlet conforme o código mostrador a seguir.

… public class GuardarDepartamentoServlet extends HttpServlet { private Departamento departamento = new Departamento(); private DepartamentoDAO departamentoDAO = new DepartamentoDAO(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception { try { departamento.setCodigoDepartamento(0); departamento.setNomeDepartamento(request.getParameter("txtdepartamento")); departamentoDAO.salvar(departamento); } finally { } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

Page 28: CRUD Basico Com JSP Servlet MVC DAO

28

try { processRequest(request, response); } catch (Exception ex) { Logger.getLogger(SalvarDepartamentoServlet.class.getName()).log(Level.SEVERE, null, ex); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { processRequest(request, response); } catch (Exception ex) { Logger.getLogger(SalvarDepartamentoServlet.class.getName()).log(Level.SEVERE, null, ex); } } @Override public String getServletInfo() { return "Short description"; } }

Este servlet vai permitir persistir os dados recebidos de um formulário. A seguir vamos criar as páginas JSP.

Criar a página JSP Faça clique com o botão direito do mouse sobre o nó Web Pages e escolha JSP, dê a esta página o nome de RegistarNovoDepartamento. Para desenha a página pode recorrer à palete do NetBeans IDE

Page 29: CRUD Basico Com JSP Servlet MVC DAO

29

… ou a um editor que suporte a tecnologia JSP, como o DreamWeaver da Macromédia. Na listagem a seguir temos a página que nos permitirá inserir e guardar novos departamentos na base de dados do nosso sistema. Atenção especial deve ser posta na propriedade action do formulário (form) e na propriedade method. Na propriedade action passamos o nome do servlet que recebe os dados e os envia à base de dados, na propriedade method passamos o método POST para significar que o formulário com dados será enviado ao servidor. Página para a entrada de dados dos Departamentos

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Registo de Departamento</title> </head> <body> <form action=" GuardarDepartamentoServlet " method="POST"> <h1>Registar Novo Departamento</h1> <br> Departamento: <br> <br> <input type="text" name="txtdepartamento" value="" /> <br> <br> <input type="submit" value="Guardar" />

Page 30: CRUD Basico Com JSP Servlet MVC DAO

30

</form> </body> </html>

Página para a visualização dos dados dos Departamentos Vamos criar uma nova página e vamos chama-la ListaDepartamentos Esta página utilizará alguns recursos especiais. Inicialmente devemos fazer alguns imports e inserir um UserBean. Para inserir o Use Bean vá até à palete do NetBeans ID, desdobre o item JSP e arraste e largue o componente Use Bean e preencha a caixa de diálogo conforme as suas necessidades. Para o caso actual teremos:

<%@page import="java.util.*, java.sql.*, modelo.*, dao.*" %> <jsp:useBean id="departamentoBean" scope="session" class="controlo.DepartamentoControl" /> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Lista dos Departamentos</title> </head> <body> <center> <h1>Departamentos Registados</h1> </center> <br> <br>

Page 31: CRUD Basico Com JSP Servlet MVC DAO

31

<table border="1" align="center"> <tr> <td> Código: </td> <td> Departamento: </td> </tr> <tr> <% List<Departamento> departamentoLista = departamentoBean.todosDepartamentos(); for (int i = 0; i < departamentoLista.size(); i++) { Departamento departamento = departamentoLista.get(i); %> <td><%=departamento.getCodigoDepartamento()%></td> <td><%= departamento.getNomeDepartamento()%></td> </tr> <% } %> </table> <br> <h1> <a href="RegistarNovoDepartamento.jsp">Registar Novo Departamento</a><h1> </body> </html>

Page 32: CRUD Basico Com JSP Servlet MVC DAO

32

Adicionar Biblioteca MYSQL JDBC Driver & JSTL 1.1 Antes de prosseguirmos com a construção da nossa aplicação, vamos adicionar algumas Bibliotecas. A saber: JSTL1.1, para tags jsp especiais e MYSQL JBDC Driver que permitirá à nossa aplicação aceder à base de dados. O NetBeans 6.8 já traz estas bibliotecas incorporadas, cabendo ao desenvolvedor apenas a tarefa de adiciona-las ao projecto. Para adicionar estas bibliotecas… … faça clique com o botão direito do mouse sobre o módulo da aplicação e no menu de contexto escolha propriedades. Na caixa de diálogo Project Properties seleccione Libraries e a seguir faça clique sobre o botão Add Library. Se a livraria não estiver disponível na janela que aparece faça clique sobre o botão import… Seleccione a livraria e depois clique em Add Library em todas as janela e confirme na janela Project Properties, fazendo clique no botão Ok. Biblioteca JSTL 1.1

Biblioca MYSQL JDBC Driver

Page 33: CRUD Basico Com JSP Servlet MVC DAO

33

Teste da primeira fase da aplicação Abra o ficheiro índex.jsp e adicione um link para a página RegistarNovoDepartamento.jsp. Faça o mesmo para a página de visualização e execute a aplicação. Este exemplo ser apenas para mostrar como colocar as estruturas da aplicação em interação. A seguir serão apresentadas estruturas mais elaboradas para os servlets.

Page 34: CRUD Basico Com JSP Servlet MVC DAO

34

3.ª Parte

Aplicação completa

Servlets da aplicação completa

Para a manipulação das entidades da nossa aplicação vamos criar servlets que centralizam as operações sobre cada objecto. Os procedimentos para criar os servlets e as paginas JSP são semelhantes aos descritos anteriormente. Daqui para frente apenas serão mostradas os códigos das estruturas necessárias à aplicação. 1 . Classe utilitária – Método para converter String em Data

import java.text.*; import java.text.DateFormat; import java.util.Date; public class DataUtil { public Date stringParaData(String data) throws ParseException { if(data== null) return null; Date dataF = null; try { DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); long timestamp = dateFormat.parse(data).getTime(); dataF = new Date(timestamp); } catch(ParseException pe) { throw pe; } return dataF; } } 2. Servlet para o objecto Departamento

… public class DepartamentoServlet extends HttpServlet {

Page 35: CRUD Basico Com JSP Servlet MVC DAO

35

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String comando = request.getParameter("comando"); if (comando == null) { comando = "principal"; } DepartamentoDAO dao= new DepartamentoDAO; Departamento departamento = new Departamento(); if (comando != null || !comando.equalsIgnoreCase("principal")) { try { String codigoDepartamento = request.getParameter("txtCodigoDepartamento"); if (codigoDepartamento != null) { departamento.setCodigoDepartamento(Integer.parseInt(codigoDepartamento)); } departamento.setNomeDepartamento(request.getParameter("txtNomeDepartamento")); } catch (Exception ex) { ex.printStackTrace(); } } try { RequestDispatcher rd = null; if (comando.equalsIgnoreCase("listar")) { List departamentosList = dao.todosDepartamentos(); request.setAttribute("departamentosList", departamentosList); rd = request.getRequestDispatcher("/ListaDepartamentos.jsp"); } else if (comando.equalsIgnoreCase("adicionar")) { dao.guardarDepartamento(departamento); rd = request.getRequestDispatcher("DepartamentoServlet?comando=listar"); } else if (comando.equalsIgnoreCase("eliminar")) { dao.eliminarDepartamento(departamento); rd = request.getRequestDispatcher("DepartamentoServlet?comando=listar");

Page 36: CRUD Basico Com JSP Servlet MVC DAO

36

} else if (comando.equalsIgnoreCase("busca")) { departamento = dao.procuraDepartamentoPorCodigo(departamento.getCodigoDepartamento()); HttpSession session = request.getSession(true); session.setAttribute("departamento", departamento); rd = request.getRequestDispatcher("/ActualizarDepartamento.jsp"); } else if (comando.equalsIgnoreCase("actualizar")) { dao.actualizarDepartamento(departamento); rd = request.getRequestDispatcher("DepartamentoServlet?comando=listar"); } else if (comando.equalsIgnoreCase("principal")) { rd = request.getRequestDispatcher("/index.jsp"); } rd.forward(request, response); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } … } 2. Servlet para o objecto Funcionario

public class FuncionarioServlet extends HttpServlet { private Departamento departamento = new Departamento(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String comando = request.getParameter("comando"); if (comando == null) { comando = "principal"; } FuncionarioDAO dao = new FuncionarioDAO(); Funcionario funcionario = new Funcionario(); DataUtil dataUtil = new DataUtil();

Page 37: CRUD Basico Com JSP Servlet MVC DAO

37

if (comando != null || !comando.equalsIgnoreCase("principal")) { try { String codigoFuncionario = request.getParameter("txtCodigoFuncionario"); if (codigoFuncionario != null) { funcionario.setCodigoFuncionario(Integer.parseInt(codigoFuncionario)); } funcionario.setNomeFuncionario(request.getParameter("txtNomeFuncionario")); funcionario.setSobrenomeFuncionario(request.getParameter("txtSobrenomeFuncionario")); funcionario.setDataNasceimentoFuncionario(dataUtil.stringParaData(request.getParameter("txtDataNascimentoFuncionario"))); departamento.setCodigoDepartamento(Integer.parseInt(request.getParameter("txtDepartamento"))); funcionario.setDepartamento(departamento); funcionario.setSalarioFuncionario(Double.parseDouble(request.getParameter("txtSalarioFuncionario"))); } catch (Exception ex) { ex.printStackTrace(); } } try { RequestDispatcher rd = null; if (comando.equalsIgnoreCase("listar")) { List funcionariosList = dao.buscaTodosFuncionarios(); request.setAttribute("funcionariosList", funcionariosList); rd = request.getRequestDispatcher("/ListaFuncionarios.jsp"); } else if (comando.equalsIgnoreCase("adicionar")) { dao.guardarFuncionario(funcionario); rd = request.getRequestDispatcher("FuncionarioServlet?comando=listar"); } else if (comando.equalsIgnoreCase("eliminar")) { dao.eliminarFuncionario(funcionario); rd = request.getRequestDispatcher("FuncionarioServlet?comando=listar"); } else if (comando.equalsIgnoreCase("busca")) { funcionario = dao.procurarFuncionarioPorCodigo(funcionario.getCodigoFuncionario()); HttpSession session = request.getSession(true); session.setAttribute("funcionario", funcionario); rd = request.getRequestDispatcher("/ActualizarFuncionario.jsp");

Page 38: CRUD Basico Com JSP Servlet MVC DAO

38

} else if (comando.equalsIgnoreCase("actualizar")) { dao.actualizarFuncionario(funcionario); rd = request.getRequestDispatcher("FuncionarioServlet?comando=listar"); } else if (comando.equalsIgnoreCase("principal")) { rd = request.getRequestDispatcher("/index.jsp"); } rd.forward(request, response); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } … }

Paginas JSP da aplicação completa Por uma questão de economia de espaço e evitar redundância, apenas serão apresentadas as páginas para manipular o objecto Funcionario. As dos demais objectos têm a mesma estrutura. 1. Pagina para adicionar novo Departamento

… <form action="DepartamentoServlet?comando=adicionar" method="POST"> <center> <h2>Registar Novo Departamento</h2> </center> <table align="center"> <tr> Departamento: <br> <input type="text" name="txtNomeDepartamento" value="" /> <br> <br> </tr>

Page 39: CRUD Basico Com JSP Servlet MVC DAO

39

<tr> <input type="submit" value="Guardar" /> </tr> </table> </form> …

2 . Pagina Para Visualizar os Departamentos

… <body> <h2>Lista dos Departamentos</h2> <table width="100%"> <tr bgcolor="#2E8B57"> <th>Código</th> <th>Departamento</th> <th>Actualizar</th> <th>Eliminar</th> <tr bgcolor="#DCDCDC"> <% DepartamentoDAO dao= new DepartamentoDAO(); List<Departamento> departamentoLista = dao.todosDepartamentos(); for (int i = 0; i < departamentoLista.size(); i++) { Departamento departamento = departamentoLista.get(i); %> <td ><%= departamento.getCodigoDepartamento() %></td> <td ><%= departamento.getNomeDepartamento() %></td> <td> <% out.println("<a href=\"DepartamentoServlet?comando=busca&txtCodigoDepartamento="+departamento.getCodigoDepartamento()+"\">Actualizar</a>"); %> </td>

Page 40: CRUD Basico Com JSP Servlet MVC DAO

40

<td> <% out.println("<a href=\"DepartamentoServlet?comando=eliminar&txtCodigoDepartamento="+departamento.getCodigoDepartamento()+"\">Eliminar</a>"); %> </td> </tr> <% } %> </table> <br><a href="AdicionarDepartamento.jsp">Novo Departamento</a> <br> <a href="index.jsp">Home Page</a> </body> …

3. Pagina para actualizar informação de um Departamento

… <jsp:useBean id="departamento" scope="session" class="modelo.Departamento" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Actualizar Departamento</title> </head> <body> <form action="DepartamentoServlet?comando=actualizar" method="post"> <table width="40%" align="center"> <tr> <td><strong>Codigo:</strong> <br/> <input type="text" name="idCurso" value="${departamento.codigoDepartamento}" readonly="true" /></td> </tr> <tr> <td ><b>Departamento</b> <br/>

Page 41: CRUD Basico Com JSP Servlet MVC DAO

41

<input size="50" type="text" name="cursos" value="${departamento.nomeDepartamento}" maxlength="50"/></td> </tr> <tr> <td > <input type="submit" name="btAtualizar" value="Actualizar"/> </td> </tr> </table> </form> </body> </html> …

4. Pagina para adicionar um novo Funcionario

… <body> <center> <h2>Novo Funcionario</h2> <form action="FuncionarioServlet?comando=adicionar" name="novoFuncionario" method="POST"> <table width="50%"> <tr> <th align="center" bgcolor="#2E8B57" colspan="2">Dados do Funcionário</th> </tr> <tr> <td width="16%" align="left"><b>Nome</b></td> <td width="50%" align="left"><input size="50" type="text" name="txtNomeFuncionario" maxlength="50"/> </td> </tr> <tr> <td width="16%" align="left"><b>Sobrenome</b></td> <td width="50%" align="left"><input size="50" type="text" name="txtSobrenomeFuncionario"

Page 42: CRUD Basico Com JSP Servlet MVC DAO

42

maxlength="50"/> </td> </tr> <tr> <td width="16%" align="left"><b>Data de Nascimento</b></td> <td width="50%" align="left"><input type="text" name="txtDataNascimentoFuncionario"/> </td> </tr> <tr> <td width="16%" align="left"><b>Departamento</b></td> <td width="50%" align="left"> <select name="txtDepartamento"> <% DepartamentoDAO dao= new DepartamentoDAO(); List<Departamento> departamentosLista = dao.todosDepartamentos(); for (int i = 0; i < departamentosLista.size(); i++) { Departamento departamento = departamentosLista.get(i); %> <option value=<%= departamento.getCodigoDepartamento()%>><%= departamento.getNomeDepartamento()%> </option> <% } %> </select> </td> </tr> <tr> <td width="16%" align="left"><b>Salário</b></td> <td width="50%" align="left"> <input type="text" name="txtSalarioFuncionario"maxlength="50"/> </tr> <tr> <td colspan="2" bgcolor="#2E8B57" align="center">

Page 43: CRUD Basico Com JSP Servlet MVC DAO

43

<input type="submit" name="btCadastrar" value="Guardar" /> </td> </tr> </table> </form> </center> </body> …

2 . Pagina Para Visualizar os Funcionários

<body> <center> <h2>Lista do Pessoal</h2> <table width="100%"> <tr bgcolor="#2E8B57"> <th>Nome</th> <th>Sobrenome</th> <th>Data de Nascimento</th> <th>Departamento</th> <th >Salario</th> <th>Actualizar</th> <th>Eliminar</th> <tr bgcolor="#DCDCDC"> <% FuncionarioDAo dao = new FuncionarioDAO(); List<Funcionario> funcionarioLista = dao.buscaTodosFuncionarios(); for (int i = 0; i < funcionarioLista.size(); i++) { Funcionario funcionario = funcionarioLista.get(i); %> <td ><%= funcionario.getNomeFuncionario() %></td> <td ><%= funcionario.getSobrenomeFuncionario() %></td> <td ><%= funcionario.getDataNasceimentoFuncionario() %></td> <td ><%= funcionario.getDepartamento().getNomeDepartamento() %></td> <td ><%= funcionario.getSalarioFuncionario() %></td>

Page 44: CRUD Basico Com JSP Servlet MVC DAO

44

<td> <% out.println("<a href=\"FuncionarioServlet?comando=busca&txtCodigoFuncionario=" + funcionario.getCodigoFuncionario()+"\">Actualizar</a>"); %> </td> <td> <% out.println("<a href=\"FuncionarioServlet?comando=eliminar&txtCodigoFuncionario=" + funcionario.getCodigoFuncionario() +"\">Eliminar</a>"); %> </td> </tr> <% } %> </table> <br /> <a href="AdicionarFuncionario.jsp">Novo Funcionario</a> <br /> <a href="index.jsp">Home Page</a> </center> </body>

3 . Pagina Para Actualizar/Editar os dados dos Funcionários

<form action="FuncionarioServlet?comando=actualizar" method="POST"> <table width="20%" align="center" > <tr> <th height="23" colspan="2" align="center" bgcolor="#84D7A9">Dados do Funcionario</th> </tr> <tr> <td width="16%" align="left"><b>Código</b><br> <input size="10" type="text" name="txtCodigoFuncionario" readonly="readonly" value="${funcionario.codigoFuncionario}"

Page 45: CRUD Basico Com JSP Servlet MVC DAO

45

maxlength="50"/> </td> </tr <tr> <td width="50%" align="left"><b>Nome</b> <input size="50" type="text" name="txtNomeFuncionario" maxlength="50" value="${funcionario.nomeFuncionario}"/> </td> </tr> <tr> <td width="16%" align="left"><b>Sobrenome </b> <br> <input size="50" type="text" name="txtSobrenomeFuncionario" value="${funcionario.sobrenomeFuncionario}" maxlength="50"/> </b> </td> </tr> <tr> <td width="50%" align="left"> <b>Data de Nascimento</b><b>(dd/mm/aaaa)</b> <br> <input type="text" name="txtDataNascimentoFuncionario" value="<fmt:formatDate value="${funcionario.dataNasceimentoFuncionario}" type="DATE" pattern="dd/MM/yyyy"/>" /> </td> </tr> <tr> <td width="16%" align="left"> <p><b>Departamento </b><br/> <select name="txtDepartamento"> <option>--Seleccione um Departamento --</option> <% DepartamentoDAO dao= new DepartamentoDAO(); List<Departamento> departamentoLista = dao.todosDepartamentos(); for (int i = 0; i < departamentoLista.size(); i++) { Departamento departamento = departamentoLista.get(i); %> <option value='<%=

Page 46: CRUD Basico Com JSP Servlet MVC DAO

46

departamento.getCodigoDepartamento()%>'><%= departamento.getNomeDepartamento()%> </option> <% } %> </select> </b></p> </td> </tr> <tr> <td width="16%" align="left"><b>salário <input size="50" type="text" name="txtSalarioFuncionario" value="${funcionario.salarioFuncionario}" maxlength="50"/> </b> </td> </tr> <tr align="left"> <td align="center" bgcolor="#84D7A9" colspan="2"> <input type="submit" name="btAtualizar" value="Actualizar" </td> </tr> </table> </form>

Consulta Exemplo Será simulada o busca da lista de Funcionarios por departamento

Interface para a consulta

… <body> <center>

Page 47: CRUD Basico Com JSP Servlet MVC DAO

47

<form name="departamentoFuncionario" method="get" action="executaBuscaFuncionarioPorDepartamento.jsp" onsubmit="return validarFormulariomunicipio()"> <table> <tr> <td colspan="2" align="center" bgcolor="#2E8B57"><h3>Buscar Funcionario por Departamento</h3></td> </tr> <tr> <td width="169" align="left"><strong>Seleccione o Departamento</strong></td> <td width="103" align="left"><h3> <select name="txtDepartamento"> <option>Seleccione o Departamento</option> <% DepartamentoDAO dao= new DepartamentoDAO(); List<Departamento> departamentoLista = dao.todosDepartamentos(); for (int i = 0; i < departamentoLista.size(); i++) { Departamento departamento = departamentoLista.get(i); %> <option value=<%= departamento.getCodigoDepartamento() %>><%= departamento.getNomeDepartamento() %> </option> <% } %> </select> </h3></td> </tr> <tr> <td colspan="2" bgcolor="#2E8B57" align="center"><input name="submit" type="submit" value="Consultar" /> </td> </tr> </table> </form> </center> </body> … Pagina que processa a consulta

<body> <%

Page 48: CRUD Basico Com JSP Servlet MVC DAO

48

Integer departamento = Integer.parseInt(request.getParameter("txtDepartamento")); %> <center> <h2> Funcionários Encontrados</h2> <table > <tr> <td width="10%"><strong>Nome</strong></td> <td width="10%"><strong>Sobrenome</strong></td> <td width="10%"> <strong>Salário</strong></td> </tr> <tr> <% Connection con = null; con = Conexao.getConnection(); Statement stm = con.createStatement(); String sqle ="Select nomeFuncionario, sobrenomeFuncionario, salarioFuncionario" + " from funcionario f, departamento d" + " where f.codigoDepartamento = d.codigoDepartamento" + " and d.codigoDepartamento='"+departamento+"'"; ResultSet rse = stm.executeQuery(sqle); while (rse.next()) { String nome = rse.getString(1); String sobrenome = rse.getString(2); String salario = rse.getString(3); %> <td width="10%"> <%=nome%></td> <td width="10%"><%=sobrenome%></td> <td width="10%"><%= salario %></td> </tr> <% } %> </table> <br> <a href="buscarFuncionarioPorDepartamento.jsp">Voltar</a> <br> <a href="index.jsp">Home</a>

Page 49: CRUD Basico Com JSP Servlet MVC DAO

49

</center> </body>

Bom trabalho You should be the change that you want to see in the world"

("Você deve ser a mudança que quer ver no mundo") = Gandhi=