Servlets estendem a funcionalidade de um servidor, permiti...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - o contêiner de servlets envia solicitações de HTTP para um servidor e direciona cada solicitação ao servlet apropriado.
Para compreender a questão e justificar por que a alternativa C é a correta, é necessário entender os conceitos básicos dos servlets e de como eles operam dentro de um ambiente web. Os servlets são classes Java que permitem estender as capacidades dos servidores que hospedam aplicações acessadas via protocolo HTTP, permitindo a geração de conteúdo dinâmico.
Os métodos de ciclo de vida dos servlets são definidos na interface Servlet, como mencionado na alternativa A, que incluem init(), service() e destroy(). Estes métodos são chamados em momentos específicos: init() quando o servlet é inicializado, service() para cada solicitação recebida, e destroy() quando o servlet é retirado de serviço.
Quanto à alternativa B, de fato existe um componente chamado contêiner de servlets (ou Servlet Container) que é responsável por carregar, inicializar, chamar e encerrar os servlets. Ele faz parte do servidor web ou da aplicação e gerencia os recursos que os servlets usam, como o ciclo de vida e as requisições/respostas HTTP.
Na alternativa D, a descrição está correta. Quando um servlet vai ser encerrado, o método destroy() é chamado pelo contêiner para que o servlet possa liberar quaisquer recursos que esteja mantendo e realizar uma limpeza antes de ser coletado pelo Garbage Collector do Java.
Já na alternativa E, está correto afirmar que os servlets precisam implementar a interface Servlet ou, mais comumente, estender uma classe que já a implemente, como HttpServlet do pacote javax.servlet. Essa implementação assegura que o servlet poderá ser gerenciado pelo contêiner e responder a solicitações HTTP.
No entanto, a alternativa C é incorreta porque descreve de maneira equivocada a responsabilidade do contêiner de servlets. Na realidade, o contêiner não envia solicitações ao servidor; pelo contrário, ele recebe as solicitações de clientes que chegam ao servidor, cria os objetos HttpServletRequest e HttpServletResponse e, então, direciona essas solicitações para o servlet apropriado, com base na configuração de mapeamento de URL definida para a aplicação. Portanto, é o servidor que recebe as solicitações e as passa adiante para o contêiner, e não o contêiner que as envia ao servidor.
Entender essa dinâmica é crucial para a correta compreensão do funcionamento dos servlets em um ambiente de aplicação web, permitindo assim que se desenvolva aplicações robustas e eficientes.
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
Alguém pode explicar???
Paulo, eu também errei, pois fiquei entre a C e a E. Mas vamos as alternativas.
A. Correta. A interface Servlet declara os métodos de ciclo de vida dos servlets: init(ServletConfig s), chamado quando o servlet é inicializado; service(ServletRequest req, ServletResponse res), chamado para tratar as requisições dos clientes e enviar as respostas; destroy(), trata da destruição do servlet e liberação de recursos.
B. Correta. Todo servlet precisa de um container para ser executado.
C. Errada. Não é o container que envia solicitações para o servidor, quem as envia é o cliente. As quatro principais etapas são:
1. Cliente envia solicitação ao servidor;
2. O servidor invoca, através do seu container, o servlet indicado para a solicitação do serviço solicitado;
3. O servlet gera o conteúdo em resposta a solicitação do cliente;
4. O servidor repassa o resultado gerado pelo servlet para o cliente, em geral, como uma resposta HTTP convencional.
Ref: http://miscelaneadoconhecimento.com/java/servlet/javaservlet.html
D. Correta. Conforme explicado na letra A, o método destroy libera os recursos usados pelo servlet.
E. Correta. Todos os servlets devem implementar a interface Servlet. Existe a classe GenericServlet e a HTTPServlet. Ambas implementam a interface Servlet, a primeira de forma direta, e a segunda de forma indireta, já que HTTPServlet é uma especialização de GenericServlet.
Questão deveria ser anulada, na letra A afirma que Servlet é uma interface. ERRO pois é uma classe.
É mesmo uma discussão e tanto esta questão: Em modelagem (UML), a interface pode ser vista como um protocolo de comportamento, ou seja, uma lista de métodos abstratos com ou sem variáveis. E para usar esta interface, é preciso criar uma classe que implemente tudo isso.
De fato, a resposta C está certa. Ou errada neste caso, porque o servlet (servidor) recebe uma solicitação http, processa e devolve para o cliente.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo