Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FCC 2021

ProgramaçãoLinguagens de programação
Código
fc060811
Banca
FCC
Órgão
TJ-SC
Ano
2021
Cargo
Analista de Sistemas
Em uma servlet, de um site desenvolvido em Java, o fragmento de código abaixo retorna uma lista de processos para o arquivo exibir_processos.jsp.ProcessosDao dados = new ProcessosDao(); ArrayList<Processo> listaProcessos = dados.consultar(processo); request.setAttribute("retornaProcessos", listaProcessos); RequestDispatcher disp = request.getRequestDispatcher("exibir_processos.jsp"); disp.forward(request, response); No arquivo exibir_processos.jsp, para receber a lista de processos, utiliza-se a instrução
  1. A<%ArrayList<Processo> listaProcessos = request.getAttribute ("retornaProcessos");%>
  2. B<%ArrayList<Processo> listaProcessos = (Processo) request.getList("retornaProcessos");%>
  3. C<%ArrayList<Processo> listaProcessos = ${retornaProcessos};%>
  4. D<%ArrayList<Processo> listaProcessos = (ArrayList<Processo>) request.getAttribute ("retornaProcessos");%>
  5. E<%ArrayList listaProcessos = (ArrayList<Processo>) $_REQUEST.getParameter ("retornaProcessos");%>
Revelar gabarito e comentário

GabaritoD — <%ArrayList<Processo> listaProcessos = (ArrayList<Processo>) request.getAttribute ("retornaProcessos");%>

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Servlet e JSP: recuperando atributos do request

Gabarito: Letra D. A forma correta de recuperar um atributo armazenado no request (via request.setAttribute) em um JSP é utilizando request.getAttribute("nome") e fazendo o cast explícito para o tipo correto. No caso, como o atributo é um ArrayList<Processo>, devemos escrever: (ArrayList<Processo>) request.getAttribute("retornaProcessos").

A banca testa o conhecimento de como transferir dados de uma Servlet para um JSP através de atributos de requisição. O método setAttribute armazena um objeto no escopo do request; getAttribute recupera esse objeto como Object, portanto é obrigatório o cast.

Alternativa A — ❌ Incorreta

<%ArrayList<Processo> listaProcessos = request.getAttribute ("retornaProcessos");%> — request.getAttribute retorna um Object, e não pode ser atribuído diretamente a uma variável de tipo específico sem cast. Erro de compilação.

Alternativa B — ❌ Incorreta

<%ArrayList<Processo> listaProcessos = (Processo) request.getList("retornaProcessos");%> — Não existe método getList em HttpServletRequest. Além disso, o cast é para Processo e não para ArrayList<Processo>, o que também estaria errado.

Alternativa C — ❌ Incorreta

<%ArrayList<Processo> listaProcessos = ${retornaProcessos};%> — A expressão ${retornaProcessos} é da Expression Language (EL) e não pode ser usada dentro de scriptlets (<% %>). Em scriptlets, usamos código Java puro.

Alternativa D — ✅ Correta ⟵ GABARITO

<%ArrayList<Processo> listaProcessos = (ArrayList<Processo>) request.getAttribute ("retornaProcessos");%> — Faz o cast para ArrayList<Processo>, que é o tipo correto do objeto armazenado.

Alternativa E — ❌ Incorreta

<%ArrayList listaProcessos = (ArrayList<Processo>) $_REQUEST.getParameter("retornaProcessos");%> — Erros múltiplos: $_REQUEST não é um objeto Java (é variável global do PHP); getParameter retorna parâmetros de requisição (enviados via formulário/URL), não atributos; além disso, a declaração usa ArrayList sem tipo genérico.

PEGA ESSA DICA!

Sempre que um atributo for colocado no request com setAttribute, recupere-o com getAttribute e faça o cast para o tipo original. Lembre-se: o método retorna Object.

Gabarito: letra D

Link permanente: /questoes/fc060811