Questão de Programação — Linguagens de programação — FCC 2021
Programação›Linguagens 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
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.