[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]