4

有谁知道从 servlet 获取 JspContext 引用的方法?

我有一个转发到 Jsp 的 servlet,我想从 servlet 中设置一些 PageContext 变量,以便它们可以在 Jsp 中使用。

4

2 回答 2

6

让我看看我是否理解:您想从 servlet 调用 JSP 并使一些变量(在 servlet 的控制下)对 JSP 可用。对?

然后忘记PageContext,它只是特定于 JSP 页面并且不能从 servlet 访问。您在请求、会话或 servlet 上下文中设置的任何属性都将在 JSP 中可用。这PageContext是一个比以前更宽的范围,它带有一个findAttribute方法,当被调用时,它将在页面的上下文、请求、会话或 servlet 上下文中查找具有给定名称的属性(按此顺序)。

因此,您唯一需要做的就是将这些变量设置为这些范围之一中的属性,我建议使用request一个 ( HttpServletRequest.setAttribute("foo", "fooValue")),然后使用值表达式 ( ${foo}) 在您的 JSP 中使用它。

于 2012-08-21T14:46:36.360 回答
1

您应该使用请求范围。pageContext由JSP的service方法中的JspFactory的实现依赖子类获得。以 Tomcat 为例

public void _jspService(
 ...
pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true); 

所以在请求被发送到 JSP 之前 pageContext 是不存在的。

于 2012-08-21T14:47:21.787 回答