[MÚSICA] Olá, meu nome é Eduardo Guerra. Estamos no Curso de Desenvolvimento Ágil com Java Avançado. Hoje, vamos falar sobre a criação de Java servlets. Então, o objetivo dessa aula é que você saia entendo aí os principais elementos de servlet para a geração das páginas dinâmicas. A primeira coisa que a gente tem que saber é que o servlet, ele dentro da arquitetura de referência Java EE, ele é o tipo de componente que trata uma requisição Web. Então, isso significa que você colocando-o dentro de Web container, que seria ali por exemplo o Tomcat, o mais famoso não é? Temos também aí o GlassFish, que até faz várias coisas a mais ali. Esse, o servlet sendo colocado ali dentro, ele vai ser o tipo de componente que vai ser chamado como resposta a requisições, a requests enviados para aquele servidor. Então, a primeira, a gente tem aqui do lado servlet, a gente vai, fique tranquilo, se você não entendeu, porque a gente vai meio que tentar esmiuçar pouco cada desses elementos. Então, a primeira coisa que a gente tem que entender é essa anotação que é colocada na parte de cima aqui desse componente. O quê que ela faz? Essa anotação WebServlet, ela pode ter outras configurações, mas a principal dela é configurar a URL que vai, que aquele servlet vai estar respondendo. Então, a gente pode ver ali cima, a gente tem ali o barra test não é? E eu acessaria ali cima a URL como, se eu acessar como barra test, o meu servidor web vai estar redirecionando aquela requisição para aquele servlet tratar. É importante que o servlet, ele estenda a classe HttpServlet e existem alguns métodos que você pode sobrescrever como o método do get, se você quiser tratar requisições feitas no método get, ou o método do post, se você quiser tratar requisições feitas com o método post. Os parâmetros desse método, do get ou do post, eles são do tipo HttpServletRequest e HttpServletResponse. O quê que significa isso? Significa que o HttpServletRequest é aquele objeto, que eu falei na aula passada, que está representando aqueles elementos do request e o HttpServletResponse, ele está representando aquela resposta que vai estar sendo enviada depois. Então, a gente viu lá no protocolo HTTP, que tem esses elementos do request e do response, e esses objetos estão representando esses elementos do protocolo. Por isso, é importante a gente entender o protocolo antes de entrar diretamente nas aplicações web. Então, o quê que vai acontecer? Se a gente quer alguma coisa referente a requisição, a gente vai utilizar o objeto request e, se a gente quer alguma coisa, quer setar, quer configurar alguma coisa referente a resposta, a gente vai estar utilizando o objeto response. Então, vamos ver pouquinho das coisas que a gente pode fazer com o request. Então, a partir do objeto request, a gente pode por exemplo estar recuperando parâmetros, a gente pode estar recuperando headers, que são aquelas coisas que vêm, o browser, a linguagem, aquilo ali são headers do protocolo HTTP que a gente pode estar recuperando. A gente pode recuperar cookies, a gente pode recuperar o método HTTP, a gente pode até recuperar o InputStream da requisição, que é uma coisa rara de acontecer, mas por exemplo se é upload de arquivo ou uma requisição diferenciada, você tem até, digamos assim, esse poder de recuperar esse InputStream. Então, vendo exemplo aqui de código, a gente pode ver por exemplo no caso de eu passar parâmetro para o meu servlet, no caso ali eu passei o parâmetro nome igual a Guerra, utilizando query string, que só vai ser considerado no método do get, que a gente viu que essa é a forma de passar parâmetros para requisições get. A gente pode usar o request, objeto HttpServletRequest, para chamar o método getParameter e com isso estar recuperando essa informação que está sendo passada como parâmetro para a página. O objeto response a gente pode, por outro lado, configurar os headers do protocolo HTTP que vão estar indo na resposta, a gente pode configurar o tipo de conteúdo. Normalmente servlet acaba retornando o conteúdo HTML ou conteúdo desse tipo. Só que a gente pode, por exemplo, eu vou fazer servlet que gera gráfico por exemplo e retorna a imagem com aquele gráfico, ou que gera relatório pdf e retorna o pdf. Então, nesses casos, a gente tem que por exemplo mudar o tipo de conteúdo, para que, você já acessou aquela página que aparecem monte de letrinhas malucas assim? É mais ou menos aquilo ali que acontece, quando você, por exemplo, está tentando recuperar uma imagem e por algum motivo não veio o tipo de conteúdo ou navegador não conseguiu ler isso de forma correta e ele tenta interpretar aquela imagem como HTML e aí sai aquela maluquice lá. Então, se você quer retornar alguma coisa, é importante você setar o tipo de conteúdo para que o navegador saiba interpretar da forma correta o que você está querendo fazer ali. E você pode também retornar dado binário, como eu falei aqui como uma figura, relatório pdf, pode inclusive estar redirecionando, usando o response, a página para outro recurso ali terminar de processar. Então, para a gente ver aqui como exemplo, seguindo o exemplo que a gente viu anteriormente, eu recuperei o nome, eu quero imprimir Hello aquele nome. Então, nesse caso eu vou usar a response, o HttpServletResponse, eu vou dar o getWriter, que permite escrever nessa resposta, escrever nessa saída do servlet, e ali eu posso escrever por exemplo o Hello name. Então, aí exemplo que a gente vai utilizar no nosso hands on. Uma coisa importante que eu vou aproveitar para mostrar, que é muito importante principalmente quando a gente está, a gente vai utilizar o MVC e a gente vai, por exemplo, não ficar imprimindo o código da página HTML no servlet, mas vai passar para uma página jsp fazer isso, que a gente vai ver nas próximas aulas como é que a gente faz essa divisão, quando a gente for falar do MVC, a gente pode repassar internamente no servidor o controle daquela requisição para outro recurso. Então, nesse caso eu uso esse servlet dispatcher ou RequestDispatcher, me desculpe. Então, a gente usa o response e dá getRequestDispatcher, passando o nome do recurso, no caso ali seria por exemplo uma página jsp, também vamos falar mais sobre elas mais à frente, e eu uso esse método forward para repassar o controle para essa página. Então, é como se eu tivesse ali, o meu servlet fosse correndo e naquele momento, ele faz o processamento que ele tem que fazer, e naquele momento ele passa ali o bastão para outra, uma página jsp, pode até ser outro servlet, terminar de realizar aquele processamento. Então, espero que com essa aula vocês tenham entendido aí o básico da estrutura de servlet e, na próxima aula, vamos fazer hands on, onde você vai criar o seu primeiro servlet. Muito obrigado. Até a próxima! [MÚSICA]