Um Servlet Contêiner controla o ciclo de vida de uma servlet...
I. A requisição HTTP recebida pelo servidor é encaminhada ao Servlet Contêiner que mapeia esse pedido para uma servlet específica.
II. O Servlet Contêiner invoca o método init da servlet. Esse método é chamado em toda requisição do usuário à servlet não sendo possível passar parâmetros de inicialização.
III. O Servlet Contêiner invoca o método service da servlet para processar a requisição HTTP, passando os objetos request e response. O método service não é chamado a cada requisição, mas apenas uma vez, na primeira requisição do usuário à servlet.
IV. Para descarregar a servlet da memória, o Servlet Contêiner chama o método unload, que faz com que o garbage collector retire a instância da servlet da memória.
Está correto o que se afirma em
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a B - I, apenas.
Para entender o ciclo de vida de uma servlet, é importante reconhecer as responsabilidades do Servlet Contêiner e os métodos envolvidos. Vamos analisar cada afirmação:
- I. Quando uma requisição HTTP é recebida, o servidor a encaminha para o Servlet Contêiner, que é responsável por mapear essa requisição a uma servlet específica. Este processo está correto e representa uma função primária do contêiner no ciclo de vida de uma servlet.
- II. O método init() é invocado pelo Servlet Contêiner apenas uma vez, quando a servlet é criada, e não a cada requisição do usuário. Além disso, ele pode receber parâmetros de inicialização através do objeto ServletConfig, tornando essa afirmação incorreta.
- III. O método service() é chamado pelo Servlet Contêiner para processar cada requisição HTTP e não apenas na primeira requisição. Este método é responsável por delegar a requisição ao método apropriado (doGet, doPost, etc.) com base no tipo da requisição HTTP. Portanto, essa afirmação é também incorreta.
- IV. Para descarregar a servlet da memória, o método utilizado pelo Servlet Contêiner é o destroy(), e não unload. Além disso, o garbage collector não é explicitamente chamado pelo método destroy(); a instância da servlet torna-se elegível para coleta de lixo após o método destroy() ser executado e a instância não tiver mais referências. Essa afirmação é, portanto, incorreta.
Com base na análise das afirmações, podemos concluir que apenas a afirmação I está correta, justificando a alternativa B como a resposta correta para a questão.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
III. O Servlet Contêiner invoca o método service da servlet para processar a requisição HTTP, passando os objetos request e response. O método init não é chamado a cada requisição, mas apenas uma vez, na primeira requisição do usuário à servlet.
IV. Para descarregar a servlet da memória, o Servlet Contêiner chama o método destroy(), que faz com que o garbage collector retire a instância da servlet da memória.
complementando
I. Classe HttpServlet ( Request , Response ). Métodos #DoGet e Post.
II. Invoca, chama o construtor. Cria/instância o objeto.
III. Service() é chamado 1x por cada requisição.
II = INIT É CHAMADO APENAS UMA VEZ
III = SERVICE É CHAMADO A CADA REQUISIÇÃO
III = UNLOAD NÃO EXISTE, EXISTE O DESTROY
GABARITO A
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo