SlideShare a Scribd company logo
1 of 40
Download to read offline
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>

More Related Content

What's hot

O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
Nécio de Lima Veras
 
Le langage Pascal
Le langage PascalLe langage Pascal
Le langage Pascal
Bruno Delb
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 

What's hot (20)

API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Aula 05 - Java Script Básico
Aula 05 -  Java Script BásicoAula 05 -  Java Script Básico
Aula 05 - Java Script Básico
 
PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de Dados
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Le langage Pascal
Le langage PascalLe langage Pascal
Le langage Pascal
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Threads 01: Criação e controle de threads
Threads 01: Criação e controle de threadsThreads 01: Criação e controle de threads
Threads 01: Criação e controle de threads
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Apresentação rest api
Apresentação rest apiApresentação rest api
Apresentação rest api
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 

Similar to Java Web - MVC básico com JSP e Servlets

[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
Felipe Pimentel
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
guestea329c
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial Ii
Mateus Ramos Pereira
 

Similar to Java Web - MVC básico com JSP e Servlets (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
 

More from 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
 

More from 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
 

Java Web - MVC básico com JSP e Servlets

  • 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>