【问题标题】:MVC - request-based data sharing fails, session based data sharing succeedsMVC - 基于请求的数据共享失败,基于会话的数据共享成功
【发布时间】: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) 创建并存储)。这不正确 - 为什么请求范围失败而会话范围请求成功?

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    这是不正确的 - 为什么请求范围失败,而 会话范围请求成功?

    不,你不正确。

    请求对象将仅适用于当前请求,requestsession 对象之间没有通信

    要使您的对象在请求中可用,您应该使用

    request.setAttribute("OBJname" , Object) 在发送到您的视图之前

    【讨论】:

    • 感谢 San Krish - 现在你指出了这一点很明显,但不知何故我忽略了这一点。
    猜你喜欢
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2011-04-02
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多