当我们可以访问JSP中的所有隐式变量时,为什么我们有pageContext?
我的假设如下:如果我们使用EL表达式或JSTL,要访问或设置属性,我们需要pageContext.让我知道我是否正确.
Bal*_*usC 32
您需要它来访问非隐式变量.它现在有意义吗?
更新:有时只想访问HttpServletRequest和HttpSession直接访问getter方法.在标准JSP中,两者都只能通过${pageContext}.以下是一些实际使用示例:
会话超时时刷新页面:
<meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval}">
Run Code Online (Sandbox Code Playgroud)
将会话ID传递给Applet(以便它可以在同一会话中与servlet通信):
<param name="jsessionid" value="${pageContext.session.id}">
Run Code Online (Sandbox Code Playgroud)
仅在会话的第一次请求时显示某些消息:
<c:if test="${pageContext.session['new']}">Welcome!</c:if>
Run Code Online (Sandbox Code Playgroud)
请注意,new因为它是EL中的保留关键字,所以有特殊处理,至少从EL 2.2开始
显示用户IP:
Your IP is: ${pageContext.request.remoteAddr}
在没有硬编码当前上下文路径的情况下建立链接域相关:
<a href="${pageContext.request.contextPath}/login">login</a>
Run Code Online (Sandbox Code Playgroud)
动态定义<base>标记(有一些JSTL函数 taglib的帮助):
<base href="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, pageContext.request.contextPath)}/">
Run Code Online (Sandbox Code Playgroud)
等等.在上面的链接HttpServletRequest和HttpSessionjavadoc中查看所有那些getter方法.其中一些也可能在JSP/EL中很有用.