当我们可以访问 JSP 中的所有隐式变量时,为什么我们有 pageContext ?
我的假设如下:如果我们使用 EL 表达式或 JSTL,来访问或设置我们需要的属性 pageContext。让我知道我是否正确。
最佳答案
您需要它来访问非-隐式变量。现在有意义吗?
更新:有时只想访问 HttpServletRequest
的 getter 方法和 HttpSession
直接地。在标准 JSP 中,两者都只能由 ${pageContext}
获得。 .以下是一些实际使用示例:
session 超时刷新页面:
<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval}">
将 session ID 传递给 Applet(以便它可以在同一 session 中与 servlet 通信):
<param name="jsessionid" value="${pageContext.session.id}">
仅在 session 的第一次请求时显示一些消息:
<c:if test="${pageContext.session['new']}">Welcome!</c:if>
请注意 new
有特殊处理,因为它是 EL 中的保留关键字,至少从 EL 2.2 开始
显示用户IP:
Your IP is: ${pageContext.request.remoteAddr}
Making links domain-relative without hardcoding current context path:
<a href="${pageContext.request.contextPath}/login">login</a>
动态定义 <base>
标签(在 JSTL functions 标签库的帮助下):
<base href="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, pageContext.request.contextPath)}/">
等等。在上述链接中查看 HttpServletRequest
和 HttpSession
javadoc 来了解所有这些 getter 方法。其中一些可能在 JSP/EL 中也很有用。
关于java - 为什么在 JSP 中需要 pageContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735405/