Questão nº 24
Questão de Tecnologia da Informação · FCC TRT5 2022 (nº 24)
Em uma classe servlet Java uma mensagem foi incluída em um atributo e enviada para a página mensagens.jsp, por meio do código abaixo.
mensagem = "Usuário e/ou senha inválidos";
request.setAttribute("mensagem", mensagem);
RequestDispatcher disp = request.getRequestDispatcher("mensagens.jsp");
disp.forward(request, response);
Na página mensagens.jsp, para receber essa mensagem deve-se utilizar a instrução
- A<% String m = (String) request.getParameter("mensagem"); %>
- B<%= String m = (String) request.getAttribute("mensagem"); %>
- C<% String m = (String) request.getAttribute("mensagem"); %> (alternativa correta)
- D<%= String m = request.getAttribute("mensagem"); %>
- E<% String m = request.getParameter("mensagem"); %>
Resposta comentada
Gabarito Alternativa C
Em Java, `request.setAttribute()` é usado para passar objetos entre componentes do servidor (como de um Servlet para um JSP) dentro da mesma requisição, enquanto `request.getParameter()` é para obter dados enviados pelo cliente (como formulários ou URL).
(A) Incorreta: Usa `getParameter`, que é para dados vindos do cliente (parâmetros de URL ou formulário), não para atributos definidos no servidor.
(B) Incorreta: O tag `<%= ... %>` é para exibir o valor de uma expressão diretamente na página. Ele não permite a declaração de variáveis como `String m = ...`. Isso resultaria em um erro de compilação na JSP.
(C) Correta: O tag `<% ... %>` (scriptlet) permite a execução de código Java. `request.getAttribute("mensagem")` é o método correto para recuperar um atributo que foi definido com `request.setAttribute()`. O `(String)` é um cast (conversão de tipo) necessário porque `getAttribute` retorna um `Object`.
(D) Incorreta: O tag `<%= ... %>` é para exibir valores, não para declarar variáveis. Além disso, falta o cast `(String)`, que é uma boa prática e muitas vezes necessário.
(E) Incorreta: Usa `getParameter`, que é para dados vindos do cliente (parâmetros de URL ou formulário), não para atributos definidos no servidor. Essa é a armadilha mais comum, pois `getParameter` é frequentemente usado para receber dados.
Fonte: FCC TRT5 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.