Um Servlet Contêiner controla o ciclo de vida de uma servlet...

Próximas questões
Com base no mesmo assunto
Ano: 2013 Banca: FCC Órgão: DPE-SP Prova: FCC - 2013 - DPE-SP - Programador de computador |
Q304602 Programação
Um Servlet Contêiner controla o ciclo de vida de uma servlet onde são invocados três métodos essenciais: um para inicializar a instância da servlet, um para processar a requisição e outro para descarregar a servlet da memória. Os itens a seguir representam, nessa ordem, o que ocorre quando um usuário envia uma requisição HTTP ao servidor:

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
Alternativas

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

II - O Servlet Contêiner invoca o método init da servlet. Esse método é chamado em toda requisição do usuário à servlet 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 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