SlideShare uma empresa Scribd logo
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);
    }
}
Java Web - MVC básico com JSP e Servlets
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>
Anúncio

Mais conteúdo relacionado

Mais procurados (20)

[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
Mayara Fernandes
 
Testing with Spring: An Introduction
Testing with Spring: An IntroductionTesting with Spring: An Introduction
Testing with Spring: An Introduction
Sam Brannen
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
Fabio Moura Pereira
 
Spring core module
Spring core moduleSpring core module
Spring core module
Raj Tomar
 
Teste de software
Teste de softwareTeste de software
Teste de software
Rafael Sanches
 
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
Funnelll
 
Diagrama sequencia
Diagrama sequenciaDiagrama sequencia
Diagrama sequencia
Diego Alves Pereira
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
Aaron Schram
 
Spring boot
Spring bootSpring boot
Spring boot
Gyanendra Yadav
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
Pravin Pundge
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentation
Volkan Uzun
 
Spring framework Introduction
Spring framework IntroductionSpring framework Introduction
Spring framework Introduction
Anuj Singh Rajput
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
Mayara Fernandes
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
Nécio de Lima Veras
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
Capgemini
 
Data Driven Testing
Data Driven TestingData Driven Testing
Data Driven Testing
Maveryx
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
Joeldson Costa Damasceno
 
Spring Boot
Spring BootSpring Boot
Spring Boot
koppenolski
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
sergiocrespo
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
Bhavin Shah
 
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
Mayara Fernandes
 
Testing with Spring: An Introduction
Testing with Spring: An IntroductionTesting with Spring: An Introduction
Testing with Spring: An Introduction
Sam Brannen
 
Spring core module
Spring core moduleSpring core module
Spring core module
Raj Tomar
 
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
Funnelll
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentation
Volkan Uzun
 
Spring framework Introduction
Spring framework IntroductionSpring framework Introduction
Spring framework Introduction
Anuj Singh Rajput
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
Mayara Fernandes
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
Capgemini
 
Data Driven Testing
Data Driven TestingData Driven Testing
Data Driven Testing
Maveryx
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
Joeldson Costa Damasceno
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
sergiocrespo
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
Bhavin Shah
 

Semelhante a Java Web - MVC básico com JSP e Servlets (20)

Servlets
ServletsServlets
Servlets
Denis L Presciliano
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
Campus Party Brasil
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
Campus Party Brasil
 
[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
 
Curso de Servlets
Curso de ServletsCurso de Servlets
Curso de Servlets
Marcelo Gonçalves
 
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
Zarathon Maia
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Alexandre Tarifa
 
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
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
Fábio Nogueira de Lucena
 
Java13
Java13Java13
Java13
Robson Silva Espig
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
Regis Magalhães
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
Henrique Gogó
 
Http Servlet
Http ServletHttp Servlet
Http Servlet
carlos.barros.67
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
Claudio Miranda
 
365on Lab - Asp.Net MVC
365on Lab - Asp.Net MVC365on Lab - Asp.Net MVC
365on Lab - Asp.Net MVC
Alexsandro Almeida
 
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
Denis L Presciliano
 
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
Valdir Junior
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
Moacir Casemiro Gomes Filho
 
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
Mario Sergio
 
Anúncio

Mais de 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
Eduardo Mendes
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
Eduardo Mendes
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
Eduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
Eduardo Mendes
 
Layout Fluido
Layout FluidoLayout Fluido
Layout Fluido
Eduardo Mendes
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
Eduardo Mendes
 
Html - Aula 4
Html - Aula 4Html - Aula 4
Html - Aula 4
Eduardo Mendes
 
Html - Aula 3
Html - Aula 3Html - Aula 3
Html - Aula 3
Eduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
Eduardo Mendes
 
ExtJS-4
ExtJS-4ExtJS-4
ExtJS-4
Eduardo Mendes
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
Eduardo Mendes
 
Jquery
JqueryJquery
Jquery
Eduardo 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 Software
Eduardo 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 2
Eduardo 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
 
Padrão Iterator
Padrão IteratorPadrão Iterator
Padrão Iterator
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
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
Eduardo Mendes
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
Eduardo Mendes
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
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 Objetos
Eduardo Mendes
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
Eduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
Eduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
Eduardo 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 Software
Eduardo 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 2
Eduardo 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
 
Anúncio

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); } }
  • 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>
  翻译: