SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
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>

Más contenido relacionado

La actualidad más candente

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Heithem Abbes
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Aula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysAula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysJessyka Lage
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebAnderson Luís Furlan
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training sessionHrichi Mohamed
 
Servlet.ppt
Servlet.pptServlet.ppt
Servlet.pptVMahesh5
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoMorvana Bonin
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu BriendSOAT
 

La actualidad más candente (20)

Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
MSDN - ASP.NET MVC
MSDN - ASP.NET MVCMSDN - ASP.NET MVC
MSDN - ASP.NET MVC
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
CONEXÃO BANCO DE DADOS MYSQL  COM JAVACONEXÃO BANCO DE DADOS MYSQL  COM JAVA
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Aula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysAula 02 - JavaScript: Arrays
Aula 02 - JavaScript: Arrays
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento Web
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Servlet.ppt
Servlet.pptServlet.ppt
Servlet.ppt
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introdução
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
 

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

Similar a 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
 

Más de 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
 

Más 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
 
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>