SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
JSP & Servlets
Padrão MVC com JSP e Servlets
Por que este modelo
         não vingou?
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”
Tipos de Requisitos
    Interface

    Recuperação de Dados

    Regras de Negócio

    Orientação a Objeto
       Modelagem
O que ocorre se requisitos
     estiverem acoplados?
Requisitos Acoplados
Requisitos Acoplados
                               Problemática
    Dificuldade de Manutenção
       Ex: Se o video queimar, tem que
        colocar tudo no conserto
    Difícil Evolução
           Interface



       Recuperação
        De Dados


          Regras de
          Negócios
Funcionalidades Acopladas
                       Problemática

    Interface




Recuperação                Sistemas
 De Dados



   Regras de
   Negócios
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
O que é um
padrão de projeto?
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

               Lógica	
  
                                   Apresentação	
  
          de	
  Negócios	
  

         Nunca se deve assumir que uma lógica de
          negócios somente será acessada por uma
          aplicação web
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                  12
O padrão Model-View-Controller

    JSP e Servlets SEM MVC
       Podemos considerar como o nosso primeiro
        exemplo de Servlet
       Tudo estava no Servlet
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
MVC no mundo dos
   CONTROLLER (Controlador)          Servlets e JSPs
   Recupera a entrada do usuário
   a partir da requisição
   e o traduz para o modelo.                      MODEL (Modelo)
   Diz ao modelo para se
   atualizar e disponibiliza             Guarda a lógica e o estado
   um novo estado para a visão              do negócio. Conhece as
                                            regras para recuperar
                                                e alterar o estado.
                                              É a parte do sistema
VIEW (Visão)                                      que interage com
                                                   a base de dados
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
Mini Tutorial
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
Visão do usuário
Sugestões de cervejas
O Html



    Crie 1 HTML na pasta WebContent do projeto
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>
O Html
    Salve o HTML

    Inicie o tomcat no Eclipse

    Teste a página
       http://localhost:8080/cervejaria/form.html
O SERVLET
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
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);
    }
}
Editar o
                        Deployment Descriptor
Mapeie o servlet
    Escolha um nome lógico

    Servlet-class

           br.com.exemplo.web.SelecaoCerveja
      Url
           /SelecionarCerveja.do
Testar
    Iniciar o Tomcat

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



    Selecione uma cor e clique em Enviar
O MODELO
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
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;
  }
}
Como fazer o Controle
   acessar o Modelo?
Como fazer o Controle
       acessar o Modelo?


   Instancie a classe
CervejaExpert no Servlet
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());
        }
    }
}
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)
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
Servlet passa a bola
                             para a JSP
    forward(request, response)
        Método do RequestDispatcher

        Redireciona o fluxo
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);
    }
}
Como a JSP acessará
                o atributo na requisição?
  Se  no  Servlet             Atcha, tcha, tcha, tcha!!!
   nós  usamos                   Deve ser com um
um  setA0ribute(),              getAttribute() ,
       então...              passando o nome do atributo
getAttribute(“nomeDoAtributo”)
    Método do HttpRequest
       Recupera um objeto como um atributo
        disponível na requisição
            através de um nome
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>

Weitere ähnliche Inhalte

Was ist angesagt?

Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Aula 2 – Introdução a HTML - conceitos básicos e estrutura
Aula 2 – Introdução a HTML - conceitos básicos e estruturaAula 2 – Introdução a HTML - conceitos básicos e estrutura
Aula 2 – Introdução a HTML - conceitos básicos e estruturaAndré Constantino da Silva
 
What is component in reactjs
What is component in reactjsWhat is component in reactjs
What is component in reactjsmanojbkalla
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Ricardo Terra
 
今からでも遅くない! React事始め
今からでも遅くない! React事始め今からでも遅くない! React事始め
今からでも遅くない! React事始めynaruta
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018André Luiz Forchesatto
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSSledsifes
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 

Was ist angesagt? (20)

Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Aula 2 – Introdução a HTML - conceitos básicos e estrutura
Aula 2 – Introdução a HTML - conceitos básicos e estruturaAula 2 – Introdução a HTML - conceitos básicos e estrutura
Aula 2 – Introdução a HTML - conceitos básicos e estrutura
 
What is component in reactjs
What is component in reactjsWhat is component in reactjs
What is component in reactjs
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Major Java 8 features
Major Java 8 featuresMajor Java 8 features
Major Java 8 features
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 
今からでも遅くない! React事始め
今からでも遅くない! React事始め今からでも遅くない! React事始め
今からでも遅くない! React事始め
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSS
 
Html Básico
Html BásicoHtml Básico
Html Básico
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Diagrama sequencia
Diagrama sequenciaDiagrama sequencia
Diagrama sequencia
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 

Ähnlich wie JSP e Servlets com MVC

Ähnlich wie JSP e Servlets com MVC (20)

Servlets
ServletsServlets
Servlets
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2
 
Curso de Servlets
Curso de ServletsCurso de Servlets
Curso de Servlets
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial Ii
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
 
Java13
Java13Java13
Java13
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Http Servlet
Http ServletHttp Servlet
Http Servlet
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
365on Lab - Asp.Net MVC
365on Lab - Asp.Net MVC365on Lab - Asp.Net MVC
365on Lab - Asp.Net MVC
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações Web
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 

Mehr von Eduardo Mendes

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - FundamentosEduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de ProjetoEduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTMLEduardo Mendes
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEduardo Mendes
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails Eduardo Mendes
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Eduardo Mendes
 

Mehr von Eduardo Mendes (20)

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
 
Layout Fluido
Layout FluidoLayout Fluido
Layout Fluido
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Html - Aula 4
Html - Aula 4Html - Aula 4
Html - Aula 4
 
Html - Aula 3
Html - Aula 3Html - Aula 3
Html - Aula 3
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
 
ExtJS-4
ExtJS-4ExtJS-4
ExtJS-4
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Jquery
JqueryJquery
Jquery
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de Software
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails
 
Padrão Iterator
Padrão IteratorPadrão Iterator
Padrão Iterator
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 

JSP e Servlets com MVC

  • 1. JSP & Servlets Padrão MVC com JSP e Servlets
  • 2. Por que este modelo não vingou?
  • 3. 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”
  • 4. Tipos de Requisitos   Interface   Recuperação de Dados   Regras de Negócio   Orientação a Objeto   Modelagem
  • 5. O que ocorre se requisitos estiverem acoplados?
  • 7. Requisitos Acoplados Problemática   Dificuldade de Manutenção   Ex: Se o video queimar, tem que colocar tudo no conserto   Difícil Evolução Interface Recuperação De Dados Regras de Negócios
  • 8. Funcionalidades Acopladas Problemática Interface Recuperação Sistemas De Dados Regras de Negócios
  • 9. 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
  • 10. O que é um padrão de projeto?
  • 11. 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 Lógica   Apresentação   de  Negócios     Nunca se deve assumir que uma lógica de negócios somente será acessada por uma aplicação web
  • 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 12
  • 13. O padrão Model-View-Controller   JSP e Servlets SEM MVC   Podemos considerar como o nosso primeiro exemplo de Servlet   Tudo estava no Servlet
  • 14. 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
  • 15. MVC no mundo dos CONTROLLER (Controlador) Servlets e JSPs Recupera a entrada do usuário a partir da requisição e o traduz para o modelo. MODEL (Modelo) Diz ao modelo para se atualizar e disponibiliza Guarda a lógica e o estado um novo estado para a visão do negócio. Conhece as regras para recuperar e alterar o estado. É a parte do sistema VIEW (Visão) que interage com a base de dados 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
  • 17. 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
  • 19. O Html   Crie 1 HTML na pasta WebContent do projeto
  • 20. 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>
  • 21. O Html   Salve o HTML   Inicie o tomcat no Eclipse   Teste a página   http://localhost:8080/cervejaria/form.html
  • 23. 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
  • 24. 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); } }
  • 25. Editar o Deployment Descriptor Mapeie o servlet   Escolha um nome lógico   Servlet-class   br.com.exemplo.web.SelecaoCerveja   Url   /SelecionarCerveja.do
  • 26. Testar   Iniciar o Tomcat   Teste a página   http://localhost:8080/curso/form.html   Selecione uma cor e clique em Enviar
  • 28. 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
  • 29. 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; } }
  • 30. Como fazer o Controle acessar o Modelo?
  • 31. Como fazer o Controle acessar o Modelo? Instancie a classe CervejaExpert no Servlet
  • 32. 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()); } } }
  • 33. 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)
  • 34. 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
  • 35. Servlet passa a bola para a JSP   forward(request, response)   Método do RequestDispatcher   Redireciona o fluxo
  • 36. 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); } }
  • 37.
  • 38. Como a JSP acessará o atributo na requisição? Se  no  Servlet   Atcha, tcha, tcha, tcha!!! nós  usamos     Deve ser com um um  setA0ribute(),   getAttribute() , então...   passando o nome do atributo
  • 39. getAttribute(“nomeDoAtributo”)   Método do HttpRequest   Recupera um objeto como um atributo disponível na requisição   através de um nome
  • 40. 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>