【问题标题】:Change of scope from session to request将范围从会话更改为请求
【发布时间】:2012-06-04 09:31:12
【问题描述】:

我正在使用会话范围来存储 bean,并且我想像这样在需要时将 bean 值投影到 jsp 页面

request.getSession().setAttribute("bean", bean);

        response.sendRedirect("test.jsp");

在 jsp 中,我使用下面的代码来获取 jsp 上的值

<%  bean1 bean = (bean1) session.getAttribute("bean");

  %>
<%= bean.getValue() %> 

我想使用请求范围而不是使用会话范围,所以我可以用这种方式在我的 servlet 中设置我的属性

request.setAttribute("bean", bean);

那么我如何在我的 jsp 上调用它 我能说吗

<%  bean1 bean = (bean1) request.getAttribute("bean");

但它显示错误。或者我如何使用 JSTL 显示我的输出而不是使用 scriplet。

【问题讨论】:

    标签: java jsp jakarta-ee servlets jstl


    【解决方案1】:

    您不了解什么是重定向。重定向是您发送给浏览器的响应,以便浏览器向您重定向到的位置发送另一个新请求。因此,当您调用sendRedirect("test.jsp") 时,浏览器将向test.jsp 发送一个新请求。显然,您在当前请求中存储的所有属性都将不再可用。

    在没有上下文的情况下,不可能说在这种情况下是否应该执行重定向,或者是否应该转发到 JSP。转发与重定向非常不同,因为它只将当前请求和响应的责任转移到另一个组件。在这种情况下,会有一个唯一的请求,JSP 可以在请求中找到 servlet 设置的属性。

    我唯一能说的是,在一个设计合理的 MVC 应用程序中,JSP 被用作视图,永远不应该直接请求视图。每个请求都应该通过一个控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2012-01-07
      • 2015-08-02
      • 2012-01-20
      • 1970-01-01
      • 2011-01-11
      相关资源
      最近更新 更多