一尘不染

为什么在JSP中需要pageContext?

jsp

当我们可以访问JSP中的所有隐式变量时,为什么要使用 pageContext

我的假设如下:如果我们使用EL表达式或JSTL,要访问或设置属性,我们需要 pageContext 。让我知道我是否正确。


阅读 270

收藏
2020-06-08

共1个答案

一尘不染

您需要它来访问 隐式变量。现在有意义吗?


更新
:有时候只是想访问的getter方法HttpServletRequestHttpSession直接。在标准JSP中,两者都只能通过获得${pageContext}。以下是一些实际使用示例:


会话超时时刷新页面:

<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval}">

将会话ID传递到Applet(以便它可以在同一会话中与Servlet通信):

<param name="jsessionid" value="${pageContext.session.id}">

仅在会话的第一次请求时显示一些消息:

<c:if test="${pageContext.session['new']}">Welcome!</c:if>

请注意,它new具有特殊待遇,因为至少从EL 2.2开始,它是EL中的保留关键字。


显示用户IP:

您的IP是:$ {pageContext.request.remoteAddr}

使链接相对于域,而无需对当前上下文路径进行硬编码:

<a href="${pageContext.request.contextPath}/login">login</a>

动态定义<base>标签(在JSTL函数 taglib的帮助下):

<base href="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, pageContext.request.contextPath)}/">

Etcetera。窥视上述链接HttpServletRequestHttpSessionjavadoc,以了解所有这些getter方法。其中一些在JSP
/ EL中也可能有用。

2020-06-08