Olá pessoal,
Estava estudando EL quando um amigo me passou a seguinte questão (segundo ele foi uma questão de um concurso):
[code]/**
- arquivo ServletEscopo.java
*/
public class ServletEscopo
extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
public void init() throws ServletException {
ServletContext context = this.getServletContext();
context.setAttribute(“chave”, “contexto”);
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
String atributoSession =
(String) session.getAttribute(“chave”);
if (atributoSession == null) {
atributoSession = “sessão”;
session.setAttribute(“chave”, atributoSession );
}
String atributoRequest =
(String) request.getAttribute(“chave”);
if (atributoRequest == null) {
atributoRequest = “requisição”;
request.setAttribute(“chave”, atributoRequest );
}
response.sendRedirect(“resposta.jsp”);
}
}[/code]
[code]<%-- arquivo resposta.jsp --%>
resposta chave = ${chave} [/code]Analisando os trechos de código apresentados, após a execução da classe
ServletEscopo, o valor exibido pela página resposta.jsp será
A) chave = contexto.
B) chave = sessão.
C) chave = requisição.
D) chave = página.
A resposta correta é letra B.
A explicação para isso é pelo fato de ServletContext não fazer parte dos objetos implícitos da EL? E logo após isso ele seta na session. O sessionScope é um obj. implícito, logo a EL pega o valor do primeiro valor setado para o atributo “chave”?
Quem puder ajudar… :idea:
