You are on page 1of 9

Padro MVC

Uneb LTP3
O que estudamos at agora?
HTML e javaScript
Servlet e JSP
Beans
JDBC

Mas qual a melhor opo para utilizarmos?
Servlet ou JSP?
Escrever HTML dentro de uma Servlet no
mnimo deselegante
Usar apenas JSP tambm no interessante
Muito cdigo java dentro do jsp
Vamos aproveitar o que h melhor em cada um
deles!
JSP foi feito para apresentar resultados, no para
instanciar objetos, acessar banco, etc.
Esse tipo de cdigo deve estar em classes Java
(servlets)
Vamos analisar um exemplo de servlet
para incluir os dados de um aluno
protected void processRequest(HttpServletRequest request, HttpServletResponse response) {

// acessa o bean
Aluno a = new Aluno();

// chama os setters ...
a.setNome(request.getParameter(nome);
...
// adiciona ao banco de dados
a.salvar();

// visualizao do resultado
out.println("<html>");
out.println("<body>");
out.println(Aluno " + a.getNome() + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
Cdigo Java
Cdigo HTML
Poderamos ter um arquivo .jsp com a parte de apresentao separada!
Precisamos redirecionar requisies
de um servlet para um JSP
Cliente
Servlet JSP
Beans
Banco
Fazemos um dispatch das
requisies
O JSP apenas um
renderizador
O processamento (negocio)
j foi executado

Redirecionamento
A API do java permite redirecionar requisies
Basta conhecer a URL que queremos acessar
Usamos o objeto RequestDispatcher

RequestDispatcher rd = request .getRequestDispatcher(confirmacaoAluno.jsp");
rd.forward(request,response);
O mtodo forward s pode ser chamado quando nada foi ainda escrito para a sada.

No momento que algo for escrito, fica impossvel redirecionar o usurio, pois o protocolo HTTP no
possui meios de voltar atrs naquilo que j foi enviado ao cliente.
Voltando ao MVC
(Model View Controller)
Controller: Nossa servlet funciona
como um controlador responsvel
por receber requisies, process-
las (acessando beans) e
redirecionar a sada para um JSP.
Pginas JSP
Servlet JSP
Beans
Banco
View: responsvel pela
apresentao dos dados
Model: processamento da
lgica, acesso ao banco.
DAO (Data Access Object)
No interessante colocar SQL dentro da
nossa lgica (classes de negcio)
O padro DAO orienta a criao de classes
especficas para fazer acesso ao banco de
dados. Pode-se implementar uma classe DAO
para persistir cada classe do negcio
Nesta classe teremos os mtodos para CRUD
(incluir, alterar, excluir, consultar)
Vamos implementar um exemplo
Criar uma pagina JSP para cadastro de alunos como cpf, nome, telefone e email. (View)
Criar uma pagina de confirmao do cadastro com a mensagem cadastro efetuado com sucesso
chamada confirmaCadAluno.jsp, que ser chamada pela Servlet (View)
Criar uma servlet controlador que ser chamada no action na pagina de cadastro de alunos
(Controller)
Receber os dados digitados na pgina
Criar o objeto Aluno (classe de negocio)
Setar os atributos de alunos
Criar o objeto AlunoDAO
Chamar o mtodo salvar
Redirecionar a requisio para uma pgina JSP de confirmao do cadastro (confirmaCadAluno.jsp)
Criar o bean Aluno (Model)
Criar a classe AlunoDAO com o mtodo salvar (Model)
Criar um banco com uma tabela chamada Aluno
Criar a classe Banco (para registrar o banco e fazer a conexao) (Model)

Rodar a aplicao

You might also like