有谁知道从 servlet 获取 JspContext 引用的方法?
我有一个转发到 Jsp 的 servlet,我想从 servlet 中设置一些 PageContext 变量,以便它们可以在 Jsp 中使用。
有谁知道从 servlet 获取 JspContext 引用的方法?
我有一个转发到 Jsp 的 servlet,我想从 servlet 中设置一些 PageContext 变量,以便它们可以在 Jsp 中使用。
让我看看我是否理解:您想从 servlet 调用 JSP 并使一些变量(在 servlet 的控制下)对 JSP 可用。对?
然后忘记PageContext
,它只是特定于 JSP 页面并且不能从 servlet 访问。您在请求、会话或 servlet 上下文中设置的任何属性都将在 JSP 中可用。这PageContext
是一个比以前更宽的范围,它带有一个findAttribute
方法,当被调用时,它将在页面的上下文、请求、会话或 servlet 上下文中查找具有给定名称的属性(按此顺序)。
因此,您唯一需要做的就是将这些变量设置为这些范围之一中的属性,我建议使用request
一个 ( HttpServletRequest.setAttribute("foo", "fooValue")
),然后使用值表达式 ( ${foo}
) 在您的 JSP 中使用它。
您应该使用请求范围。pageContext由JSP的service方法中的JspFactory的实现依赖子类获得。以 Tomcat 为例
public void _jspService(
...
pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);
所以在请求被发送到 JSP 之前 pageContext 是不存在的。