【发布时间】:2014-09-28 23:12:04
【问题描述】:
我的 jsp 页面可以通过以下方式访问 bean:
<jsp:useBean id="myBean"
type="myPackage.beans.MyBean"
scope="session" />
如果我将范围更改为“请求”,tomcat 会抛出异常:javax.servlet.ServletException: java.lang.InstantiationException: bean myBean not found within scope
但我通过从 servlet 转发访问我的 jsp 页面,如下所示:
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/MyJsp.jsp"); dispatcher.forward(request, response);
我认为上面的转发会导致 MyJsp.jsp 继承原始 servlet 的请求对象,所以 myBean 应该是可用的(它在原始 servlet 中使用 session.setAttribute("myBean", myBean) 创建并存储)。这不正确 - 为什么请求范围失败而会话范围请求成功?
【问题讨论】: