从servlet获取对JspContext / PageContext的引用

时间:2012-08-21 13:54:42

标签: java jsp java-ee servlets

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

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

2 个答案:

答案 0 :(得分:6)

让我看看我是否理解:您希望从servlet调用JSP并使JSP可用的一些变量(由servlet控制)。正确?

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

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

答案 1 :(得分:1)

您应该使用请求范围。 pageContext是由JSP的服务方法中的JspFactory的实现依赖子类获得的。例如,在Tomcat中

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

因此,在将请求发送到JSP之前,pageContext不存在。