有没有人知道从servlet获取JspContext引用的方法?
我有一个转发到Jsp的servlet,我想在servlet中设置一些PageContext变量,这样它们就可以在Jsp中使用了。
答案 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不存在。