Java Web - MVC básico com JSP e Servlets
Click here to load reader
-
Upload
eduardo-mendes-de-oliveira -
Category
Documents
-
view
12.105 -
download
2
Transcript of Java Web - MVC básico com JSP e Servlets
![Page 1: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/1.jpg)
JSP & Servlets Padrão MVC com JSP e Servlets
![Page 2: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/2.jpg)
Por que este modelo não vingou?
![Page 3: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/3.jpg)
Sistema e Requisitos
“Para que um sistema de informação alcance o objetivo para o qual foi
desenvolvido deve satisfazer certos interesses específicos – os requisitos –
sejam eles funcionais ou não funcionais”
![Page 4: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/4.jpg)
Tipos de Requisitos Interface
Recuperação de Dados
Regras de Negócio
Orientação a Objeto Modelagem
![Page 5: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/5.jpg)
O que ocorre se requisitos estiverem acoplados?
![Page 6: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/6.jpg)
Requisitos Acoplados
![Page 7: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/7.jpg)
Requisitos Acoplados Problemática
Dificuldade de Manutenção Ex: Se o video queimar, tem que
colocar tudo no conserto Difícil Evolução
Recuperação De Dados
Regras de Negócios
Interface
![Page 8: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/8.jpg)
Funcionalidades Acopladas Problemática
Interface
Recuperação De Dados
Regras de Negócios
Sistemas
![Page 9: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/9.jpg)
Separação de Interesses (SoC) Melhor maneira de criar sistemas
gerenciáveis Separação de interesses, Parnas (1972) Modularização
Por quê? Ex: Não se pode assumir que uma lógica
de negócios somente será acessada por uma única interface
Requisitos sempre mudam
![Page 10: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/10.jpg)
O que é um padrão de projeto?
![Page 11: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/11.jpg)
O padrão Model-View-Controller
Como os Requisitos sempre mudam é melhor que ocorra a separação da lógica de negócios da apresentação
Nunca se deve assumir que uma lógica de negócios somente será acessada por uma aplicação web
Lógica de Negócios Apresentação
![Page 12: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/12.jpg)
12
O padrão Model-View-Controller
Modelo Representa a lógica do negócio Aloja as entidades da aplicação Pode interagir com a base de dados
Visão Responsável por exibir as informações ao
usuário
Controle Faz o meio de campo
![Page 13: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/13.jpg)
O padrão Model-View-Controller
JSP e Servlets SEM MVC Podemos considerar como o nosso primeiro
exemplo de Servlet Tudo estava no Servlet
![Page 14: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/14.jpg)
O padrão Model-View-Controller
JSP e Servlets com MVC
MVC retira a lógica de negócios e a interface de dentro dos servlets,
e põe em 2 camadas, a Modelo, usando classes Java simples e a Visão, com JSPs, respectivamente
Os servlets atuarão como a camada de Controle
![Page 15: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/15.jpg)
MVC no mundo dos Servlets e JSPs
VIEW (Visão) Responsável pela apresentação. Recupera o estado do modelo através do controle. Também obtém a entrada do usuário e repassa para o controle
CONTROLLER (Controlador) Recupera a entrada do usuário a partir da requisição e o traduz para o modelo. Diz ao modelo para se atualizar e disponibiliza um novo estado para a visão
MODEL (Modelo)
Guarda a lógica e o estado do negócio. Conhece as regras para recuperar
e alterar o estado. É a parte do sistema
que interage com a base de dados
![Page 16: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/16.jpg)
Mini Tutorial
![Page 17: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/17.jpg)
Mini Tutorial
3 passos Estabeler a visão de usuário e uma arquitetura
de alto nível
Criar as classes no Eclipse
Executar desenvolvimentos e testes iterativos
![Page 18: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/18.jpg)
Visão do usuário Sugestões de cervejas
![Page 19: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/19.jpg)
O Html
Crie 1 HTML na pasta WebContent do projeto
![Page 20: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/20.jpg)
O HTML <html> <body> <h1>Seleção de Cervejas</h1> <form method="post“ action="SelecionarCerveja.do"> <p> Selecione as características da cerveja</p> Cor: <select name="cor" size="1"> <option>Clara</option> <option>Translucida</option> <option>Marron</option> <option>Escura</option> </select> <br/><br/> <p>
<input type="submit“/> </p>
</form> </body> </html>
![Page 21: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/21.jpg)
O Html Salve o HTML
Inicie o tomcat no Eclipse
Teste a página http://localhost:8080/cervejaria/form.html
![Page 22: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/22.jpg)
O SERVLET
![Page 23: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/23.jpg)
Criar o Servlet
getParameter(“nomeDoParametro”):String Método do HttpServletRequest Informe o nome de um parâmetro vindo de uma
requisição E obtenha o valor(String) que o usuário informou
No HTML (Visão)
No Servlet (Controle
![Page 24: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/24.jpg)
Criar o Servlet
public class SelecaoCerveja extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType(“text/html”); PrintWriter out = response.getWriter(); String c = request.getParameter(“cor”); out.println(“<h1>Cervejas sugeridas</h1><br/>”); out.println(“<br/>Voce escolheu a cor ” + c); } }
![Page 25: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/25.jpg)
Editar o Deployment Descriptor
Mapeie o servlet Escolha um nome lógico Servlet-class
br.com.exemplo.web.SelecaoCerveja Url
/SelecionarCerveja.do
![Page 26: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/26.jpg)
Testar Iniciar o Tomcat
Teste a página http://localhost:8080/curso/form.html
Selecione uma cor e clique em Enviar
![Page 27: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/27.jpg)
O MODELO
![Page 28: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/28.jpg)
Construir o Modelo
Pacote br.com.exemplo.model A classe de modelo deve possuir um método
getMarcas() Recebe uma cor e retorna uma lista de marcas
![Page 29: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/29.jpg)
CervejaExpert.java package br.com.exemplo.model; import java.util.*; public class CervejaExpert { public List<String> getMarcas(String cor) { List marcas = new ArrayList<String>(); if (cor.equals(“Clara”)) { marcas.add(“Antarctica”); marcas.add(“Brahma”); } else { marcas.add(“Bohemia”); marcas.add(“Original”); } return marcas; } }
![Page 30: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/30.jpg)
Como fazer o Controle acessar o Modelo?
![Page 31: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/31.jpg)
Como fazer o Controle acessar o Modelo?
Instancie a classe CervejaExpert no Servlet
![Page 32: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/32.jpg)
Servlet Versão 2
public class SelecaoCerveja extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType(“text/html”); PrintWriter out = response.getWriter(); String c = request.getParameter(“cor”); out.println(“<h1>Cervejas sugeridas</h1><br/>”); CervejaExpert ce = new CervejaExpert(); List<String> resultado = ce.getMarcas(c); Iterator it = resultado.iterator(); while(it.hasNext()) { out.println(“<br/>Experimente ” + it.next());
} } }
![Page 33: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/33.jpg)
O servlet deve disponibilizar um valor na requisição
setAttribute(“nomeDoAtributo”, valor) Método do HttpRequest Configure um objeto como um atributo
para ser recuperado através de um nome
Obs: Esse valor será acessado pela JSP (passo 6)
![Page 34: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/34.jpg)
Servlet prepara a bola para a JSP
getRequestDispatcher(“pagina.jsp”): RequestDispatcher Método do HttpRequest Configura um objeto capaz de redirecionar o
fluxo da aplicação para uma JSP
![Page 35: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/35.jpg)
Servlet passa a bola para a JSP
forward(request, response) Método do RequestDispatcher Redireciona o fluxo
![Page 36: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/36.jpg)
Servlet Versão 3
public class SelecaoCerveja extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
String c = request.getParameter(“cor”); CervejaExpert ce = new CervejaExpert(); List resultado= ce.getMarcas(c); request.setAttribute(“marcas”, resultado); RequestDispatcher rd = request.getRequestDispatcher(“resultado.jsp”); rd.forward(request,response); } }
![Page 37: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/37.jpg)
![Page 38: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/38.jpg)
Como a JSP acessará o atributo na requisição?
Se no Servlet nós usamos
um setA0ribute(), então...
Atcha, tcha, tcha, tcha!!! Deve ser com um
getAttribute() , passando o nome do atributo
![Page 39: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/39.jpg)
getAttribute(“nomeDoAtributo”) Método do HttpRequest
Recupera um objeto como um atributo disponível na requisição através de um nome
![Page 40: Java Web - MVC básico com JSP e Servlets](https://reader037.fdocuments.net/reader037/viewer/2022100220/5562f8b4d8b42a62598b4861/html5/thumbnails/40.jpg)
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>