Java 将范围从会话更改为请求

Java 将范围从会话更改为请求,java,jsp,jakarta-ee,servlets,jstl,Java,Jsp,Jakarta Ee,Servlets,Jstl,我使用一个会话作用域来存储bean,并希望在需要时以这种方式将bean值投影到jsp页面 request.getSession().setAttribute("bean", bean); response.sendRedirect("test.jsp"); 在jsp中,我使用下面的代码获取jsp上的值 <% bean1 bean = (bean1) session.getAttribute("bean"); %> <%= bean.getValue(

我使用一个会话作用域来存储bean,并希望在需要时以这种方式将bean值投影到jsp页面

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

        response.sendRedirect("test.jsp");
在jsp中,我使用下面的代码获取jsp上的值

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

  %>
<%= bean.getValue() %> 
那么我如何在jsp上调用它呢 我能说吗

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

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

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


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

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

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

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

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