2012-05-30 123 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被用作視圖,並且不應該直接請求視圖。每個請求都應該通過一個控制器。