java - 为什么在 JSP 中需要 pageContext?

标签 java jsp el

当我们可以访问 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)}/">

等等。在上述链接中查看 HttpServletRequestHttpSession javadoc 来了解所有这些 getter 方法。其中一些可能在 JSP/EL 中也很有用。

关于java - 为什么在 JSP 中需要 pageContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735405/

相关文章:

java - 如何检查用户输入的字符串是否与特定格式匹配?

java - PlayFramework 内存设置选项不受尊重

java - 在 servlet 中访问 jSTL 变量

java - 使用 Tomcat/Websphere 将 JSP 编译为字符串或内存字节数组

java - 在 JSP 页面中获取 maxInactiveInterval 值

jquery - 如何使用 EL 将 AJAX 返回的列表设置为页面上的列表引用

java - 如何在 SPRING REST API 中使用 SQL 查询处理 "ALL"?

java - 如何在 Hortonworks 沙盒 Hadoop 平台中运行 mapreduce 作业

ajax - Ajax请求问题:错误80020101

java - 我如何在 JSF 中使用带有 UIData 的 java.util.Set。特别是 h :datatable?