[MÚSICA] Olá a todos, esse é o Curso de Desenvolvimento Ágil, com Java avançado. Meu nome é Eduardo Guerra, e vou falar para vocês aqui sobre MVC, utilizando Servlets e JSP. A gente vai ver aqui, nessa aula, como dividir as camadas de uma aplicação Web utilizando Servlets e JSP, e usando o padrão MVC para estruturar essas camadas. Certo? Vamos ver então. Uma coisa que acontece se a gente pegar resultado de processamento, então, imagina relatório, por exemplo, de vendas, as vezes você pode exibir o resultado, para o usuário, de formas diferentes. Então, eu vou exibir, por exemplo, gráfico trimestral ou, eu vou fazer uma tabela que vai ter essas informações, tá certo? Então, eu, por exemplo, já participei de projeto que todos os relatórios, eles tinham que estar formato pdf, excel e HTML. Então, muitas vezes, o mesmo processamento, ele gera resultados diferentes. Ele gera formas diferentes de ser exibida, apresentada para o usuário. Por outro lado, a gente pode ter, por exemplo, uma mesma apresentação como uma lista de usuários, eu posso, por exemplo, fazer a lista dos meus usuários que fizeram aniversário, como eu posso fazer a lista dos meus usuários que estão devendo alguma coisa. Então, às vezes eu também posso ter processamento diferentes, que vão ser lógicas diferentes, mas que a visualização desses dados vai ser a mesma. Então, como que eu faço isso? Como que eu reaproveito? Obviamente, se eu misturar a minha lógica de processamento com a minha lógica de exibição, isso me impede tanto de reutilizar a minha exibição, quanto de reutilizar o meu processamento. Então, a gente tem que desacoplar isso. A gente não pode fazer com que a nossa lógica de negócios, fique misturada com a lógica da exibição da informação. A gente tem sempre que separar isso, desacoplar isso.Certo? Então, o padrão MVC, que é o famoso Model View Controller, ele propõe uma divisão de camadas que você tem determinadas classes, no caso, seria o Model, que ficam responsáveis por essa lógica de negócios. A gente tem a View que é responsável pela exibição das informações. E, por fim, a gente tem o Controller que ele é a cola, ele que faz o gerenciamento ele que coordena a interação entre essas camadas. Certo? Então, vamos ver como é que fica isso. Então, o nosso model vão ser aquelas classes que sabem as regras de negócio. Muitas vezes são classes que mantém o estado do sistema. Então, por exemplo, num sistema de compra eu poderia ter carrinho de compras, uma classe que acessa o banco de dados, classes de domínio. A view já são aquelas classes que vão apresentar informação, que vão interagir com o usuário, vão pegar inputs do usuário. Então, como exemplo, a gente tem páginas do JSP, podemos ter componentes gráficos, as vezes até no formato de taglibs, como a gente viu na aula passada, widgets. Tudo isso daí faz parte da camada de View. E a gente tem o controller que intermedia essa ligação entre o model e o view como, por exemplo, o Servlets do que a gente está vendo quem utiliza o Framework com JSF, tem os Managed Beans, os Actions do Strut. E outros Frameworks web. Então, o Controller é aquele cara que recebe o primeiro contato do usuário quando bate no servidor, bate no Controller, que ele vai saber qual model que ele vai invocar e vai coordenar e vai chamar também a View correta, de acordo com o que ele chamar. Certo? Então, como é que funciona isso? A gente vai ter o cliente, mandando uma requisição para o web container, e isso aí vai bater no Servlet. Então, o Servlet ele vai pegar os parâmetros que ele está recebendo e vai, a partir daqueles parâmetros, invocar a lógica de negócio que for adequada ali. Então, vai pegar os objetos dele, vai chamar os métodos e vai pegar aquela resposta. Seguida, o que é que ele vai fazer? Ele vai pegar aquela resposta, vai colocar no escopo adequado. No caso aqui do exemplo de código, ele está colocando no request, mas ele poderia, por exemplo, colocar na sessão, ou na aplicação, se for o caso, e depois ele usa o RequestDispatcher para passar o controle para a página JSP. Que vai renderizar, que vai exibir aquelas informações da forma mais adequada. Então, assim eu consigo separar o meu modelo da minha visualização, e eu tenho o Controller que faz essa coordenação. Então, essa foi nossa aula do MVC, a gente vai fazer Hands On e vai mostrar para vocês como que o MVC funciona na prática. Então, estou esperando vocês na próxima aula. Muito obrigado. [MÚSICA]