Olá pessoal,
Estava estudando EL quando um amigo me passou a seguinte questão (segundo ele foi uma questão de um concurso):
/**
* 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");
}
}
<%-- arquivo resposta.jsp --%>
<html>
<head>
<title>resposta</title>
</head>
<body>
chave = ${chave}
</body>
</html>
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:
