2012-05-30 92 views
0

我使用一个会话范围存储豆,和我想要表现的豆值到JSP页面需要像这样变化从会话范围要求

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

     response.sendRedirect("test.jsp"); 

而且在JSP我当现在用下面的代码来获得在JSP中的值

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

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

而不是使用我想使用的请求范围会话范围的,所以我可以用这种方式

request.setAttribute("bean", bean); 
设置我的属性在我的servlet

所以,我怎么能叫它在我的jsp 我可以说

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

却是露出的而不是使用scriplet error.Or我如何使用JSTL显示我的输出。

回答

3

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

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

我唯一可以说的是,在一个设计正确的MVC应用程序中,JSP被用作视图,并且不应该直接请求视图。每个请求都应该通过一个控制器。