Java Web - MVC básico com JSP e Servlets

40

Click here to load reader

Transcript of Java Web - MVC básico com JSP e Servlets

Page 1: Java Web - MVC básico com JSP e Servlets

JSP & Servlets Padrão MVC com JSP e Servlets

Page 2: Java Web - MVC básico com JSP e Servlets

Por que este modelo não vingou?

Page 3: Java Web - MVC básico com JSP e Servlets

Sistema e Requisitos

“Para que um sistema de informação alcance o objetivo para o qual foi

desenvolvido deve satisfazer certos interesses específicos – os requisitos –

sejam eles funcionais ou não funcionais”

Page 4: Java Web - MVC básico com JSP e Servlets

Tipos de Requisitos   Interface

  Recuperação de Dados

  Regras de Negócio

  Orientação a Objeto   Modelagem

Page 5: Java Web - MVC básico com JSP e Servlets

O que ocorre se requisitos estiverem acoplados?

Page 6: Java Web - MVC básico com JSP e Servlets

Requisitos Acoplados

Page 7: Java Web - MVC básico com JSP e Servlets

Requisitos Acoplados Problemática

  Dificuldade de Manutenção   Ex: Se o video queimar, tem que

colocar tudo no conserto   Difícil Evolução

Recuperação De Dados

Regras de Negócios

Interface

Page 8: Java Web - MVC básico com JSP e Servlets

Funcionalidades Acopladas Problemática

Interface

Recuperação De Dados

Regras de Negócios

Sistemas

Page 9: Java Web - MVC básico com JSP e Servlets

Separação de Interesses (SoC)   Melhor maneira de criar sistemas

gerenciáveis   Separação de interesses, Parnas (1972)   Modularização

  Por quê?   Ex: Não se pode assumir que uma lógica

de negócios somente será acessada por uma única interface

  Requisitos sempre mudam

Page 10: Java Web - MVC básico com JSP e Servlets

O que é um padrão de projeto?

Page 11: Java Web - MVC básico com JSP e Servlets

O padrão Model-View-Controller

  Como os Requisitos sempre mudam   é melhor que ocorra a separação da lógica de negócios da apresentação

  Nunca se deve assumir que uma lógica de negócios somente será acessada por uma aplicação web

Lógica  de  Negócios   Apresentação  

Page 12: Java Web - MVC básico com JSP e Servlets

12

O padrão Model-View-Controller

  Modelo   Representa a lógica do negócio   Aloja as entidades da aplicação   Pode interagir com a base de dados

  Visão   Responsável por exibir as informações ao

usuário

  Controle   Faz o meio de campo

Page 13: Java Web - MVC básico com JSP e Servlets

O padrão Model-View-Controller

  JSP e Servlets SEM MVC   Podemos considerar como o nosso primeiro

exemplo de Servlet   Tudo estava no Servlet

Page 14: Java Web - MVC básico com JSP e Servlets

O padrão Model-View-Controller

  JSP e Servlets com MVC

  MVC retira a lógica de negócios e a interface de dentro dos servlets,

  e põe em 2 camadas, a Modelo, usando classes Java simples e a Visão, com JSPs, respectivamente

  Os servlets atuarão como a camada de Controle

Page 15: Java Web - MVC básico com JSP e Servlets

MVC no mundo dos Servlets e JSPs

VIEW (Visão) Responsável pela apresentação. Recupera o estado do modelo através do controle. Também obtém a entrada do usuário e repassa para o controle

CONTROLLER (Controlador) Recupera a entrada do usuário a partir da requisição e o traduz para o modelo. Diz ao modelo para se atualizar e disponibiliza um novo estado para a visão

MODEL (Modelo)

Guarda a lógica e o estado do negócio. Conhece as regras para recuperar

e alterar o estado. É a parte do sistema

que interage com a base de dados

Page 16: Java Web - MVC básico com JSP e Servlets

Mini Tutorial

Page 17: Java Web - MVC básico com JSP e Servlets

Mini Tutorial

  3 passos   Estabeler a visão de usuário e uma arquitetura

de alto nível

  Criar as classes no Eclipse

  Executar desenvolvimentos e testes iterativos

Page 18: Java Web - MVC básico com JSP e Servlets

Visão do usuário Sugestões de cervejas

Page 19: Java Web - MVC básico com JSP e Servlets

O Html

  Crie 1 HTML na pasta WebContent do projeto

Page 20: Java Web - MVC básico com JSP e Servlets

O HTML <html> <body> <h1>Seleção de Cervejas</h1> <form method="post“ action="SelecionarCerveja.do"> <p> Selecione as características da cerveja</p> Cor: <select name="cor" size="1"> <option>Clara</option> <option>Translucida</option> <option>Marron</option> <option>Escura</option> </select> <br/><br/> <p>

<input type="submit“/> </p>

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

Page 21: Java Web - MVC básico com JSP e Servlets

O Html   Salve o HTML

  Inicie o tomcat no Eclipse

  Teste a página   http://localhost:8080/cervejaria/form.html

Page 22: Java Web - MVC básico com JSP e Servlets

O SERVLET

Page 23: Java Web - MVC básico com JSP e Servlets

Criar o Servlet

  getParameter(“nomeDoParametro”):String   Método do HttpServletRequest   Informe o nome de um parâmetro vindo de uma

requisição   E obtenha o valor(String) que o usuário informou

No HTML (Visão)

No Servlet (Controle

Page 24: Java Web - MVC básico com JSP e Servlets

Criar o Servlet

public class SelecaoCerveja extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

response.setContentType(“text/html”); PrintWriter out = response.getWriter(); String c = request.getParameter(“cor”); out.println(“<h1>Cervejas sugeridas</h1><br/>”); out.println(“<br/>Voce escolheu a cor ” + c); } }

Page 25: Java Web - MVC básico com JSP e Servlets

Editar o Deployment Descriptor

Mapeie o servlet   Escolha um nome lógico   Servlet-class

  br.com.exemplo.web.SelecaoCerveja   Url

  /SelecionarCerveja.do

Page 26: Java Web - MVC básico com JSP e Servlets

Testar   Iniciar o Tomcat

  Teste a página   http://localhost:8080/curso/form.html

  Selecione uma cor e clique em Enviar

Page 27: Java Web - MVC básico com JSP e Servlets

O MODELO

Page 28: Java Web - MVC básico com JSP e Servlets

Construir o Modelo

  Pacote   br.com.exemplo.model   A classe de modelo deve possuir um método

getMarcas()   Recebe uma cor e retorna uma lista de marcas

Page 29: Java Web - MVC básico com JSP e Servlets

CervejaExpert.java package br.com.exemplo.model; import java.util.*; public class CervejaExpert { public List<String> getMarcas(String cor) { List marcas = new ArrayList<String>(); if (cor.equals(“Clara”)) { marcas.add(“Antarctica”); marcas.add(“Brahma”); } else { marcas.add(“Bohemia”); marcas.add(“Original”); } return marcas; } }

Page 30: Java Web - MVC básico com JSP e Servlets

Como fazer o Controle acessar o Modelo?

Page 31: Java Web - MVC básico com JSP e Servlets

Como fazer o Controle acessar o Modelo?

Instancie a classe CervejaExpert no Servlet

Page 32: Java Web - MVC básico com JSP e Servlets

Servlet Versão 2

public class SelecaoCerveja extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

response.setContentType(“text/html”); PrintWriter out = response.getWriter(); String c = request.getParameter(“cor”); out.println(“<h1>Cervejas sugeridas</h1><br/>”); CervejaExpert ce = new CervejaExpert(); List<String> resultado = ce.getMarcas(c); Iterator it = resultado.iterator(); while(it.hasNext()) { out.println(“<br/>Experimente ” + it.next());

} } }

Page 33: Java Web - MVC básico com JSP e Servlets

O servlet deve disponibilizar um valor na requisição

  setAttribute(“nomeDoAtributo”, valor)   Método do HttpRequest   Configure um objeto como um atributo

  para ser recuperado através de um nome

  Obs:   Esse valor será acessado pela JSP (passo 6)

Page 34: Java Web - MVC básico com JSP e Servlets

Servlet prepara a bola para a JSP

  getRequestDispatcher(“pagina.jsp”): RequestDispatcher   Método do HttpRequest   Configura um objeto capaz de redirecionar o

fluxo da aplicação para uma JSP

Page 35: Java Web - MVC básico com JSP e Servlets

Servlet passa a bola para a JSP

  forward(request, response)   Método do RequestDispatcher   Redireciona o fluxo

Page 36: Java Web - MVC básico com JSP e Servlets

Servlet Versão 3

public class SelecaoCerveja extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

String c = request.getParameter(“cor”); CervejaExpert ce = new CervejaExpert(); List resultado= ce.getMarcas(c); request.setAttribute(“marcas”, resultado); RequestDispatcher rd = request.getRequestDispatcher(“resultado.jsp”); rd.forward(request,response); } }

Page 37: Java Web - MVC básico com JSP e Servlets
Page 38: Java Web - MVC básico com JSP e Servlets

Como a JSP acessará o atributo na requisição?

Se  no  Servlet  nós  usamos    

um  setA0ribute(),  então...  

Atcha, tcha, tcha, tcha!!! Deve ser com um

getAttribute() , passando o nome do atributo

Page 39: Java Web - MVC básico com JSP e Servlets

getAttribute(“nomeDoAtributo”)   Método do HttpRequest

  Recupera um objeto como um atributo disponível na requisição   através de um nome

Page 40: Java Web - MVC básico com JSP e Servlets

Jsp como View resultado.jsp

<%@ page import=“java.util” %> <html> <body> <h1>Selecao de Cervejas</h1> <p> <% List marcas = (List) request.getAttribute(“marcas”); Iterator it = marcas.iterator(); while (it.hasNext()) { out.println(“<br>Experimente: ” + it.next()); } %> </body> </html>